一种用于确定像素的颜色的方法及系统与流程

文档序号:19611711发布日期:2020-01-03 14:17阅读:349来源:国知局
一种用于确定像素的颜色的方法及系统与流程

本发明涉及计算机图形技术,特别地涉及一种结合光源特性和颜色映射的特性的方法及系统。



背景技术:

在例如游戏或动画的场景中通常会设置一些点光源。点光源是指处于场景中的某一个位置处的光源,其会朝所有方向发光,并且光强会随距离逐渐衰减。在计算机对场景进行渲染时,点光源的光照计算是比较耗时的计算。

通常,在制作场景时添加雾效等后期效果后,将会导致渲染后的点光源的光照效果被改变了或者不是制作者所预期的,从而使得场景制作者不得不重新调整场景中已经设置好的点光源的参数,而这些参数的改变进而又会影响场景中被这些点光源照亮的物体的表现效果。这使得场景制作者需要不断调整光源的参数以及雾效等后期效果的参数,才能使得最终渲染出的画面达到场景制作者预期的表现效果。

现有技术中已存在能比较快速地修改或调整画面的整体颜色效果以表现出某种特定效果的技术,例如颜色映射(colormapping)。颜色映射通常用作为后期处理技术,其可以根据某一张参考图像而将屏幕上的原始画面进行颜色变换,从而改变原始画面的颜色。颜色映射的基本原理可以参见https://en.wikipedia.org/wiki/color_mapping。采用颜色映射技术的场景的渲染速度通常比仅设置点光源的场景的渲染速度快。

然而,常规的颜色映射技术只能通过一张参考图像的颜色来对原始画面的整体颜色进行调整,即,只能在屏幕所处的二维空间中修改画面的颜色,无法在虚拟场景所在的空间中的一定三维区域内修改颜色或进行颜色映射。例如,在需要在树林的远景中体现出神秘氛围,而这种氛围需要通过调整画面中某块区域的色调而表现出来的情况下,仅依靠传统的颜色映射技术将无法实现这种三维区域内的氛围调整。



技术实现要素:

本发明的实施例结合了具有衰减特性的光源(例如点光源)与颜色映射的特性。本发明的实施例实现了一种光照效果近似于点光源的球形颜色映射技术,使得场景制作者能够在添加后期效果时对虚拟空间中的某些球形区域进行颜色调整,产生点光源的光线衰减效果。本发明的实施例也适用于将其他任何具有衰减特性的类型的光源的特性与颜色映射的特性结合起来。

在本申请中,将虚拟场景所在的空间称之为“虚拟空间”,虚拟场景中的所有物体(例如,光源、模型、颜色映射对象等)均位于虚拟空间中。

本发明的一个方面是一种用于确定屏幕上的像素相对于一用于模拟具有衰减特性的光源的对象的衰减系数的方法,包括:设置所述对象的中心在场景中的位置;以及根据所述像素相对于所述中心的坐标,确定所述衰减系数。

本发明的实施例可以使用如下的公式来确定所述衰减系数:atten=radialatten(lightspacepos,falloutexp)*radialatten((lightpos-camerapos)/globalattendistance,globalatten),其中,atten表示所述衰减系数,lightspacepos表示该像素在所述对象的局部空间中的坐标,lightpos表示所述中心在所述场景的虚拟空间中的坐标,camerapos表示相机在所述虚拟空间中的坐标,globalattendistance表示从所述相机的坐标到所述中心的坐标的方向上延伸并衰减的距离,globalatten表示从所述相机的坐标到所述中心的坐标的方向上的衰减强度,falloutexp表示从所述中心沿所有方向的衰减强度,其中,radialatten是在[0,1]区间上单调递减的函数。

