用于低频照明环境的光自转移的图形图像演示方法和系统的制作方法

文档序号:6571129阅读:176来源:国知局
专利名称:用于低频照明环境的光自转移的图形图像演示方法和系统的制作方法
技术领域
本发明涉及计算机图形图像演示技术,并且更多侧重涉及于在所演示图像上模型化物体的照明和变暗。
背景技术
从区域源,软阴影,和相互反射的照明在现实图像合成中具有重要的作用。不幸的是,在大规模照明环境(包括蒙特卡洛光线追踪,光能传递,或在多点光源集合的多通路演示)中合成的一般方法在实时演示时是不实际的。(蒙特卡洛光线追踪由除了Cook,R,Porter,T和Carpenter,L的分布式的光线追踪,SIGGRAPH’84,137-146描述外,还有Jensen,H,的采用光子图的综合照明,对于演示的欧洲图形专题研究小组1996,21-30;和Kajiya,J的演示方程式,SIGGRAPH’86,143-150)(光能传递技术在Cohen,M和Wallace,J的光能传递和现实图像合成,职业学术出版业,剑桥,1993中得以描述)(各种各样的多通路演示技术由除了Haeberli,P,和Akeley,K,的堆积缓冲器;高质量演示的硬件支持,SIGGRAPH’90,309-318描述外;还有Keller,A,的即时光能传递SIGGRAPH’97,49-56;和Segal,M,Korobkin,C,van Widenfelt,R,Foran,J,和Haeberli,P,的采用结构映射来快速变暗和照明作用,SIGGRAPH’92,249-252.)实时的、现实的综合照明面临三个困难-它必须将真实物质(BRDF复杂性)模拟成复杂的、空间变化的、双方向反射系数分配函数(BRDFs),它需要在各个点的照明方向半球的综合(光综合),它必须导致跳跃/阻塞的作用,如阴影,由于从源到接收器沿着光的路径的干涉原因(光传递的复杂性),很多研究集中在扩充BRDF复杂性上(比如,平滑的和各向异性不均的反射),通过将入射光表示为方向或点的和来解决光综合的问题,光的综合因此易处理地简化成在一些点上采样一个解析的或列表的BRDF,但对大光源来说就不易处理了。研究的第二方法采样光并预先将它卷积成不同尺寸的核。(见,如Cabral,B,Olano,M,和Nemec,P,的基于演示的反射空间图像,SIGGRAPH’99,165-170;Greene,N,的环境映射和世界投影的其他应用,IEEE CG&A,6(11)21-29,1986;Heidrich,W,Seidel H,的硬件加速的照明和变暗SIGGRAPH’99,171-178;Kautz,J,Vazquez,P,Heidrich,W,和Seidel,H,的预先过滤环境映射的一体化方案,对于演示的欧洲图形专题研究小组2000,185-196;和Ramamoorthi,R,和Hanrahan,P,的对光环境映射的一个有效表示,SIGGRAPH’01,497-500.)它解决了光的综合问题但忽视了光传送的复杂性如阴影,由于卷积假设成入射光是不闭塞和不分散的。最终,精巧的技术作为扩充光传送的复杂性,特别是阴影的存在。光的综合成为了问题;几乎所有的这些技术多不适合非常大的光源。

发明内容
在这里描述的一个实时的图像演示技术较好的解决了实时的光综合和光传送的复杂性。表示这个环境。本技术侧重于低频照明环境,采用低次序球形谐函数(SH)基础来不需要伪信号使用的高效地表示这一环境。本技术的一个方面用来显示一个物体怎样分散这光线到它本身或它的邻居空间,在某种程度上从折射光线上减弱分散。例如,图8将一个模型人头的一个非遮蔽图像和在这里描述的通过光自动转移所产生的一个图像作了对比。
为了简单的总结所描述的技术,初始假设我们有一个凸起的,散开的被一个无限远的环境映射点亮的物体。物体对它环境的遮蔽”反应”能被看成一个转移函数,映射导入的到流出的光,在这里简单的完成余弦加重累积。一个更复杂的累积能捕获一个凹入物体怎样使自己变阴暗,在这里被积函数被一个表示沿各个方向能见度的附加传送因数相乘。
所描述的技术方法为一个给定物体预先计算像变暗的复杂转移函数所需要的昂贵传送模拟。作为结果的传送函数备表示成一个密集系列的在它平面上的矢量或矩阵。其间入射光不需要被预先计算。在以后的实时演示中,图形硬件可以动态地采样在限定数目的点上的入射光,这种技术转换成用快速计算分析模型的球形谐函数(SH)基础,如天窗模型或简单的如圆等几何能被使用。
在SH基础中,通过表示入射光和转移函数,所描述的技术将光累积简化为它们的系数矢量(漫射接受器)之间一个简单的点乘积,或通过一个小的转移矩阵(平滑接受器)的照明系数矢量的一个简单的线性变化的。低频照明环境需要非常少的系数(9-25),使图形硬件在一个单通下计算结果。不象蒙特卡洛和多通路光综合方法,这种技术的实时计算可以保持恒定不管光源的多少和多大。
保持一个恒定数量的实时计算依赖于大规模的、平滑照明来限制所需的SH的数目。
所描述的技术表现了复杂的传送作用像在转移函数中的相互反射和焦散线。由于这些都被模拟成预处理,只有转移函数的基础系数改变,而不是实时的计算。所描述技术所述的方法对平面和基于体积的几何形状都进行处理。对于更多的SH系数,这技术甚至可以处理平滑接受器(但不是高度反射的)和漫射,包括相互反射。如25SH系数对有用的平滑是足够的。除从一个刚性的物体转移到它本身外(叫自转移),这技术归纳为从一个刚性物体到它的邻近空间的邻近转移,允许投射软阴影、平滑反射和在动态接收器上的焦散线。


