用于实时渲染带有全局光照的可变形几何形状的系统和方法

文档序号:6455968阅读:249来源:国知局
专利名称:用于实时渲染带有全局光照的可变形几何形状的系统和方法
技术领域

本申请要求2006年7月24日提交的美国临时申请第60833180号的权益,并通过引用将其结合到本文中。

背景技术

一般来说,本发明涉及经受全局光照的动态场景的计算机图形渲染,更具体来说,涉及带有全局光照计算的屏蔽的复杂(complex)可变形几何形状的实时渲染,以便获得逼真的场景光照。

逼真地渲染计算机生成的图形图像的一个关键要求是精确计算在图像场景内的各个元素表面当中的相互依赖的光分布。为了解决场景光照的精确合成,已经开发了多种基于物理学的全局光照技术。这些技术包括光能传递(radiosity)、光线跟踪以及光子映射,它们通过直接仿真一组三维环境内的光分布的物理现象来趋近逼真的图像渲染。基于物理学的全局光照技术的许多理论和实践实施问题在Philip Dutre、Philippe Bekaert和Kavita Bala、AK Peters公司的Advanced Global Illumination(高级全局光照)(2003年7月)中进行了探讨。

已知的基于物理学的全局光照技术的原则上的限制在于基于物理学仿真在计算上的密集度。即便对复杂度适中的场景实施仿真的算法的计算要求远远超出可用的显示帧速率。诸如减少仿真精确度的折衷直接影响到所渲染场景的逼真度。诸如预先计算静态元素的光分布的其它折衷已经进行了探讨。不幸的是,除了小部分典型场景之外的所有场景都要静态地预先计算,以便实现可用的帧速率。每当在整个场景内重新定位任何动态元素时,这都导致相当明显的照明不精确性。即使在通用中央处理单元(CPU)和外设图形处理单元(GPU)的处理性能上有实质性的改进的情况下,已知的基于物理学的全局光照技术通常被认为在计算上昂贵地实现完全动态的场景的实时渲染。

因此,需要完全能够实时渲染完全动态的场景的基于物理学的全局照明技术。


发明内容

因此,本发明的总的目的是提供能够支持实时地全场景逼真渲染复杂可变形几何形状的有效的基于物理学的全局光照技术。这在本发明中通过提供表示包含可变形几何形状的场景、用于实时地在显示设备上显示的图像数据帧的顺序产生来实现。对以动画顺序表示包含可变形几何形状的场景的一系列帧计算帧动画数据。帧动画数据包括描述在场景内出现的图形元素的三维表面的控制网格的顶点属性。基于帧动画数据,为控制网格的各个多边形计算相应的光照值,以便确定场景的全局光照。对于帧动画数据的每个帧集合,迭代地执行该计算,直到实现全局光照的符合要求的收敛为止。在每次迭代中,基于在前一次迭代中确定的帧-帧相干多边形光照值来确定相应的光照值。在由实时帧速率定义的帧-帧间隔内实现符合要求的收敛。

本发明的一个优点在于,公开的全局光照技术使得能够实时计算全局光照以便以高的帧速率逼真地渲染动画场景,这些动画场景基本上表示完全可变形的几何形状。

本发明的另一优点在于,全局光照基于物理学的仿真的计算有效地利用具有多遍的帧速率同步的收敛级数,其中每遍利用对反射和遮蔽两者的光贡献的单一计算。利用帧-帧相干性来实现更快收敛,以便改进全局光照的计算。全局光照技术还使得能够优化均衡地使用中央处理器和图形处理器资源来获得可变形几何形状的实时渲染。

本发明的另一优点在于,全局光照基于物理学的仿真利用依赖于表面特征的定向光照数据来增强表面光照逼真度。定向光照数据经实时计算,并将法线扰动表面数据有效地编码以便允许有效渲染凹凸贴图、法线贴图以及位移贴图的受全局光照的表面。

本发明的又一优点在于,全局光照技术保留对凹凸贴图、法线贴图以及位移贴图的完全支持。均匀光值和标准值的双二次内插的实施允许实时地有效渲染细分表面。使用Bezier面片(patch)有效地逼近Catmull-Clark细分表面,从而实现对可变形几何形状的实时逼真渲染。

本发明的另一个优点在于,定向表面光照数据可用在全局光照技术中以便实现受光照的表面材质的逼真渲染,具体来说包括逼真的镜面光照效果。




图1是适于实施本发明优选实施例的计算机图形显示系统体系结构的框图。

图2是适合用于实施本发明优选实施例的计算机图形渲染管线的高级框图。

图3A和图3B是本发明优选实施例中使用的纹理和象限(quadrant)可见度贴图数据存储结构的示意图。

图4示出根据本发明优选实施例的半球象限面心法线的单个四元组(quad)配置。

图5A和5B是根据本发明优选实施例定义的示例图形场景元素的正交标高截面图。

图6是根据本发明的优选实施例示出计算得出的比较临近表面几何形状的纹元(texel)的光照的半球象限的顶视图。

图7示出根据本发明优选实施例由中央处理单元执行的图形处理应用控制流程。

图8示出根据本发明优选实施例由图形处理单元执行的渲染控制流程。

图9是根据本发明优选实施例通过多边形表面光照值的单遍计算处理的多边形光照关系的图。

图10示出结合本发明优选实施例使用的控制网格的一部分。