本发明的实施例中可以使用如下定义的radialatten函数:radialatten(x,y)=pow(1-saturate(dot(x,x)),y),其中,pow为幂函数,其表示(1-saturate(dot(x,x)))y,其中,saturate为用于给dot(x,x)做饱和处理的函数,定义如下:当dot(x,x)大于或等于1时,saturate(dot(x,x))返回结果为1,当dot(x,x)小于或等于0时,saturate(dot(x,x))返回结果为0,当dot(x,x)大于0且小于1时,saturate(dot(x,x))返回结果为dot(x,x),其中,dot(x,x)为用于求向量x与所述向量x的点积的函数。

本发明的另一个方面是一种计算像素的最终颜色的方法,包括:确定适用于该像素的衰减系数;对该像素的源颜色进行颜色映射,以获得目标颜色;以及利用所述衰减系数对所述源颜色和目标颜色进行加权,确定所述最终颜色。

本发明的又一个方面是一种用于确定屏幕上的像素相对于一用于模拟具有衰减特性的光源的对象的衰减系数的系统,包括:用于设置所述对象的中心在场景中的位置的装置;以及用于根据所述像素相对于所述中心的坐标,确定所述衰减系数的装置。

本发明的又一个方面是一种计算像素的最终颜色的系统,包括:用于确定适用于该像素的衰减系数的装置;用于对该像素的源颜色进行颜色映射,以获得目标颜色的装置;以及用于利用所述衰减系数对所述源颜色和目标颜色进行加权,确定所述最终颜色的装置。

本发明的又一个方面公开了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令被计算机执行时能够执行根据本发明实施例的方法。

附图说明

图1示出了根据本发明的实施例的制作场景的流程图。

图2示出了根据本发明的实施例的计算球形对象中的像素颜色的流程图。

具体实施方式

现在将参照若干示例性实施例来论述本发明的内容。应当理解,论述了这些实施例仅是为了使得本领域普通技术人员能够更好地理解且因此实现本发明的内容,而不是暗示对本发明的范围的任何限制。

如本文中所使用的,术语“包括”及其变体要被解读为意味着“包括但不限于”的开放式术语。术语“基于”要被解读为“至少部分地基于”。术语“一个实施例”和“一种实施例”要被解读为“至少一个实施例”。术语“另一个实施例”要被解读为“至少一个其他实施例”。术语“坐标”要被解读为对应于某个物体在空间(例如,二维空间或三维空间)中的位置,因此术语“坐标”与术语“位置”的含义等同。

本发明的实施例可以将具有衰减特性的光源(例如点光源)的特性与颜色映射的特性结合起来。例如,本发明的实施例提出了一种球形颜色映射模型,以模拟球形点光源的衰减特性,并结合颜色映射的特性。本发明的实施例还可以模拟其他类型的具有衰减特性的光源(例如面光源)的衰减特性,并与颜色映射的特性相结合。

例如对于模拟球形点光源的实施例中,对于屏幕上需要渲染的一个像素,首先根据场景中需要调整的区域设置模拟该球形点光源的对象(以下简称“球形对象”)的中心(对于球形对象而言即为球心),然后根据该像素相对于球心的距离和方向,计算出适用于该像素的衰减系数。计算出的衰减系数将与颜色映射结合起来确定该像素的最终颜色。

图1示出了根据本发明的实施例的一般性的制作场景的流程图,其包括如下步骤:

(1)在人工编辑场景时添加根据本发明实施例的球形对象,并设置该对象的各个参数。

可设置的参数包括:球形对象在场景中显示的名称name、显示该对象的层layer、对象是否可见visable、对象的球心在虚拟空间中的位置lightpos、对象的半径radius、对象在虚拟空间的笛卡尔坐标系的x/y/z三个轴的方向上的缩放程度x/y/zaxisscale、从相机坐标到球心坐标的方向上延伸并衰减的距离globalattendistance、从相机坐标到球心坐标的方向上的衰减强度globalatten、从球形对象的球心沿所有方向的衰减强度falloutexp等。根据本发明的实施例,上述参数的类型可以定义如下:lightpos的数学含义为空间中的一个点,其在计算机中可以使用向量(vector)表示。向量可以是一种自定义的数据结构,通常包含三个浮点值(三维向量包含三个浮点值,n维向量包含n个浮点值)以及一些专门用于数学中的向量运算而定义的操作函数。上述参数中的其它参数可以是浮点数(实数)。