图1是在动态的、低频照明环境中为实时图像演示合并预先计算的光自转移的一个计算机图形软件架构的方框图。
图2是图1中在图像演示系统中的一个自转移预先计算的流程图。
图3是图1中在图像演示系统中的一个光转移的实时演示的流程图。
图4是图3中在实时演示中处理实时漫射平面自转移的流程图。
图5是图3中在实时演示中处理实时平滑平面自转移的流程图。
图6是为图1中的图像演示系统的一个适当的计算环境的一个方框图。
图7是描述在图2中的自转移预先计算中的模拟相互反射的图。
图8描述图3中的非遮蔽的和通过实时演示所产生的图像。
图9描述图3中的非遮蔽的和通过实时演示所产生的图像,图解了漫射平面自转移的作用。
图10描述图3中的非遮蔽的和通过实时演示所产生的图像,图解了平滑平面自转移的作用。
图11分别描述了用在一个单点采样的入射光、反复最近点算法(ICP)点和多个点通过图3的实时演示产生的图像。
图12描述了通过图3的实时演示所产生的体积的自转移的图像。
图13描述了通过图3的实时演示所产生的邻居关系的自转移的图像。
具体实施例方式
如图1所示,一个计算机图形图像演示系统100的一个软件结构提供一个模型化物体的实时图像演示,该演示使用在此描述的采用光自转移图像演示技术的相互反射和自遮蔽。通常的,该软件结构包括一个综合照明模拟器120,一个实时图像演示引擎140,和一个图形显示驱动180。下面更全面地描述光自转移演示技术,综合照明模拟器120执行该技术的预先处理阶段,它从一个几何物体模块110预先计算光自转移数据140。该几何模块110可以是一个三角形的网孔,微波合成物,或者另外其他被模型化物体的几何化的表现。然后实时演示引擎140使用该预先计算的光自转移数据为动态地可变照明环境150和观察方向160演示模型化物体图像,该演示引擎可以有选择的改变或者设置用户控制170。图形显示驱动180输出图像到一个图像输出设备(例如显示器,放映机,打印机等)。
在图形图像演示系统的一些具体实施例中,模拟器120的光自转移预先计算和使用引擎140的图像演示可以在单个计算机上执行,如在下面的第6节描述的计算环境。通常的,模拟器120可以在一个单独的计算机上运行,然后该结果数据转移到演示引擎140运行的计算机上,产生图形图像。
光自转移技术总观。作为一个预处理,综合照明模拟器120在模块110上运行照明模拟,从而捕获如何模型化物体对自己遮蔽和驱散光线。该结果作为模块上的一组密集矢量(漫射状态)或矩阵(平滑状态)记录于光自转移数据130中。在图像演示时间,演示引擎140为照明环境150投射相关入射光到球形谐函数(SH)基础(如下描述)。然后转移矢量和矩阵的模型领域被应用于照明系数矢量。如果物体漫射,在该物体上的点的一个转移矢量随着照明系数打点从而产生恰当的自离散阴影。如果该物体是平滑的,一个转移矩阵被应用于照明系数从而产生在这些点上一个代表自离散入射光的球形函数系数。该函数根据物体的双方向反射系数分布函数(BRDF)卷积,随后估计基于观察的反射方向从而产生所演示的在图像中的物体的最终阴影。
1.球形谐函数的回顾定义球形谐函数定义一个在球形上的标准正交的基础,S,类似于在1D圆周上的傅立叶转换,使用参数s=(x,y,z)=(sinθcos,sinθsin,cosθ)基础函数定义为 其中Plm为相关的Legendre多项式,Klm为标准化常数Klm=(2l+1)4π(l-|m|)!(l+|m|)!]]>上述的定义组成一个复数基;一个真值基础由这个简单的转化所提供 I的低值(称为波段索引)表示球形上的低频基础函数。波段I的基础函数在x,y和z中变为次序I的多项式。赋值可以由简单的循环公式产生。(例如Edmonds,A,在量子论机械学中的多角要素,普林斯顿大学,普林斯顿,1960;和ZARE,R,多角要素;化学和物理学中的空间方面的理解,Wiley,纽约,1987)。
投影和改造因为SH基础是标准正交的,一个由S定义的标量的函数f通过累积投射到他的系数flm=∫f(s)ylm(s)ds···(1)]]>这些系数提供n次序的改造函数。
f~(s)=Σl=0n-1Σm=-1lflmylm(s)···(2)]]>当相波段n的数字增长,f相应的近似增长。低频率信号能够根据只有的一些SH波段正确的表现。较高频率信号由一组低次序投影被波段限制。(例如无伪信号的平滑)投影n次序包括n2个系数。它通常方便地改写(2)按照投影系数的单个索引矢量和基础函数,通过f~(s)=Σi=1n2fiyi(s)···(3)]]>
经由I=l(l+1)+m+1。通过此公式可见改造函数S的评价表现为n2组成的系数矢量fi和评价基础函数yi(s)矢量的一个简单的点乘积。
基础属性。一个SH投影属性是它的轮流的恒定性;那是,提供g(s)=f(Q(s)),当Q是一个在S上的任意的旋转g~(s)=f~(Q(s))···(4)]]>这是类似于1D傅立叶变换的移动恒定性属性。事实上,该属性意为SH投影导致无伪信号的人造物品。当f产生的采样例子被收集为一旋转系列的采样点,投射,然后f回转。
SH基础的标准正交提供在S上任意两个函数a和b的有用的属性,它们的投影满足∫a~(s)b~(s)ds=Σi=1n2aibi.···(5)]]>换句话说,波段限制函数的乘积的综合使变为它们投影系数的一个点乘积。
卷积一个循环的相称的内核函数h(z)和一个f函数的卷积被表示为h*f。注意h必须为循环相称(并且应此能够被定义为一个胜于s的z的简单的函数)为了该结果被定义在S上,胜于更高的空间的旋转组SO,如上面的每个方程式(3)。卷积投影满足(h*f)lm=4π2l+1hl0flm=αl0hl0flm.···(6)]]>换句话说,该投影的卷积系数是单独的投影函数的简单的刻度产物。此属性提供一个快速途径以便缠绕一个含有半球状的余旋内核的环境映射,该核心定义为h(z)=max(z,0),以得到一个光的映射(如同在Ramamoorthi,R,和Hanrahan,P,光环境映射的有效表现,SIGGRAPH’01,497-500中所描述的)。在这个例子中,h的投影系数能通过使用一个分析公式来获取。这个卷积属性也能够被用于通过精密的内核产生预过滤环境映射。注意,因为h是关于z的循环对称的,它的投影系数仅在m=0时为非零的。
乘积投影 一对球形函数c(s)=a(s)b(s)的乘积的投影(a已知而b未知)可以被看作为通过一个矩阵的投影系数bj的一个线性变换ci=∫a(s)(bjyj(s))yi(s)ds=(∫a(s)yi(s)yj(s)ds)bj=a^ijbj···(7)]]>其中为重复的序号j暗示了求和,注意是一个相称的矩阵。
旋转 一个被Q旋转的改造函数,f(Q(s)),可以用使用一个f的投影系数的线性变换fi投影。因为旋转恒定性的属性,该线性变换独立地对待每个波段的系数。最有效的执行通过使用一个旋转Q的zyz欧拉角的分解而完成,使用一个相当复杂循环公式。(参见,例,Chirikjian,G,和Stein,D,球形步进电机的运动学设计和替换,电气和电子工程师协会机械学报,4(4),12.1999;Edmonds,A,在量子论机械学中的角动量,普林斯顿大学,普林斯顿,1960;和ZARE,R,角动量;化学和物理学中的空间方面的理解,Wiley,纽约,1987)。当仅仅涉及低阶函数时,在这些参考书目中描述的显式旋转公式能够通过使用符号累积来实现。
2.光自转移光自转移封装了一个物体O对自己遮蔽和驱散光线的方法。光自转移通过使用SH基础,由点p∈O的第一次参数化入射光(表示为Lp(s))来表示。入射光因此被表示为一个n2系数的矢量(Lp)i。在实际中,此照明能在表面附近被动态地并且稀疏地采样,也许仅在单个点上。假设在于在O上的照明变化不是由于它本身存在较少(参见4.1节,入射光域的空间采样)。光自转移也能够在O上被预先计算和很密的存储,作为转移矢量或矩阵。
一个转移矢量(Mp)i能被用于漫射表面和表示对产生标量退出光的照明矢量(表示为Lp’)的一个线性转换,通过以下内积L′p=Σi=1n2(Mp)i(Lp)i···(8)]]>换句话说,(Mp)i的每个成分表示了一个照明基础函数(Lp)i对在p处遮蔽的线性影响。
一个转移矩阵(Mp)ij能被用于平滑表面并且表示对照明矢量的线形转换,它为一个完整的转移光球形函数L’p(s)产生一个投影系数,而不是一个标量,即(L′p)i=Σj=1n2(Mp)ij(Lp)j.···(9)]]>入射光和转移光之间的区别在于L’p(s)包括由于O的存在所造成的遮蔽和散射效果,而Lp(s)表示假设O在发生地点中被移去后的入射照明。(Mp)ij的成分表现了入射光(Lp)j的第j个的照明系数对于转移光L’p(s)的第i个系数的线性影响。下一节将显示在O上根据自散射如何得到漫射表面的转移矢量和平滑表面的转移矩阵。
2.1漫射转移首先假设O是漫射。在点p∈O上的最简单的转移函数表现了非遮蔽漫射转移,定义为标量函数TDU(Lp)=(ρp/π)∫Lp(s)HNp(s)ds]]>产生退出光,它是对漫射表面的观察角的不变量。在此,ρp是在p上的物体的反照率,Lp是假设O在发生地点中被移去后的p上的入射光,Np是在p上的物体法线,而Hnp(s)=max(Nps,0)是余弦加权的、关于Np的半球内核。通过单独地对Lp和Hnp进行SH投影,方程式(5)简化Tdu为它们系数矢量的一个内积。得到的这个要素此处被称为光函数Lp和转移函数Mp。在这第一个简单的例子中,MpDU(s)=HNp(s),]]>因为Np已知,转移函数(MpDU)i的SH投影能被预先计算,结果是一个转移矢量。事实上,存储是不必要的因为一个简单的分析公式产生它给定的Np。由于MpDU是一个固有的低通过滤器,第二阶投影(9个系数)提供在一个任意的(甚至非平滑)照明环境下好的精确性。
为了包括阴影,我们定义阴影漫射转移为TDS(Lp)=(ρp/π)∫Lp(s)HNp(s)Vp(s)ds]]>其中当来自p的方向s的一束射线无法与O再相交(即没有被遮蔽)时,额外的可见度函数Vp(s)→{0,1}等于1。用非遮蔽转移,该累积可以用Lp的SH投影和以下转移函数分解成两个函数MpDS(s)=HNp(s)Vp(s).···(10)]]>单独的SH投影Lp和Mp重新将在TDS上的累积简化为系数矢量的一个内积。
现在转移是有价值的;光自转移通过使用一个传输模拟器能被预先计算(如同在下面章节“预先计算自转移”中描述的),存储在O上的许多点p的结果转移矢量(Mp)i。不像前面的例子,MpDS的第二阶投影可能是不准确的,即使在平滑的照明环境中,因为Vp能创建本地的高频率照明,例如,通过自遮蔽小孔。使用第四或第五阶投影提供在平滑照明环境中的典型网眼的好结果。例如图9中的漫射表面物体的非遮蔽和遮蔽图像的比较。
最后,为了捕获漫射相互反射(例如图9的相互反射的图像)和阴影,相互反射漫射转移可以定义为TDI(Lp)=TDS(Lp)+(ρp/π)∫L-p(s)HNp(s)(1-Vp(s))ds]]>
其中Lp(s)是来自O自己本身的在s方向上的光。困难在于除非从无限远的源发出入射光,光Lp(s)仅仅在p上的给定的入射光是不被知的,因为Lp依赖于离p任意远处的点的退出光,并且本地照明在O上变化。假如在O上的照明变化较小,那么Lp是非常近似,就如同O被Lp在每个地方被照明。因而TDI线性地依赖Lp并且能被分解为两个投影函数的一个乘积,如同在前面的两种情况一个轻微依赖和一个几何依赖。
尽管预先计算的相互反射必须假设入射光在O上空间不变,更简单的遮蔽转移则不需要。区别在于遮蔽转移仅仅依赖在p上的入射照明,然而相互反射转移依赖在O上的许多点q≠p,其中Lq≠Lp。因此,只要入射光区域最终充分精细地被采样(在下节“入射光领域的空间采样”中讨论的),本地照明变化能被捕捉,且遮蔽转移将被纠正。
L的存在使得难以显式地表示相互反射的转移函数MpDI(s)。下面的“预先计算自转移”一节将讨论如何数值地计算它的投影系数。
2.2平滑转移平滑物体的自转移能被类似地定义,不过要将内核函数归纳为依赖(观察依赖)一个反射方向R,而不是一个(固定的)法线N。类似于以前的H内核,光自转移能将平滑反射模拟成内核G(s,R,r),其中标量r定义镜像反应的“光滑度”或宽广度。
三个相似的平滑转移函数非遮蔽、遮蔽和相互反射情形可以定义为TGU(Lp,R,r)=∫Lp(s)G(s,R,r)dsTGS(Lp,R,r)=∫Lp(s)G(s,R,r)Vp(s)dsTGI(Lp,R,r)=TGs(Lp)+∫Lp(s)G(s,R,r)(1-Vp(s))ds它们将在R方向上的标量光输出为一个Lp和R的函数,它们的量在预先计算时上都未知。因为转移不再是一个孤立的s函数,因此不能被简化为SH系数的一个简单矢量。
替代以R和r参数化标量转移,一个更有用的分解是转移入射光Lp(s)到转移光的一个完整球形(表示为L’p(s))。假设平滑内核G是关于R循环对称的,则L’p(s)能与G’r(z)=G(s,(0,0,1),r)卷积,并在R上计算而产生一个最终结果。
到L’p的转移现在表现为一个矩阵而非一个矢量。例如,平滑遮蔽转移能被定义为MpGS(Lp,s)=Lp(s)Vp(s).···(11)]]>
一个在Lp上的线性操作器,它的SH投影通过方程式(7)能被表现为对称矩阵Vp。甚至用非常平滑的照明,随着O的光滑度的增长,更多的SH波段被用于LpΦ;非正方形矩阵(例如25×9)将低频率照明映射到高频率的转移光在这些情况下是有效的。
预先计算光自转移的一个重要限制是影响TDI和TGI中的相互反射的O的材料属性(如反照率或光滑度)是运行时被“烘烤”到预先处理的转移并且不能改变。另一方面,这个较简单的没有相互反射的遮蔽转移允许运行时改变和/或在材料属性的O上的空间变化。假如阻碍或者光源侵入O的凸起外壳,则错误发生。O只能刚性地移动,不能变形或者相对于整体移动一个部分。也要记得对正确的相互反射需要假设O上的低照明变化。
最后,注意如上面定义的漫射转移在离开表面后产生光,因为当平滑转移产生光入射在表面时它已经被余弦加权的标准半球所卷积,并且被本地BRDF所卷积以产生最后的退出光。对平滑O,也可能烘烤入一个固定的BRDF,使在运行时不需要和G的卷积,除了灵活性的限制外。
图9举例说明了一个平滑表面物体的非遮蔽、遮蔽和相互反射图像。
3.预先计算自转移现在对照图2,通过作为发射器而使用在无限范围上的SH基础(模拟的“参考照明环境”),照明模拟器120(图1)预先计算在一个综合照明模拟200上的模型化物体的光自转移(也被称为“自转移预先计算”),该综合照明模拟200在一个物体O执行。此模拟由入射光L的未知球形的一个第n阶SH参数化;即,n2个未知系数Li。尽管该模拟的结果可能通过使用SH基础函数yi(s)作为一个投影器而为每个Li独立地计算,同一时间计算它们将更有效。此参考照明环境(无限远球形L)将在运行时被实际的关于O,Lp的入射光替代。
模拟200开始于一个通路(“阴影通路”202),模拟从离开L并直接到达采样点p∈O的路径的直接阴影。在随后的通路(“相互反射通路”204),相互反射增加,表示从L开始的路径,在抵达p(Lp,LDp,LDDp,等)之前L在O反弹许多次。在每条通路上,能量聚积在p表面的每个采样点上。大型发射器(即,低频率的SH基础)使得聚集比投射式更新更有效。
为了捕捉在采样点p∈O上的方向范围,模拟产生一个巨大的(10k-30k)、准随机方向集合{Sd},Sd∈S。此模拟也为在每个方向Sd上的所有的SH基础函数预先计算计算。这个Sd方向被组织分层空间中,该分层空间是通过用1->2对分来将一个初始的二十面体精炼成相同面积的球形三角形(1->4细分没有导致在和平面上一样的在球形上的相同面积的三角区)构成的。这个模拟使用6到8细分等级,创建512到2048个空间。每个空间在每个层次级别上包括在其内部的一个Sd表。
在第一或阴影路径202,对每个p∈O,模拟200连接(在211上)那些被物体自闭塞的从点p开始的方向。这模拟在半球上抛射出关于p的法线Np的阴影射线,使用层次去精选在半球外的方向。这个模拟使用一个闭塞位1-Vp(Sd)连接每个方向Sd,指出Sd是否在半球内并且和O再次相交(即,被O自遮蔽)。一个闭塞位也和分层空间相关联,指出任意一个在其内部的Sd是否在闭塞。自闭塞方向和空间都被连接以至于我们能够在它们上面执行进一步的相互反射通路;完全的非闭塞空间/采样仅仅接受从环境中来的直接光。
接着,在212上,模拟200为点p累积转移光。在漫射表面,在每个点p∈O,模拟还通过根据方程式(10)的SH投影Mp计算转移矢量。在平滑表面,模拟通过从方程式(11)上的SH投影Mp来计算转移矩阵。在任一情况中,结果代表被L参数化的在p上收集的光。用来计算转移的SH投影被在方向采样Sd上的数值累积所执行,使用如下的规则概括为一个积累的转移 上标0指反复数字。矢量Mp或矩阵Mp在每个点p上在阴影通路前被初始化为O,然后在每个p上将所有的Sd相加。这个规则通过使用漫射转移累积的方程式(1)以及平滑转移累积的方程式(7)而得到。
根据图7所示,随后的相互反射通路204穿过具有闭塞位设置的空间,该闭塞位在阴影通路累积在221上的相互反射转移期间设置。替代阴影射线的,模拟发射在O上的从退出照明上返回转移的射线。如果射线(p,Sd)和另外点q∈O(其中q最靠近p)相交,我们在方向-Sd中采样从q上退出的光。下面的更新规则被使用,其中的上标b是反弹通路重复
如阴影通路202上所示,在方向Sd上,在积聚转移之前通过初始化转移矢量或矩阵为0来开始相互反射通路204。漫射规则起源于TDI的定义和方程式(1);平滑规则从TGI的定义和方程式(6)和(7)中取得。在平滑转移定义中,中间因子代表来自之前的弹起通路,b-1,从q发出的返回到p的光。由于Mq存储入射光,它必须在q上与O的BRDF相卷积来获取在-Sd方向上的退出光,在k上产生一个总和。ak是第k次的卷积系数,由单个索引符号表示。“反射”符号简单地反映关于它的第二的第一矢量参数。观察方程式(7)暗示了(Mp)ij是为被遮蔽平滑转移的一个对称矩阵,因为它由两个球形函数乘积组成;对于相互反射平滑转移而言是不正确的。
如230所示,相互反射通路204重复,直到符合一个结束标准,例如给定通路的总能量落到一个重要的极限之下时。对于典型的物质,相互反射消减十分快速。随后来自所有弹起通路的转移总和考虑相互反射。
或者,这个模拟的一个简单的增强允许在O中的像镜子一样的表面。模拟不记录在类似表面的转移。替代的,撞击镜面的射线总是反射并且随后传播直到抵达非镜面。因而,连续反复通路能被表示为(L[S]*p,L[S]*D[S]*p,L[S]*D[S]*D[S]*p,等),其中D是一个漫射或平滑弹起,而S是一个镜像弹起。它捕捉到漫射或者平滑接收器上的焦散线,来动态的反应照明变化。
4.光转移的运行时刻演示刚描述的模拟200(图2)提供在物体表面上的许多点p上捕捉光转移的一个模块,表现为矢量或者矩阵。现在参考图3,实时演示引擎140(图1)随后在一个运行时过程300中使用此模块,在一个选择照明环境和观察方向上的物体实时图像的演示过程中计算物体的自转移光。图4和图5分别的根据用作漫射和平滑表面的运行时过程300来分别地阐述过程流。
在过程300中,演示引擎140在运行时执行下列动作在310,根据SH基础在一个或多个O附近的采样点Pi上计算入射光{Lpi};在320中,旋转这些Lpi到O的坐标结构并且混合它们(如下)来产生一个在O上的入射光Lp的一个域,而在330-390中,在O上的每个点p上对(Lp)i执行一个线性变化来获得退出光。在动作350上,此线性变化是漫射表面的与(Mp)i的一个点积(方程式(8)),或在动作360上,是光滑表面的与(Mp)y的一个矩阵-矢量乘法(方程式(9))。平滑表面有进一步动作370和380,其中从乘法360上得到的光矢量与在p上O的BRDF卷积,随后在观察依赖的反射方向R上被评价。
在动作310上,演示引擎140可以装入一个预先计算环境映射,评价软件中的分析照明模块,或者使用图形硬件来采样光,如同对选择照明环境的入射光的表示。动作320的旋转在第1节球形谐函数回顾中叙述,它对每个物体执行一次,而不是对每个p。旋转被执行,因为转移是使用对O的一个公共坐标系来存储的。假如O刚性地移动,相比较旋转O的许多转移函数,在Lpi上旋转少数光采样使得与O排列将更有效。
对于漫射表面,动作350的一个简单实现是存储每个顶点的转移矢量和执行在一个顶点遮蔽物中的点乘。这个转移矢量也能够被存储在结构映射中,而不是每个顶点,并使用一个像素遮来计算。由于系数是有符号的数,不总是在[-1,1]范围内的,DirectX 8.1像素遮蔽物(V1.4)或其OpenGL等同物(由ATI扩展的)能够被使用,因为他们提供[-8,8]的一个较大范围。在一个实现中,像素遮蔽物仅需要8个指令去执行点乘并且在常量寄存器中存储Lp的投影系数。
对于有色环境或者在O上扩散颜色的模拟,3个通路被执行,每个针对r,g,b通道中的一个执行单独的点乘。否则,一个通路就足够了。
对于平滑的自转移,从方程式(9)中的矩阵转换能在软件中被执行,因为在当前顶点或者像素遮蔽物中,转移矩阵可能太大而不能被操作。结果是(L’p)i,在O上的点p处转移光的SH系数。随后在一个像素遮蔽物中,卷积370能够用一个简单的为G的余弦幂(Phong凸瓣)内核执行,并计算在反射方向R上的结果。结果能被写成Σi=1n2αiGi*(Σj=1n2(Mp)ij(Lp)j)yi(R)···(12)]]>高到第5阶的SH映射能在当前的图形硬件中被计算。
4.1入射光域的空间采样对于动态采样入射光的一个简单并且有效的方法是在O的中心点上采样入射光。为了处理在O上的局部照明变化,一个更精确的技术在多个点上采样入射光。作为一个预处理,给定了输入所需数目的点,使用ICP(重复最近点)算法就可以得到一组好的采样点(参照,Linde,Y,Buzo,A,和Gray,R,用于矢量量子设计的一个算法,IEEE通讯学报COM-28,1980,84-95)。这产生O附近的、在O上均匀分布的一组有代表性的点Pi,在运行时可以在这些点处采样入射光。演示引擎140还可以预先计算在O上每个p点处的系数,该计算混合来自结果采样的光球Lpi的每一个的贡献从而产生在O上的一个入射光域,以前被表示为Lp。
图11描述通过在一个单点、ICP点和多重采样中采样入射光并用图3的运行时过程300演示所得到的图像。
4.2在图形硬件上采样SH光在一个动态场景中,图形硬件被有效地用来捕捉光采样{Lpi}。为此,根据对应于立体映射球形参数的6个面的每个Pi演示6个图像。O本身必须从这些演示中被除去。使用方程式(1)中的积分,立体映射图像被映射到他们的SH系数上。
更有效的,为被微分实角加权的基础函数预先计算结构,Blm(s)=ylm(s)ds(s),]]>每一个都在s的立体映射参数上被计算。随后这个结果积分变成结构Blm(s)与捕捉的采样Lp(s)上的一个简单的点积。
理想的,此计算能在图形硬件上被执行。可选择的,由于精确性和在硬件上无法作内积的原因,采样光图像可以被回读并且随后在软件中投影。在这种情况下,尽可能地减小回读图像的分辨率将是有帮助的。
低阶的SH映射用非常低的解析度的立体映射来计算,假设它们被准确的带限。例如,已经带限到第6阶的球形信号能被用6个4×4图像来投影,这些图像具有大约0.3%的普通情况平方误差和大约1%最差情况平方误差,其中通过假设单位功率信号而规范化误差(即,在球形上的平方积分为1的信号)。(更精确地,普通情况误差是在参考的和重建的信号间的平方积分差别,所有单元功率信号的平均。最差情况误差是相同的积分错误,不过是对于最差情况单元功率信号。)对于6×8×8映射,此错误减少到0.003%的平均数和0.02%的最差情况。不幸的是,典型信号不是球形带限的。另一个分析显示,假定在采样的2D图像上连续双线性重建,使用6×8×8图像的第6阶的映射产生0.7%和0.2%的平均和最差情况平方误差,而6×16×16时产生0.2%和0.5%的误差。
在一个说明性执行中,从硬件中析取6×16×16图像。虽然在点采样演示中总是正确的,2D图像的混淆现象仍就是一个问题,因为以上的分析使用从点采样中的双线性重建作为参照。为了减少混淆现象,立体映射图像能在每个维度上被超级采样(例如,通过一个因数2),在回读和投影之前在硬件上执行一个盒式过滤大量抽取。基础函数结构也被超级采样,并作为一个预先处理以一个相同的方法进行大量抽取。作为一个光采样,包括回读和SH映射,此说明性的执行在一个具有ATI Radeon 8500的PIII-933电脑上花费大约1.16毫秒。
4.3体积模型的自转移在体积数据上的自转移使用与表面相同的框架。这个得到的预先计算的模型允许对照明进行运行时的改变,伴随着在任何低频率照明环境下的正确遮蔽和相互反射。图12举例说明一个云模型的图像,对该图像使用体积自转移,以运行时过程300的一个体积自转移变化(此后描述)来捕获云模型对它本身遮蔽和分散光。
伴随表面转移,一个预处理步骤使用SH基础函数作为发射器模拟在体积上的光亮。对于没有相互反射的遮蔽转移(即,直接遮蔽),模拟从发射器聚集能量到体积的每个体像素p,被此穿过体积的通路衰减,在方向Sd上所需的数值积分能被表示为(Mp)i0+=A(p→p+Dsd)yi(sd)]]>其中A(p->q)是沿着路径从p到q的通路的体积综合衰减,并且D是直到射线(p,Sd)退出立体的距离。为了包括相互反射,模拟横贯每个体像素p并且沿着随机方向Sd向前分散它的转移。此转移沿着Sd对所有体像素q沉淀直到退出体积,使用规则(Mq)ib+=A(p→q)(Mp)ib-1]]>在体积上的更多的通路产生进一步的非直接反弹。
演示通过传统方式被执行按从后到前的顺序描绘3D体积上的片断,采用alpha合成来考虑透明性。每个片段是包含转移矢量的采样的2D图像。一个像素阴影物计算照明系数和需要遮蔽每个片断的转移矢量之间的点积。
5.光的邻近转移邻近转移相对于参数化的低频照明来预先计算一个物体O对它邻近环境的影响。图13举例说明一个悬挂滑翔投射软阴影到用一个模拟200(图2)和运行时演示过程300(图3)的一个邻近转移变化(随后描述)捕获的一个邻近波形领域的图像。传送模拟和在第3节预先计算自转移中的自转移的模拟是相同的,不过在一个围绕O的3D空间点内发生,而不是在它上面。在运行时,一个任意的接收者R能放置在这个体积中去捕捉阴影、反射和O在预先不知道R的情况下投射到R上的焦散线。例如,一个移动汽车O能在一个R区域上投射阴影。投射阴影和照明也能响应照明改变;例如,在R上移动光移动软阴影。这个通过考虑平滑转移和允许动态照明来归纳光的体积(例如,参见Greger,G,Shirley,P,Hubbard,P,和Greenberg,D,发光体积,IEEE计算机图形和应用,6(11)21-29,1986)。
由于在预先计算步骤中,R是未知的,O的邻近体积存储一个转移矩阵而不是一个矢量。这个甚至在漫射接收者中也是正确的,因为预先不知道R的法线。
在一个执行中,模拟器预先计算包围O的在一个简单的3D网格中每个点上的转移矩阵Mp。在运行时,演示引擎在体积中的每个点上在软件中从方程式(9)执行矩阵变换并上载结果到图形硬件。结果是一个包括应用于R的转移光(L’p)i的系数的一个体积结构。
随后,在一个像素阴影物中,这个转移光被用来照明接收者。一个漫射接收者通过使用方程式(6)用余弦加权的半球H*来卷积这个光,并且随后在R的法线矢量上计算结果的SH投影。平滑接收者执行方程式(12)。
接收者预先计算自转移,带来了O和R不共享一个公共坐标系的困难。因此,两个物体的转移采样的密集组中的一个必须动态的旋转以和另外一个排列。尽管它的复杂性是O(n4),和在方程式(9)中执行的矩阵转换的复杂性是一样的,较高阶投影的旋转比那个操作更昂贵。提高硬件将迅速解决这个困难。
相比较于自转移,邻近转移产生一些附加的近似误差。从多个邻近转移物体投射阴影或光到相同的接收者是很难来结合的。不是因为O或者R而存在的局部照明变化也是一个问题;穿过O的整个邻近区的照明必须是相当稳定的以便提供精确的结果。特别的,例如丢失阴影的误差将在O和R旁边的物体强制进入O的邻近区时出现。O的邻近区必须也是足够大的,以便包围任意可能投射在R上的投射阴影或光。然而,根据前面方法,邻近转移捕捉作用不可能实时获取。
6.计算环境图6举例说明一个通用合适计算环境(600)的例子,这里的说明性实施例可能在该环境中被执行。这个计算环境(600)不打算建议对本发明使用范围或功能的任何限制,因为当前发明可能在不同的通用或专用计算环境中实现。
如图6所示,计算环境(600)包括至少一个处理单元(610)和存储器(620)。在图6中,这个最基础的配置(630)包括在虚线内。处理单元(610)执行计算可执行指令,并且可能是一个实际或虚拟处理器。在一个多处理系统中,多处理单元执行计算可执行指令来提高处理能力。存储器(620)可以是易失性的存储器(例如,寄存器、缓冲器,随机存取存储器等)、非易失性的存储器(例如,只读存储器,电可擦除只读存储器,闪速存储器等)或这两个的一些结合。存储器(620)存储实现具有光自转移的图形图像演示的软件(680)。
一个计算环境可以具有附加特征,例如,计算环境(600)包括储存器(640),一个或多个输入设备(650),一个或多个输出设备(660),以及一个或多个通讯连接(670)。一个互联机构(未显示),例如总线、控制器或计算环境(600)组件的网络互连。典型的,操作系统软件(未显示)提供一个在计算环境(600)中运行其它软件的操作环境,并协调计算环境(600)的组件的活动。如同已经提及的,计算环境期望包括图形处理硬件和软件,例如DirectX和OpenGL函数库,和ATI Radeon或Nvidia GeForce视频卡。
储存器(640)可能为可移动的或不可移动的,包括磁盘、磁带或盒式磁带,CD-ROM,CD-RW,DVD,或任何其他能被用来存储信息和能在计算环境(600)中被访问的介质。存储器(640)存储软件(680),该软件执行图像演示系统(图1)的指令。
输入设备(650)可能是一个可接触的输入设备,例如键盘、鼠标、手写笔或轨迹球,一个语音输入设备,一个扫描设备,或其他提供输入到计算环境(600)的设备。对于声音,输入设备(650)可以是一个声卡或相似的接受模拟或数字格式的音频输入设备。输出设备(660)可能是一个显示器,打印机,扬声器或提供来自计算环境(600)的输出的其他设备。
通讯连接(670)使在一个通讯介质到另外一个计算实体上的通讯成为可能。通讯介质传送诸如计算机可执行指令、压缩音频或视频信息信号,或在一个已调制的数字信号中的其他数据之类的信息。一个已调制数据信号是这样一个信号,它的一个或更多的特征随着在信号中的信息而设置或改变。作为例子,而不是限制,通讯媒体包括通过电、光、射频(RF)、红外、声或其他载体执行的有线或无线技术。
此发明可以在计算机可读媒体的普通环境中描述。计算机可读媒体是任意可用媒体,它能够在计算环境中被访问。作为例子,而不是限制,对于计算环境(600),计算机可读媒体包括存储器(620)、储存器(640)、通讯介质和上面的任意结合。
此发明可以在计算机可执行指令的普通环境中描述,例如包括在程序模块中的那些,在一计算环境中在一个目标真实或虚拟处理器上执行。通常地,程序模块包括执行特殊任务或实现特殊抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。此程序模块的功能可以按照不同实施例中所期望的在程序模块中被结合或分开。程序模块的计算机可执行指令可以在一个本地或分布式计算环境中被执行。
为了陈述,详细描述使用类似“确定”,“得到”,“调节”,和“应用”等术语去描述在一个计算环境中的计算操作。这些术语是对计算机执行操作的高度抽象,不能和人所执行的行为混淆。对应于这些术语的实际计算机操作依据执行而变化。
参照一个说明性的实施例已经描述和举例说明的本发明的原理,应该意识到说明性的实施例能够在不脱离此原则的情况下在结构和细节上进行更改。必须理解在这里描述的程序、处理或方法不涉及或限制于任何特殊计算环境类型,除非另外指明。各种通用或专用计算环境的不同类型可能被使用或执行根据在此处描述的教导的操作。在软件中显示的说明性实施例的诸单元可能在硬件上被实现,反之亦然。
考虑到本发明的原则可能被引用于许多可能的实施例上,我们要求将所有可能在下面的权利要求及其等效范围中的所有实施例都视为我们的发明。
权利要求
1.一种实时地演示一个几何模型化物体平面的计算机图形图像的计算机执行方法,方法包括为照明环境中的至少一个采样点计算源照明数据;根据为模型化物体的表面上多个位置预先计算的光转移数据,对被计算的源照明数据执行一个线性转换,来为一个观察方向获取从这些位置上退出光的数据,表示光响应的光转移数据包括在参考低频照明环境下在到源光的位置上的模型化物体的全局传送作用;根据从位置的退出光来产生在照明环境下具有遮蔽的观察方向上的模型化物体的一个图像。
2.如权利要求1所述的方法,其特征在于,在模型化物体的漫射表面情况下,执行线性转换包括计算源光矢量和一个预先计算的光转移矢量的点乘,源光矢量表示在一个采样点的源光和预先计算的光转移矢量表示在模型化物体的漫射表面上一个位置处的光响应。
3.如权利要求1所述的方法,其特征在于,在模型化物体表面平滑的情况下,执行线性转换包括为照明环境中的至少一个采样点计算源光矢量;作为源光矢量的一个函数确定从该位置的一个观察方向上的退出光、表示该位置的光响应的数据以及该位置的一个双向反射比分布函数。
4.如权利要求1所述的方法,其特征在于,在模型化物体的表面平滑的情况下,执行线性转换包括为照明环境中的至少一个采样点计算源光矢量;根据源光矢量和表示该位置的光响应的数据确定该位置的转移光;和根据该位置的转移光和一个双向反射比分布函数确定从该位置一个观察方向上的退出光。
5.如权利要求1所述的方法,其特征在于,在模型化物体的表面平滑情况下,执行线性转换包括执行源光矢量和预先计算的光转移矩阵的一个矩阵-矢量乘法,该源光矢量表示在采样点的源光,该光转移矩阵表示该模型化物体平滑表面上一个位置处的光响应;将矩阵-矢量相乘的结果与在模型化物体平滑表面上该位置的一个双向反射比分布函数进行卷积;和估计一个观察方向上的卷积结果。
6.一种实时地演示在一个几何模型化物体的一个漫射平面的计算机图形图像的计算机执行方法,方法包括在一个照明环境下投射光到一个球形谐函数基础来产生对于模型化物体的至少一个位置的一个照明系数矢量;计算所述照明系数矢量与漫射平面上的至少一个位置处的预先计算的光转移矢量的点乘,来产生对于照明环境和观察方向的模型化物体漫射平面上至少一个位置处的退出光,预先计算的光转移矢量表示光响应,光响应包括在参考低频照明环境下,在到源光的至少一个位置处的漫射表面的全局传送作用;计算在至少一个位置上的模型化物体的漫射表面的遮蔽;产生具有遮蔽的模型化物体的漫射表面的一个图像。
7.一种实时地演示在一个几何模型物体上的一个平滑平面的计算机图形图像的计算机执行方法,方法包括在一个照明环境下投射光到一个球形谐函数基础来产生对于模型化物体的至少一个位置的一个照明系数矢量;将从平滑平面上至少一个位置的一个观察方向的退出光确定为一个照明系数矢量的函数,一个预先计算的光转移矩阵数据表示光响应,包括在一个参考低频照明环境下到源光的在至少一个位置上的平滑表面的全局传送作用;计算在至少一个位置上的模型化物体的平滑表面的遮蔽;产生具有遮蔽的模型化物体的平滑表面的一个图像。
8.如权利要求7所述的方法,其特征在于,为一个观察方向确定退出光包括为平滑表面上至少一个位置执行照明系数矢量和预先计算的光转移矩阵的一个矩阵-矢量乘法,预先计算的光转移矩阵表示光响应,包括在参考低频照明环境下到源光的在至少一个位置上的平滑表面的全局传送作用。将矩阵-矢量相乘的结果与在模型化物体平滑表面上该位置的一个双向反射比分布函数进行卷积;和计算一个观察方向上的卷积结果。
9.如权利要求7所述的方法,其特征在于,确定一个观察方向上的退出光包括根据所述照明系数矢量与光滑表面上至少一个位置处的预先计算光转移矩阵的矩阵-矢量乘积计算退出光,预先计算光转移矩阵表示光响应,包括在参考低频照明环境下到源光的在至少一个位置上的平滑表面的全局传送作用。
10.一个体积模型的计算机图形图像实时演示的计算机执行方法,该方法包括为照明环境中至少一个采样点计算源光数据;根据为体积模型的多个体积元素预先计算的光转移数据,对被计算的源照明数据执行一个线性转换,来为一个观察方向获取来自这些体积元素的退出光的数据,光转移数据表示光响应,所述光响应包括在参考低频照明环境下这些位置上到源光的体积模型的全局传送作用;根据来自这些位置的退出光在观察方向上产生具有遮蔽的照明环境中的模型化物体的一个图像。
11.如权利要求10所述的方法包括作为一个预先计算,对于一个被参数化成入射光球体的球形谐函数基础投影的参考低频照明环境,执行体积上的一个全局照明模拟,这个投影具有球形谐函数系数,这个模拟计算体积模型的多个体积元素的光转移,这个模拟引入了体积模型的自遮蔽和相互反射;和记录多个体积元素的全局照明模拟,作为源光的球形谐函数系数的一个线性转换来形成光转移数据。
12.如权利要求11所述的方法,其特征在于,包括执行在体积模型上的多通路中的全局照明模拟;在第一遮蔽通路中,模拟参考低频照明环境中体积模型多个体积元素的直接照明,包括沿着通过该体积模型的路径的衰减;在随后的相互反射通路中,模拟体积模型的其他体积元素对体积模型的这些体积元素的相互反射照明,包括通过该体积模型的衰减;重复相互反射通路直到符合一个标准;和对一个采样点,将第一遮蔽通路和随后的相互反射通路中积累的光转移数据相加来产生该采样点的总光转移。
13.一种在有模型化物体的场景中的模型化接收者的计算机图形图像的实时演示的计算机执行方法,该方法包括为照明环境中至少一个采样点计算源光数据;根据为模型化物体周围邻近空间中多个采样点预先计算的光邻近转移数据,执行对计算的源光数据的线性转换,来获得模型化接收者在这些位置处一个观察方向上光转移数据,光转移数据表示光响应,该光响应包括在参考低频照明环境下在模型化物体周围邻近空间中各采样点处该模型化物体对源光的全局传送作用;根据来自这些位置的转移光产生模型化接收者在照明环境中该观察方向上带有遮蔽的一个图像。
14.如权利要求13所述的方法,其特征在于,执行线性转换的动作包括执行一个动态旋转来使得采样点的一个坐标系方向和模型化接收者坐标系方向相一致。
15.如权利要求13所述的方法,其特征在于,包括作为一个预先计算,对于一个被参数化成源光球体的球形谐函数基础投影的参考低频照明环境,执行模型化物体的一个全局照明模拟,这个投影具有球形谐函数系数,这个模拟计算模型化物体周围邻近空间中多个采样点的光转移,这个模拟引入了该模型化物体的遮蔽和反射;和记录多个采样点的全局照明模拟,作为源光的球形谐函数系数的一个线性转换来形成光转移数据。
16.如权利要求15所述的方法,其特征在于,为多个采样点记录全局照明模拟,作为源光的球形谐函数系数的一个线性转换所采用的形式是对于模型化物体周围3维栅格中的多个点的一个转移矩阵。
17.如权利要求15所述的方法,其特征在于,包括执行在多通路中的全局照明模拟;在第一遮蔽通路中,模拟参考低频照明环境中模型化物体周围邻近空间中多个采样点的直接照明,包括来自该模型化物体的遮蔽;在随后的反射通路中,模拟模型化物体对采样点的反射照明;重复相互反射通路直到符合一个标准;和对一个采样点,将第一遮蔽通路和随后的相互反射通路中积累的光转移数据相加来产生该采样点的总光转移。
全文摘要
在低频照明环境中的漫射和平滑物体的实时图像演示捕捉软阴影、相互反射和焦散线。作为一个预先处理,一个综合传送模拟器在物体表面创建函数,表示任意的转移,低频入射光到退出光,可是包括从物体到自己上面的类似遮蔽和相互反射的综合作用。在运行时刻,这些转移函数被应用在实际入射光。通过在每个帧上接近物体的采样来处理动态的、本地的照明;此物体也能够通过照明固定地旋转,反之亦然。照明和转移函数通过使用低次序球形谐波来表示。穿过一个预处理物体从一个动态照明环境到空间上邻近点的光转移函数还允许投射软阴影和从固定移动投射到任意、动态接收者的焦散线。
文档编号G06T15/80GK1991916SQ20071000447
公开日2007年7月4日 申请日期2003年3月21日 优先权日2002年3月21日
发明者P·P·J·斯隆, J·M·辛德, J·阔兹 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1