图11示出结合本发明优选实施例使用的带有内插控制点的示例控制网格多边形。

图12示出结合本发明优选实施例使用的带有双三次Bezier控制点的示例控制网格多边形。

图13提供结合本发明优选实施例使用的Bezier面片坐标数据结构的表示。

图14A和14B示出结合本发明优选实施例使用的双三次和双二次内插光强度分布功能。

具体实施例方式
本发明提供一种尤其适于实时渲染经受全局光照的复杂可变形几何形状的计算机图形系统。出于以下论述的目的,可变形几何形状理解为包含具有多个图形元素的图像或场景,这些图形元素可进一步跨越可变形几何形状的实时前进的一个或多个帧独立地运动。实时的条件类似地理解为包含以每秒钟超过二十帧、更典型地是超过每秒钟二十五帧的帧速率渲染包含可显著变形的几何形状的场景。本发明的实施例能够以每秒钟六十帧渲染复杂的可完全变形的动画场景。虽然使用本发明包含的技术的完整补充可容易地产生高质量、逼真渲染的经受全局光照的场景,但相关领域技术人员将容易理解并意识到,可接受的实时和逼真渲染的场景可通过本文描述的技术的有限的多种组合或者不使用这些组合而在适当的操作域中实现。

图1示出适于实施本发明的优选计算机系统10实施例。通用中央处理单元(CPU)12通过高速总线控制器14互操作以便访问主存储器16并且管理多个输入/输出(I/O)设备18。总线控制器还使得能够通过CPU 12命令和控制专用图形处理单元(GPU)20、在CPU 12和GPU 20之间传送数据、并且进行至/自主存储器16的直接存储器存取传送。本地高速图形存储器22提供数据存储和对计算和数据密集的GPU 20的操作的支持。由GPU 20生成的渲染图像输出到常规的显示设备24。

如图2中所示,在GPU 20内,相关部分中的图形数据处理管线30包括顶点屏蔽器(shader)32、光栅化器(rasterizer)24和像素屏蔽器36。概括来讲,顶点屏蔽器32对表征表示当前场景内的元素的低分辨率网格的顶点的顶点属性38进行操作,以便生成高分辨率网格,然后将高分辨率网格光栅化以生成图像像素阵列。通常,像素屏蔽器对阵列中的每个像素进行操作,以便将渲染图像像素阵列中的纹理和屏蔽效果应用到输出帧缓冲器40。取决于GPU 20的特定实施以及图形存储器22的大小,可将各种纹理贴图(map)42从主存储器16上载到图形存储器22,并且全部或部分地在图形引擎20中进一步缓存,以便取决于表示可变形几何形状所需的当前计算操作而按需使用。

根据本发明,还使一个或多个象限可见度贴图44能够由像素屏蔽器36访问。就图形引擎20所进行的上载和数据管理而言,优选将象限可见度贴图44作为纹理贴图42来对待。象限可见度贴图44与纹理贴图42的实质区别在于这些贴图所保持的数据的性质。如图3A概括性地示出,纹理贴图42按照常规存储四个8位值的重复模式,其中每个四元组表示对应纹元的红(R)、绿(G)和蓝(B)色值以及α透明度值。图3B示出象限可见度贴图44的优选数据内容,其包含四个8位分量(V0-V3)的重复模式,其中每个分量表示在该点可从表面看到的对应象限的百分比。

图4中示出半球象限的优选的单个四元组配置50。出于本发明的目的,半球象限在四个矢量N0=(N+T1)、N1=(N+T2)、N2=(N-T1)以及N3=(N-T2)的方向上集中在一起,其中N是表面法线,而T1和T2是正交表面切矢量。四元组配置优选为使得能够相对于所引起的所需计算开销实现高得多的逼真度。另外,按照常规实施的图形引擎20对存储器转换和对四元组估值的纹理贴图42的操作提供直接硬件支持。可预期其它数量(n≥2)的可见度矢量。具体而言,三矢量集合允许为每个纹元对条件数据值或其它数据值进行编码。也可预期组织成用于表示八个半球部分或四个半球象限的两层细分的八矢量集合。优选地,可组合地解析矢量集合以便使用常规照明计算法来计算适于屏蔽操作(shading operation)的受扰表面法线,从而避免需要单独的法线、梯度或凹凸贴图。四元组矢量集合的受扰表面法线通过下式确定 Ns=normalize(N0·r+N1·g+N2·b+N3·α) 式1
其中r、g、b和α是象限可见度贴图44的四个分量,而N0、N1、N2和N3是四个象限矢量。

优选地,除了受扰法线方向之外,基于从元素的相邻表面几何形状确定的象限的相对吸收(occlusion)来预先计算该元素的象限可见度贴图44。如图5A所示,元素表面标高60的示例性第一截面图演示了与关于低分辨率元素表面64和对应的高分辨率元素表面66定义的纹元62相关的吸收确定。使元素64在全局图像空间内旋转,小吸收的表面特征与N0象限相关联,而对应的N2象限发生了可忽略不计的吸收。如图5B中所示,元素表面标高(elevation)60的正交截面演示了对应于N1象限的中等吸收以及N3象限的相当大的吸收。