相机为在虚拟空间中观察虚拟空间的一个虚拟对象,相机负责将观察到的场景投影到屏幕或其他可视设备上。相机坐标和球心坐标都是虚拟空间中的坐标。参数globalattendistance影响对象朝向相机方向的衰减效果;例如,如果球形对象所覆盖的局部空间与相机之间的距离小于或等于设定的globalattendistance的值,则通过相机能够观察到对象所覆盖的局部空间,否则通过相机不能够观察到对象。局部空间通常指一个物体或模型在虚拟空间中被建模时所在的空间;对于球形对象来说,它的局部空间是指以对象的球心为坐标原点,并由与虚拟空间的坐标系相同的一个笛卡尔坐标系所表示的空间。参数globalatten和falloutexp用于描述颜色的衰减速度。

根据本发明的实施例,还可以设置或调整球形对象的颜色参数,所述参数通常与本发明实施例所采用的颜色映射图的颜色相关。例如,场景制作者可以根据不同的颜色通道(例如亮度通道rgb、红青通道r、绿品红通道g以及蓝黄通道b)来调整球形对象的颜色参数。

根据本发明的实施例,可以通过软件界面设置对象的各项参数和颜色。例如,通过软件界面可以实现的操作包括但不限于:勾选想要设置的参数,填写参数的具体数值,以及调整或设置对象的颜色。

(2)设置场景中的雾效参数以及其他各种后期处理效果(例如色调映射)的参数。

如何设置雾效等各种后期处理效果属于本领域常规的操作,在此不做赘述。

根据本发明的实施例,图1所示步骤的顺序可以交换。本发明的实施例还包括其不同构成模块能完成图1所包含和/或暗含的各步骤的装置。

在场景制作完成后,需要计算机对场景进行渲染。图2示出了利用根据本发明的实施例的球形对象来计算像素的颜色的流程图,其包括以下步骤:

(1)根据像素的屏幕坐标和屏幕空间深度计算像素在虚拟空间中的坐标。

在现有技术的渲染流程中,会将虚拟空间中的物体的坐标经过相机的视矩阵(viewmatrix)变换到相机空间中的坐标,再经过透视投影矩阵(projectmatrix)以及透视除法变换到归一化设备空间(normalizeddevicespace)内的坐标,最后通过视口变换(viewporttransform)得到对应的像素的屏幕坐标以及屏幕空间深度(通常,虚拟空间中的一个物体会对应于屏幕上的多个像素)。其中,屏幕坐标指像素在屏幕空间中的坐标(该坐标对应于像素在屏幕中的位置),而屏幕空间深度可以保存到在深度缓存中。

根据本发明的实施例,图2中的第一步就是逆向进行上述流程。首先利用视口变换的逆变换,根据像素的屏幕坐标以及屏幕空间深度得到像素在归一化设备空间中的坐标,然后根据透视除法的逆运算以及透视投影矩阵的逆矩阵计算得到该像素在相机空间中的坐标,最后根据相机视矩阵的逆矩阵计算得到该像素在虚拟空间中的坐标。

(2)根据该像素在虚拟空间中的坐标以及场景中添加的球形对象在虚拟空间中的位置信息计算该像素在该球形对象的局部空间内的坐标。

球形对象在虚拟空间中的位置信息可以包括:球心在虚拟空间中的坐标、对象在虚拟空间中的旋转角度以及对象在x/y/z三个轴的方向上的缩放程度。根据本发明的优选实施例,通过调整x/y/z三个轴上各自的缩放程度,球形对象还可以具有椭球形等其它形状。而根据对象在虚拟空间中的位置信息可以计算出从虚拟空间变换到球形对象的局部空间的变换矩阵,通过该变换矩阵即可计算出该像素在球形对象的局部空间中的坐标。