特定象限的具体吸收程度可沿法线计算,或者优选地,可从关于象限的表面几何形状的三维分析来计算。优选地,只有在纹元62的表面法线上方定义的半球中的高分辨率表面几何形状被认为适合用于避免不必要的自遮蔽(self-shadowing)。如图6中所示,为每个象限72、74、76、78确定纹元62的表面几何形状吸收的效果,图中用百分比曝光值示例性地示出。然后,对于该纹元,将归一化的8位表示值编码为元素对应的象限可见度贴图44。

根据本发明,使用CPU 12和GPU 20的组合计算能力来对经受全局光照的复杂可变形几何形状执行实时渲染。通过在CPU 12上执行图形处理应用来执行高级动画处理,而在GPU 20上执行相对比较低级的全局光照和有关的像素屏蔽操作。如图7中由图形处理应用控制流程80概括性地示出,在逐个帧的基础上迭代地执行动画处理。在每次帧动画迭代中,以常规方式计算82场景内的可变形几何形状元素的动态动画,以定义场景内的元素的控制网格的顶点位置。接着,通常根据基于物理学的仿真的确定,例如源于元素交互,可进一步修改84控制网格顶点位置。然后,通常在主存储器16中生成或更新86表示控制网格顶点的顶点数据集合。将顶点数据集合保存在主存储器16中,直到GPU 20执行帧同步88,其中直接存储器存取传送将顶点数据集合复制90到图形存储器22中。

在本发明的优选实施例中,图形处理应用控制流程80按照并行管线先执行一个帧,然后通过GPU 20渲染该帧。如图8中概括性地示出,在GPU 20上执行的优选渲染控制流程100获取102表示初始场景图像的初始顶点数据集合90。为了根据本发明计算全局光照,将光照表106构建成包含控制网格内的每个多边形表面的光照值。在目前优选的实施例中,构造光照表106用于由GPU 20作为纹理贴图42实例来操控。初始化光照表106,将有源发光表面(active glowsurface)集合初始化为对应的动画确定的正的常量值,而将无源表面集合初始化为零光照值。

随后,基于所提供的全局图像空间中的控制网格顶点位置处理108顶点数据集合,以便产生包含每个多边形或者面的中心点以及对应的多边形区域的面数据(face data)集合以及每个多边形的法表面矢量和切表面矢量。随后执行110多边形表面光照值的单遍计算(single-pass computation),光照结果记录在光照值表106中。重复112单遍计算110,直到获得符合要求的收敛为止。在对统计地选择的多边形或基于定义的视点(viewpoint)选择的多边形子集全局考虑的情况下,当光照表值的变化小于定义的阈值时,可确定符合要求的收敛。优选地,达到收敛的迭代次数是有上限的或者简单地设为固定值。在目前优选的实施例中,初始场景的收敛迭代的上限为五次,而随后的收敛迭代固定为一次。在典型应用中,根据经验确定五个初始迭代的上限限制以便对单个初始帧实现充足的逼真度。根据本发明,通过在产生光照表值时利用帧-帧相干性,正在进行使用的每帧一次迭代的上限限制不是收敛的函数极限。更确切来讲,帧-帧相干性的优选使用导致有效的无限迭代收敛级数,其趋于随着帧速率增大而在精度方面有所改进。

一旦实现了符合要求的收敛112,便使用例如常规的Catmull-Clark细分算法来计算114控制网格的最终铺嵌(tessellation)。然后,使用116改进并优选的双二次而不是常规的双线性光照分布算法来确定入射光在各个细分表面上的函数反射比。随后,根据需要,还将细分表面按照常规进一步简化为三角形,然后光栅化118这些三角形以产生图像像素阵列。接着计算120各个像素的光照值,然后将渲染的图像帧122释放到显示器24的帧缓冲器中。最后,取决于帧速率计时,GPU 20将执行帧同步88以便检索表示将要迭代地渲染的下一个动画帧图像的下一个顶点数据集合90。

根据本发明,每次迭代执行多边形表面光照值的单遍计算110用于估计从所有其它多边形到达当前场景内的元素的控制网格中的每个多边形中心的光的总量。单遍计算技术是对在第14章中介绍的漫射光传输系统的改进Dynamic Ambient Occlusion and IndirectLighting(Michael Bunnel)of GPU Gems 2,Addison-Wesley,2005。虽然现有技术的光传输系统需要在一遍离散光分布之后进行多遍遮蔽以便计算间接光的每次反弹(bounce),但是本发明的单遍计算技术有利地包括光照和遮蔽值贡献(contribution),从而允许在控制网格所定义的多边形的集合上进行计算上有效的单遍求和操作。

在每次迭代中,给定多边形的入射光估计是由有源发光多边形表面所辐射的光的总和,即表示照在多边形上的区域光、从其它受照多边形反射到该多边形的光和来自遮蔽多边形的吸收光的总和。辐射光和反射光表示正的光照贡献,而吸收光作为负的贡献处理。根据本发明,多边形表面光照值的每个单遍计算110包含辐射和吸收照明效果。通过迭代地更新光照值表106,累积了多次光反弹的贡献。

为了计算来自发射器多边形的接收器多边形的入射光照,优选使用圆盘-圆盘辐射传送近似的形状因数的变量。假定V是从接收器多边形的中心到发射器多边形的中心的矢量,A是发射器多边形的面积,NE是发射器多边形的归一化法线,而NR是接收器多边形的归一化法线,则辐射形状因数F如下式给定 式2
可以使用如下叉积来计算带有顶点v0、v1、v2、v3的四边形多边形的法线 N=(v1-v0十v2-v3)×(v3-v0+v2-v1)式3
可通过使用v0替代v3来将同一等式用于三角形多边形。面积A是法线的长度 式4
到达接收器多边形的中心的光量LR按照下式计算 式5
其中所有的E(“all E”)是控制网格中除了正在计算其光值LR的接收器多边形以外的所有多边形的集合;假定发射器多边形是区域光的部分,则GE是发射器多边形的发光强度;CE是发射器多边形的色彩;假定发射器多边形是反射表面,则LE是从紧邻的前一次迭代确定的发射器多边形接收的估计光量,或者在不存在前一次迭代时为零;并且LE和LR均具有适于支持彩色光和表面的红、绿和蓝色分量。在发射器多边形背对接收器多边形时,认为接收器多边形将被发射器多边形遮蔽。该发射器多边形的光贡献作为负的光值被求和。LR的负的分量光照值强制为零。

图9提供通过多边形表面光照值的单遍计算110处理的多边形光照关系的示例性图示130。如图所示,由区域132表示的接收器多边形受到由区域134表示的发光强度固定的多边形发射器的有源照射,受到多边形发射器区域136的遮蔽,并受到多边形发射器区域138的无源照射。对于单遍计算多边形表面光照值110的给定迭代,将发射器区域134、136、138的光照值设定为在前一次迭代中确定的值。对于初始帧,先前值为零。对于随后帧的第一次迭代,先前值是为紧邻的前一个帧确定的最终光照值。当对单个帧执行多次迭代时,优选地,仅在当前迭代完成时才更新先前迭代光照值。

对于图9示出的示例性配置,为区域132计算的当前迭代光照值将是LR 140、LR 144和LR 148的总和。对于初始帧的初始迭代,区域132的光照值将等于LR 140。在该迭代中,LR 144和LR 148对区域132的贡献为零,原因在于对应的发射器区域136和138是无源的。然而,区域136的光照值将为LR 142,而区域138的光照值将保持为零,原因在于区域132也作为无源发射器。在下一次迭代中,区域136贡献出量值取决于LR 142的负的光照值LR 144。进一步优选地,负的光照值LR 144作为合适的阴影表示均等地散布在色彩分量上。因为非零LR 146具有取决于区域132的前一次迭代光照值的量值,所以区域138的光照值变为非零。在随后的迭代中,区域132和138的光照值将根据入射光LR 146和LR 148的相对交换而收敛到相应值。

场景内可变形几何形状的动画产生控制网格多边形的变换(translation)。根据本发明,在计算多边形表面光照值中利用多边形光照值的帧-帧相干性。先前帧的光照值是真正完全屏蔽的光照值的充分接近的近似,使用多边形表面光照值的单遍计算110的单次迭代实现了收敛。在单次迭代上未实现收敛时,通常在少量帧的过程中实现收敛,或者由于相关元素的变换速度,收敛实际上的重要性降低。

如以上所述,多边形表面光照值的单遍计算110确定了对于控制网格的多边形定义的半球的全局光照光强度值。根据本发明,光强度值的计算被扩展,但仍完全落在单遍计算的框架内,从而支持像素的定向屏蔽以增加逼真度。优选地,每个半球的均匀分布的定向光强度值集合(n≥2)的计算提供对方向上变动的光照入射的表示。优选地,定向光的强度值的数量和存储在对应的可见度贴图44中的可见度值的数量相等。在本发明的优选实施例中,优选将光照值表106构造成保存四个象限光照值,每个象限光照值表示为三个色彩分量值的组合。多边形所接收的总光照可计算为对该多边形存储的四个象限光照值的平均。

基于象限中心的矢量相对于多边形表面切空间的方位来确定四个象限光照值L1、L2、L3和L4。基于多边形顶点的切空间坐标(也称为纹理坐标),计算垂直于多边形法线的多边形的切矢量。在常规的计算机图形uv贴图术语中,切矢量对应于变换到3D空间的矢量(1,0)。对于带有均以顺时针顺序列出的v0、v1、v2和v3的顶点位置以及u0、u1、u2和u3的u切空间坐标的多边形,切矢量计算为 T=v0(2u0-u3-u1)+v1(2u1-u0-u2)+ v2(2u2-u1-u3)+v3(2u3-u0-u2) 式6
三角形多边形的切矢量也可使用式6来计算,其中顶点值v3设为v0,并且u3的纹理空间坐标设为u0。

为了计算四个象限的光值,通过来自接收器面心与发射器面心的矢量与四个象限方向矢量之间的角的余弦来调制总的光值。
Q1=NR+T1式7 Q2=NR+T2式8 Q3=NR-T1式9 Q4=NR-T2式10 其中T1是多边形切矢量,而T2是副法线切矢量(NR×T1)。

根据式2计算形状因数F。假定有源发射器多边形和无源发射器多边形都是漫射发射器,则估计的从发射器多边形接收的光LE计算为从紧邻的前一次迭代确定的L1、L2、L3和L4值的平均,或者当不存在前一次迭代时为零。然后,按照下式计算接收器多边形接收的光 式11
然后,合适时对每个色彩分量重复,按照下式计算总的接收光的各个象限分量L1、L2、L3和L4 式12 式13 式14 式15
将每个象限强度值的三个所得色彩分量值保存到光照值表106中。可理解,相对于计算单个非定向光强度值,在确定四个象限强度值时会引起计算成本的最小限度的增加。