(3)计算适用于该像素的衰减系数。

衰减系数将被用来与颜色映射一起决定像素的最终颜色。在使用模拟球形点光源的球形对象的实施例中,此衰减系数能够实现与点光源光强衰减类似的效果。根据本发明的实施例中,前面计算出的所述像素在球形对象的局部空间内的坐标反映了该像素相对于球形对象的球心的距离和方向,这两个因素基本决定了适用于该像素的衰减系数。

可以使用多种模型来具体计算衰减系数。本发明的一个实施例采用如下公式来计算衰减系数:

atten=radialatten(lightspacepos,falloutexp)*radialatten((lightpos-camerapos)/globalattendistance,globalatten)

其中,atten表示计算出的衰减系数,lightspacepos表示该像素在球形对象的局部空间中的坐标,lightpos表示球形对象的球心在虚拟空间中的坐标,camerapos表示相机在虚拟空间中的坐标。lightspacepos和camerapos的类型与lightpos的类型相同。

其中,radialatten函数的实际计算公式可以根据所需要的效果来确定,但通常应该确保其在[0,1]区间上是单调递减的。radialatten函数的一个例子可以是:

radialatten(x,y)=pow(1-saturate(dot(x,x)),y)

其中,pow为幂函数,pow(a,b)表示ab。saturate是用于给输入参数做饱和处理的函数,定义为:当输入参数a大于或等于1时,saturate(a)的计算结果为1;当a小于或等于0时,saturate(a)的计算结果为0;当a大于0且小于1时,saturate(a)的计算结果为输入参数a。dot是用于求向量点积的函数。

(4)利用颜色映射图,对像素的源颜色进行颜色映射以得到像素的目标颜色。

利用颜色映射图对像素的颜色进行映射或者变换,是本领域已知的技术,在此不再赘述。在本发明中,场景制作者可以根据需要选择或设置所需要的颜色映射图的参数。

(5)基于源颜色和目标颜色,使用衰减系数作为加权因子,计算像素的最终颜色。

例如,可以使用如下公式来计算像素的最终颜色:

color=srccolor*(1-atten)+destcolor*atten

其中,color表示该像素最终颜色,srccolor表示源颜色,destcolor为第四步中对颜色映射图采样得到的目标颜色,atten为第三步中计算得到的衰减系数。也可以采用其他加权方式。

下面将描述某些参数发生变化时对像素的最终颜色产生的影响。例如,当globalattendistance远大于相机与球形对象之间的距离时,atten将趋近于1,此时颜色映射最终计算得到的颜色趋近于destcolor,反之当globalattendistance远小于相机与球形对象之间的距离时,最终颜色趋近于srccolor。

本发明各实施例的方法和装置可以实现为纯粹的软件模块(例如用c++语言和hlsl语言来编写的软件程序),也可以根据需要实现为纯粹的硬件模块(例如专用asic芯片或fpga芯片),还可以实现为结合了软件和硬件的模块(例如存储有固定代码的固件系统)。

本发明的另一个方面是一种计算机可读介质,其上存储有计算机可读指令,所述指令被执行时可实施本发明各实施例的方法。

本发明的实施例结合了光源的衰减特性和颜色映射的特性。对于点光源而言,本发明的实施例结合了点光源的衰减特性和颜色映射的特性,从而能够灵活地选择场景中需要调整氛围的局部三维空间,并利用颜色映射来快速地计算像素的最终颜色。

本领域普通技术人员可以意识到,以上所述仅为本发明的示例性实施例,并不用于限制本发明。本发明还可以包含各种修改和变化。任何在本发明的精神和范围内作的修改和变化均应包含在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1