一旦计算了定义当前场景的控制网格中的所有多边形的入射照明值,便可渲染多边形。在渲染过程中可应用多种常规的屏蔽方法。对于简单的平板漫射屏蔽,多边形的色彩屏蔽可确定为是光值多边形色彩的产物,或者当多边形是纹理贴图时确定为是纹理色彩的产物。或者,每个顶点(per-vertex)光值可通过对共享顶点的相邻多边形的光值取平均来计算。这将允许Gouraud和Phong屏蔽技术的常规应用。

根据本发明,优选地,在细分表面上改进的光照强度双二次技术通常在计算上是有效的,同时在复表面的屏蔽中实现更高的精度。虽然优选结合上述定向照明技术使用,但双二次技术也完全能够在仅为每个纹元定义单个光值(包括三个色彩分量)的系统中使用。

参照图10,将优选的双二次技术应用于优选通过Catmull-Clark细分已经铺嵌114的控制网格,以便实现由四边形和三角形组成的精细的控制网格162。为了确定光在控制网格上的分布,通过使用多边形的面积对每个多边形的光色彩分量值加权并将该面积看作是额外的光分量来将多边形光值转换为均匀的坐标系统。对于优选实施例,接着对控制网格中的每个多边形,光照值表106将存储均包含三个色彩分量值的四个定向光值L1、L2、L3和L4。

随后计算多边形网格中的每个顶点的光值。优选地,给定顶点的光值计算为与共享该顶点的多边形相关联的光值的平均。考虑多边形E,在图11中进一步详细示出,示例性的顶点P0,0由多边形A、B、D和E共享。当多边形光值包括定向光值时,将通常有序的定向光值一起平均。类似地,通过将共享一条边的面的光值平均来计算每条边的光值。因此,对于每个四边形,表示点P0,0-P2,2的九个光值用作用于求解表面的该部分中的任何点处的光值的参数方程中的系数。使用二次Bezier基函数来求解四边形的面上的任何u,v坐标Q(u,v) Bi,2(t)=2ti(1-t)2-i/i!/(2-i)!式16 其中i是控制点的行或列,而t是u或v坐标(范围为0-1)。
式17 其中Q(u,v)表示在多边形表面坐标u、v上的入射光强度。

然后,在双二次内插之后,将光值的三个色彩分量除以面积分量以便确定用于屏蔽的光值。

三角形类似于四边形来处理,它将由七个而不是九个控制点来定义。根据本发明,三角形中任意点处的光值可使用类似的Bezier三角内插方法来计算,再次处理这些光值好像它们是控制点一样。可使用常规的技术来将二次Bezier三角形变换为Bezier面片并单独地执行双二次内插以便估计。

根据本发明,可实现许多进一步的计算效率。首先,可通过逼近细分表面法线而不是明确地计算实际法线来获得显著的计算效率。优选地,使用多边形法线的双二次内插、以类似于逼近顶点光值和边光值的方式来逼近细分表面法线。如同内插的光值一样,在内插之前,优选通过使用多边形的面积来缩放(scale)每个归一化的多边形法线。在表面屏蔽器中使用之前,优选通过除以法线长度、而不是除以可作为相关联光值的第四分量获得的多边形面积来将内插的结果归一化。

通过使用Bezier面片作为Catmull-Clark细分表面的替代表示,可实现另一计算效率。根据本发明,假定多边形表面法线和关联的光值平滑地内插,则通过利用Bezier面片逼近任意拓扑的细分表面所引入的常规的连续性问题将不再出现。Bezier面片上的点可比细分表面更有效地计算。

在图12A-12D中示出计算双三次Bezier面片的优选过程,其中示例性地参照控制网格部分160的E指定的多边形。如图12A指示,计算双二次Bezier面片中的初始步骤是计算每个多边形的每个顶点的内部控制点,如多边形E的控制点i、j、k和l示出。这些控制点计算为多边形顶点的加权和。因此,四边形的控制点位置(CP)定义为 CPi=WpP0,0+WqP2,0+WrP0,2+WsP2,2式18 CPj=WpP2,0+WqP2,2+WrP0,2+WsP0,0式19 CPk=WpP0,2+WqP0,0+WrP2,0+WsP2,2式20 CPl=WpP2,2+WqP0,2+WrP0,0+WsP2,0式21 其中用于逼近四边形的Catmull-Clark细分表面的面向顶点的加权掩码(vertex oriented weighing mask)(Wx)定义为 式22 式23 式24 式25 其中v表示正在计算的控制点的顶点的价数(valence),并且顶点的价数定义为共享该顶点的多边形的数量。

对于三角形,面向顶点的加权掩码(Wx)定义为 式26 式27 式28
对于在顶点具有不由两个多边形共享的一条或多条边缘时出现的价数为三的边界顶点,面向顶点的加权掩码(Wx)定义为将与边界边缘相关联的内部控制点放置在边缘上。当共享顶点的两个边缘不由其它面共享时,则面向顶点的加权掩码(Wx)是Wp=1、Wq=0、Wr=0以及Ws=0(对于四元组)。当非共享的边缘在对应于Ws和Wp的顶点之间时,则面向顶点的加权掩码(Wx)是Ws=2/3、Wp=1/3、Wq=0以及Wr=0(对于四元组)。当非共享的边缘在对应于Ws和Wq的顶点之间时,则面向顶点的加权掩码(Wx)是Ws=2/3、Wp=0、Wq=1/3以及Wr=0(对于四元组)。如同四边形,三角形的控制点位置和边界点计算为适用顶点的加权和。

一旦确定了内部控制点,则如图12B概括性地示出,对于控制网格162中的每个顶点计算拐角控制点。作为对应于相关联顶点的内部控制点的平均位置计算拐角控制点。如图所示,共享顶点的每个多边形的一个内部控制点定义为对应于相关联的顶点。如图12C概括性地示出,随后对每个多边形边缘计算两个控制点。优选通过将出现在边缘相邻的多边形中并对应于相关联顶点的两个最近的相反控制点平均来确定这些边缘控制点。如果边缘未被共享,则对应的内部控制点的值也用于边缘控制点。

随后采集所计算的控制点以形成双三次Bezier面片的集合。优选地,将Bezier面片采集到数据结构220中,如图13概括性地示出。每个面片2220-N优选包含唯一的面片编号以及定义对应的Bezier面片逼近的细分表面多边形的控制点的u、v坐标值的排序序列。对于四边形,将对应于四个内部控制点、四个拐角控制点以及八个边缘控制点的十六个控制点坐标存储为离散的面片2220-N。对于三角形,计算附加的中心控制点以定义Bezier三角。中心控制点定义为三个内部控制点的平均。所产生的对应于三个内部控制点、三个拐角控制点、六个边缘控制点以及一个中心控制点的十个控制点坐标的集合存储为离散面片2220-N。

然后,可使用双三次Bezier面片数据来计算由控制网格162定义的有限表面上的顶点位置。如图14A示出的标高截面230概括性地示出,利用顶点法线的常规未加权内插提供了在控制网格162的表面上的相对均匀的分级(graded)光分布232。根据本发明,基于Bezier面片2220-N控制点数据来计算在图14B中示出的等同截面240上的光强度分布的优选双二次内插。如图所示,与在相邻多边形的相对面积上部分加权的下面的控制网格形态更加一致地实现了分级光分布242。

根据本发明,在控制网格表面上的光强度值的内插确定利用可见度贴图44信息以便确定由光栅化118产生的像素阵列中的每个像素的光照。因为在优选实施例中将象限可见度贴图44实施为纹理贴图,所以与像素相关联的多边形的3D坐标空间方位以及可见度值的纹理空间必须对准。具体而言,必须按需要来旋转四个光值,以便使不共享纹理坐标的相邻多边形可共享光值。90度整数倍的旋转是简单易做的。为了实现90度顺时针旋转,入射的象限光值的顺序可移位,使得对于值集合a、b、c、d,旋转后的值集合变为b、c、d、a。旋转角/90≠0的分数旋转(fractional rotation)优选通过线性内插实现。再次使用值集合a、b、c、d,22.5度的逆时针旋转计算为0.75a+0.25b、0.75b+0.25c、0.75c+0.25d、0.75d+0.25a。

光值的旋转角的计算通过比较3D空间中共享的边缘的纹理坐标来执行。纹理空间中的边缘角可计算为atan2(v1-v2,u1-u2),其中(u1,v1)和(u2,v2)是边缘的顶点的纹理坐标。用于旋转由两个面共享的边缘上的光值的角是第一面的边缘角减去第二面的边缘角。如果结果是负的,则加上360度以强制为正的结果。在多边形共享顶点而不是共享边缘的情况下,必需的旋转角可通过按顺序访问边缘周围的多边形并将其旋转角求和来确定。例如,如果多边形A、B、C、D以及E(以顺时针顺序列出)共享顶点,则可通过将B相对于A的角以及C相对于B的角相加来找到C相对于A的顺时针旋转角。为了将较小的网格不连续和舍入误差的影响降至最低,可通过逆时针角求和来确定不同的旋转角。也就是说,通过将E相对于A的角加上D相对于E的角加上C相对于D的角来求和。C相对于A的最终旋转角优选通过对顺时针角和逆时针角取平均来计算。

为了最终计算多边形网格的像素遮蔽,将入射光值与适用的纹理贴图42值和象限可见度贴图44值结合。对于优选的四个分量光值,用于计算表面的漫射光的遮蔽方程变成 I=L1*s1+L2*s2+L3*s3+L4*s4式29 其中L1、L2、L3和L4是四个象限光值,每个包含三个色彩分量,并且s1、s2、s3和s4是光照贴图纹理值的四个分量。

光照贴图中的值可使用以下变换根据另一种方式的常规法线贴图预先计算,其中Nx、Ny和Nz是法线的三个分量,而In是光照纹理的第n个分量(n=1、2、3或4)。对于光照贴图中的每个条目,光照值对于所有象限都初始设置为零。半球的两个最接近的象限由法线使用法线的x和y分量以及arctan2函数指向,arctan2起到反正切的作用,但采用两个参数并返回-Pl到Pl范围内的结果(a)。
式30
随后,通过乘以因数2/Pl将结果(a)归一化。如果归一化的值是负的,则加上整数值四。现在,结果(a)将在零和四之间的范围内。利用结果(a)的整数部分来选择这两个最接近的象限,而利用结果(a)的小数部分来设置它们的光照值。选定的两个象限由函数floor(a)和((floor(a)+1)modulo 4)来指定。为这两个象限设定的光照值分别由函数1-frac(a)和frac(a)来指定。最后,使用Nz法线分量来计算相对于多边形表面的入射光照角。
式31
限定在从零到一范围内的光照角(z)起到指定将到达未受扰表面的入射光照的百分比的作用。每个象限的已调整入射光照值(In′)随后计算为 式32
根据本发明,随后应用表示入射光照吸收缩放值的象限可见度贴图值以确定最终的可见度值(In″)。实际上,吸收值调整遮蔽以考虑将由高分辨率表面几何形状施加的表面自遮蔽。
In″=In′qn式33 其中qn是与入射光照值In对准的象限可见度值分量。

根据本发明,由于可使用光照贴图来重建常规的遮蔽法线,所以不需要单独的法线贴图。具体来说,屏蔽法线可根据光照贴图值按照下式来计算 Ns=normalize((N+T1)·r+ (N+T2)·g+ (N-T1)·b+ (N-T2)·α) 式34 其中r、g、b和α是象限可见度贴图44的四个分量,N是多边形中心的表面法线,而T1和T2是正交多边形表面切矢量。

根据本发明,源于全局光照的镜面效果可通过使用定向光值来实施。许多材料具有镜面属性,也称为光泽(shininess),其表示定向相关的光反射度。关于可变形几何形状的逼真渲染,从所包括元素的不同纹元向观察者反射的光的量必须随着观察方向的改变而改变。

为了逼近受光照纹元的镜面属性,在确定各个纹元的光照时计算得出的定向(directionally)入射的光值在功能上进一步被视作是单独的定向光。对应于光方向矢量的四个单独的反射矢量均按照下式计算 R=2(Ns·L)*Ns-L 式35 其中Ns是遮蔽法线,而L指定从根据本发明的优选实施例中由N+T1、N+T2、N-T1和N-T2定义的矢量集合选出的相应光方向矢量。

优选地,随后使用常规Phong反射模型来计算四个光中每个光的镜面项(specular term)。Phong反射模型的四个镜面分量优选按下式计算 S=LKSmmax((R·V),0)n 式36 其中L是光值,即三个分量光强度值,K是为材料定义的镜面强度,Sm是材料的定义的镜面色,R是反射矢量,V是从表面到观察者的矢量,而n是定义的材料光泽。

镜面强度可选择性地修改,以便改进材料的视在镜面逼真度。具体来说,镜面项K可乘以菲涅耳衰减因子以衰减反射。该修改优选用于渲染不是纯粹为金属的材料表面,尤其用于渲染塑料和织物。菲涅耳衰减因子计算为 F=Kmin+(K-Kmin)*pow(1-|Ns·E|,Fe 式37 其中Kmin是为材料定义的最小镜面反射值,K是未修改的反射强度,Ns是遮蔽法线,E是从表面到观察者的归一化矢量,而Fe是定义为表面材质的菲涅耳指数。

随后,按下式计算四个镜面分量 S=LFSmmax((R·V),0)n 式38
一旦确定,随后将各个镜面项累加在一起以定义镜面贡献分量,将镜面贡献分量加到适用的像素光照值以获得最终的遮蔽结果。

因此,描述了使得能够实时渲染经受全局光照的可变形几何形状并进一步改善在所渲染的场景中实现的逼真度的技术。虽然公开的各种渲染技术有利地在一起使用,但是各种子组合可用于不同的环境。因此,在所附权利要求的范围内,鉴于以上对本发明的优选实施例的描述而理解,通过对本领域技术人员很容易理解的范围做出修改和改变,本发明可使用上面具体描述之外的方式来实施。
权利要求
1.一种在包括图形渲染子系统的计算机系统内实施的方法,所述方法提供表示场景的用于在显示设备上显示的图像数据帧的顺序产生,所述场景包含可变形几何形状,所述方法包括以下步骤
a)对以动画顺序表示包含可变形几何形状的场景的一系列帧计算帧动画数据,所述帧动画数据包含描述在所述场景内出现的图形元素的三维表面的控制网格的顶点属性,所述控制网格包含多个多边形;以及
b)基于所述帧动画数据为所述多个多边形计算相应的光照值以确定所述场景的全局光照,其中对于每个所述帧对应的帧动画数据迭代执行所述计算步骤,直到实现全局光照的符合要求的收敛为止,其中在每次迭代中,基于在前一次迭代中计算的帧-帧相干多边形光照值来确定所述相应光照值,以及其中所述符合要求的收敛在由实时帧速率定义的帧-帧间隔内实现。
2.根据权利要求1所述的方法,其中对于在正在进行的、用于在所述显示设备上显示的所述图像数据帧的顺序产生中出现的连续多个帧中的每个帧实现所述符合要求的收敛。
3.根据权利要求2所述的方法,其中对于所述多个多边形中的预先确定的多边形,对应的一个所述相应的光照值确定为直接照明所述预先确定的多边形的所述多个多边形的正的光照贡献以及直接遮蔽所述预先确定的多边形的所述多个多边形的负的光照贡献的总和,其中所述正的光照贡献和负的光照贡献是在前一次迭代中计算的所述相应的帧-帧相干多边形光照值。
4.根据权利要求3所述的方法,其中以所述正光照贡献和负光照贡献的单遍组合累加的方式确定所述多个多边形中的所述预先确定的一个多边形的相应光照值。
5.一种提供包含可变形几何形状的动画场景的实时产生的计算机系统,所述计算机系统包括
a)耦合到主存储器的基本处理单元,所述基本处理单元用于以实时帧速率将表示可变形几何形状的控制网格迭代地处理为顺序的图像帧,以在显示设备上显示,其中每次所述迭代建立表示可从所述主存储器访问的所述控制网格的多边形数据集合;以及
b)耦合到所述基本处理单元和所述主存储器的图形渲染子系统,所述图形渲染子系统用于访问并处理所述多边形数据集合以便在所述实时帧速率的帧周期内为所述多边形数据集合中的每个多边形确定全局光照值,对于预先确定的帧多边形数据集合,所述图形渲染子系统基于为前一帧多边形数据集合中的每个多边形计算的最终全局光照值来为所述预先确定的帧多边形数据集合中的每个多边形计算初始的全局光照值,其中所述预先确定的帧多边形数据集合和前一帧多边形数据集合的多边形通过所述控制网格的帧-帧相干性相关。
6.根据权利要求5所述的计算机系统,其中对于所述预先确定的帧多边形数据集合,所述图形渲染子系统还可用于迭代地计算所述预先确定的帧多边形数据中的每个多边形的全局光照值,每次迭代包括全局光照值如下的单遍计算
其中所有E是除了正为其计算全局光照值LR的接收器多边形以外的由所述控制网格定义的所有多边形的集合;假定发射器多边形是区域光的一部分,则GE是所述发射器多边形的发光强度;CE是所述发射器多边形的色彩;假定所述发射器多边形是反射表面,则LE是从紧邻的前一次迭代确定的所述发射器多边形所接收的估计光量,或者在不存在所述前一次迭代的情况下为零,以及其中LE和LR均具有红色分量、绿色分量和蓝色分量。
7.根据权利要求6所述的计算机系统,其中LR具有多个定向光照分量以及其中每个所述定向光照分量具有红色分量、绿色分量和蓝色分量。
8.根据权利要求7所述的计算机系统,其中LR具有四个定向光照分量以及其中每个所述定向光照分量具有红色分量、绿色分量和蓝色分量。
9.根据权利要求8所述的计算机系统,其中所述图形渲染子系统包括表示从相邻高分辨率表面特征中预先确定的像素相关象限的相关吸收的象限可见度贴图,其中所述图形渲染子系统用于将所述预先确定的帧多边形数据集合渲染为像素数据帧,以及其中所述图形渲染子系统为所述像素数据帧中预先确定的像素按下式计算对应的像素遮蔽光照值
I=L1*s1+L2*s2+L3*s3+L4*s4
其中s1、s2、s3和s4是所述象限可见度贴图中对应于所述预先确定像素的条目的象限对应值。
10.一种在包括图形渲染子系统的计算机系统内实施的用于实时确定可变形几何形状的全局光照的方法,所述方法包括以下步骤
a)将可变形几何形状动画制作为帧序列;
b)对于预先确定的帧,为定义表示所述可变形几何形状的控制网格的多个多边形中的每个多边形确定全局光照值,其中对于所述帧序列中的预先确定的帧,根据为所述帧序列中前一帧确定的所述多个多边形的帧-帧相干全局光照值计算所述全局光照值;以及
c)实时显示所述帧序列。
11.根据权利要求10所述的方法,其中所述确定步骤提供所述预先确定的帧的预先确定多边形的全局光照值的单遍计算,所述全局光照值为辐射光和反射光的正贡献和直接入射在所述多边形上的吸收光的负贡献的总和。
12.根据权利要求11所述的方法,其中所述单遍计算还提供所述正贡献和负贡献的定向相关累加,所述预先确定的多边形的所述全局光照值包括多个定向光照值,其中每个定向光照值包括表示定义的色彩模型的色彩分量值的集合。
13.根据权利要求12所述的方法,其中所述单遍计算如下确定所述定向相关累加
以及其中所述多个定向光照值包括所述全局光照值的象限分量L1、L2、L3和L4,以及其中重复地对所述色彩分量值集合中的每个包括的色彩分量值计算所述象限分量,如下所示
以及
14.根据权利要求13所述的方法,还包括将所述预先确定的帧的所述预先确定多边形渲染为多个像素的步骤,其中所述渲染步骤包括为所述多个像素中的每个像素确定像素遮蔽强度,以及其中所述像素遮蔽强度如下计算
I=L1*s1+L2*s2+L3*s3+L4*s4
其中s1、s2、s3和s4是表示所述多个像素中相应像素的依赖于定向相关高分辨率纹理的吸收的表面可见度值。
全文摘要
实时计算表示包含经受全局光照的可变形几何形状的场景的图像数据帧。为一系列按动画顺序表示包含可变形几何形状的场景的帧计算帧动画数据。帧动画数据包括描述场景内出现的图形元素的三维表面的控制网格的顶点属性。为控制网格的各个多边形计算相应的光照值,以便确定场景的全局光照。对帧动画数据中的每个帧集合迭代地执行计算,直至实现符合要求的全局光照收敛。在每次迭代中,基于在前一次迭代中确定的帧-帧相干多边形光照值来确定相应的光照值。在由实时帧速率限定的帧-帧间隔内实现符合要求的收敛。
文档编号G06T15/60GK101606181SQ200780035392
公开日2009年12月16日 申请日期2007年7月24日 优先权日2006年7月24日
发明者迈克尔·邦内尔 申请人:迈克尔·邦内尔
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1