专利名称:外壳纹理函数的制作方法
技术领域:
本发明涉及确定由呈现出表面介孔结构(mesostructure)、半透明性和/或体积纹理的变化的材质组成的物体的有效、真实建模和渲染的纹理函数。
(2)背景技术计算机图形学的上下文中,真实视觉虚拟物体的生成要考虑物体表面和物体体积内光线的相互作用。这种光和物体的相互作用也分别称为反射和散射。在考虑时,反射和散射产生视觉效应,如提高所渲染的物体的图像的真实感的阴影、遮蔽、相互反射、半透明性和精细比例的轮廓。光和物体的相互作用在物理上由物体的形状和材质属性支配。
以前将材质属性(例如,颜色、表面正常微扰、高度场位移和体积几何结构)映射到表面以对精细比例的表面几何结构(称为介孔结构,mesostructure)进行建模及其与照明相互作用的尝试,无法考虑从物体材质中的光传输引起的各种外观效应。由于在实际世界中的许多材质在某种程度上都是半透明的,这一缺陷非常重要。因此,物体的表面外观不是真实的。
另一方面,将材质属性映射到确实考虑半透明性的表面的进一步尝试为关于所需的计算开销问题所困扰。即,通过模拟穿过参与介质的辐射传输的半透明物体详细节渲染在进行渲染时需要不切实际的数据存储量或非常大的计算量。
(3)发明内容在此描述外壳纹理函数。
尤其,提供了至少用于对表面上的介孔结构阴影、遮蔽、相互反射和轮廓以及非均匀体积中的次表面散射中的任一个进行建模的技术。在此所描述的技术至少包括,获取材质样本的材质参数、确定材质样本的辐照度分布值、将材质样本合成到物体的网孔。然后,所合成的物体可以用多种渲染技术之一来渲染。
(4)
参照附图对本发明进行详细描述。
图1示出用于实现使用在此所描述的纹理函数的诸示范实施例的计算机图形技术的计算设备。
图2A示出根据一个示范实施例可以计算其STF的材质样本。
图2B示出要根据在此所描述的STF相关技术的诸示范实施例进行建模和渲染的样本物体。
图3是用于根据在此所描述的示范实施例进行建模和渲染材质的处理流程的例子。
图4A示出一个STF基体积模型样本的示范实施例。
图4B示出例示根据一个示范实施例的体积材质中的光传输的模型。
图5A-5D例示根据一个示范实施例将材质外壳(次表面层)合成到物体上的透视图。
图6A-6B示出外壳的不同透视图,用于例示根据一个示范实施例的外壳再采样。
图7例示一个示范实施例所利用的辐射估算的几何结构。
图8例示根据一个示范实施例的阴影边界处辐照度修正的用法。
图9例示个可以用于实现在此所描述的技术的通用计算机网络环境的例子。
(5)具体实施方式
下面描述用于建模和渲染表面上的介孔结构阴影、遮蔽、相互反射和轮廓以及非均匀体积中的次表面散射的诸技术。具体地,物体表示包括体积外壳层和内核。可以通过使用体积材质样本的纹理合成来创建外壳,其中该材质样本具有介孔结构和材质非均匀性;此外,由于来自体积内部的材质非均匀性对外观具有相对微弱的影响,因此可以将内核建模为均匀材质。
图1示出具有处理组件107的计算设备105的例子,该处理组件107确定物体的材质样本的至少一个外壳纹理函数,并在通过将材质样本纹理合成到物体的网孔形成该物体的物体外壳之后进一步渲染该物体。
计算设备105可以是多种传统计算设备中的任何一种,如台式个人计算机(PC)。或者,计算设备105可以是网络关联设备,包括但不限于,可以通过有线和/或无线链路与网络110进行通信的膝上型计算机、个人数字助理(PDA)、智能电话等等。参照图9更详细地描述客户机设备105的一个示范数据源115和120中的任何一个是可以给计算设备105提供多种数据和/或功能中的任何一种的服务器设备。数据源115和120可以是服务器设备,如网络服务器或应用程序服务器。网络服务器是通过计算网络110将内容传送给计算设备105的服务器设备。这类内容可以包括以超文本标记语言(HTML)编码的web内容,也可以包含JavaScript代码或其他命令。应该理解,数据源115和120中的任何一个可以在作为万维网(例如,其中网络110包括因特网)的一部分的其他网络,以及不是万维网的一部分的其他网络,如内联网中使用。
为使用技术107在计算设备105上有效地渲染详细的物体模型,在此描述了一种物体外壳的纹理函数(以下称为“STF”)。STF表示外壳体元相对于入射照明方向的辐照度分布。在此所述的外壳体元是指需要建模和/或渲染的物体外壳表面附近的三维(“3-D”)像素体积。STF允许快速确定物体材质样本体积中的每个体元的辐射。
图2A示出一个用于在上下文中讨论STF的材质样本200的例子。更具体地,STF用来表示所有入射照明方向上材质样本200中诸点的辐照度分布。在计算上,材质样本200可以根据STF基体积Vb来建模。STF基体积Vb包含规则3D网格上的nxxnyxnz体元数组,此处nxxny用于计算材质样本200参数空间的大小,nz定义STF的厚度。n的值通常预先确定。介孔结构用STF基体积Vb来表示,因此Vb的体元可以位于次表面层205或材质样本200周围的自由空间207中。
具体地,对材质样本200的每个次表面体元x,存储下列材质特性消光系数κ(x)、反照率α(x)(它是材质样本200表面所反射的入射辐射的一部分)以及相位函数f(x,ωl,ω),此处ω和ωl分别是入射和出射光线方向。材质的散射系数σs与消光系数和反照率相关,σs,=ακ,吸收系数被定义为σs=κ-σs。消光系数κ(x)和反照率α(x)描述参与介质的辐射传输特性,它确定了体元的半透明性和色彩特性。指示体元表面的标志也被包括在内,并且当该标志为开时,曲面法线和相对折射率通常也已经预先确定。
STF是一个5D函数,它通过指定单次散射分量Is(x,ωl)和多次散射分量Im(x,ωl)来定义,此处x表示Vb中的当前位置,ωl是入射光线方向。上述STF值、单次散射分量Is(x,ωl)和多次散射分量Im(x,ωl)允许快速计算在Vb的任意点x和任意方向ω的辐射L(x,ω)。根据参与介质中的光传输方程,辐射L(x,ω)被表示成(ω)L(x,ω)=σa(x)Le(x,ω)+σs(x)Li(x,ω)-κ(x)L(x,ω)Le(x,ω)是来自物体的辐射,Li(x,ω)是内散射(in-scatter)的辐射,即,在物体体积中散射的辐射。辐射L(x,ω)可以使用已知的射线行进(raymarching)算法来计算,该算法中开销最大的计算是内散射辐射,它可以使用以体积光子映射来计算Li(x,ω)=1σs(x)Σp=1nf(x,ωp,ω)ΔΦp(x,ωp)ΔV]]>具体来说,辐射是对微分体积ΔV中的n个光子求和,ΔФp(x,ωp)是来自入射方向的一个光子携带的通量。通量ΔФp(x,ωp)被划分为单次散射和多次散射项,因为单次散射可以通过射线跟踪来渲染,而穿过均匀介质的多次散射可以用偶极子扩散近似来模拟。根据在此描述的诸示范实施例,由于材质样本是非均匀的,因此不能使用偶极子近似,然而确定充分利用了多次散射可以被认为实质上是均匀的这一特性。对于均匀的多次散射,Li(x,ω)的表达式可以写成f(x,ωl,ω)=ΣsΔΦp(x,ω1)σs(x)ΔV+14πΣmΔΦp(x,ωp)σsΔV]]>∑s和∑m分别是对单次散射光子和多次散射光子的求和。只有在光子实际上被散射时,∑m中的光子才被包含在上述计算中。单次散射光子的入射方向被认为是光线方向ωl。尽管假定多次散射是无向的,但由于影响到达每个表面点的直接照明的表面介孔结构,它仍然是光线方向ωl的函数。内散射的辐射被表示成Li(x,ω)=f(x,ωl,ω)Is(x,ω1)+14πIm(x,ωl)]]>其中Is(x,ωl)=ΣsΔΦp(x,ωl)σs(x)ΔV,]]>Im(x,ωl)=ΣmΔΦp(x,ωp)σs(x)ΔV]]>如前所述,STF表示对所有入射照明方向的材质样本中诸点的辐照度分布。更具体地,单次散射辐照度Is(x,ωl)和多次散射辐照度Im(x,ωl)表示当入射光线来自方向ωl时x处的体元辐照度。因此,Is(x,ωl)和Im(x,ωl)可以被预先计算,即在渲染之前计算为STF,其中STF是易于存储的5D函数。借助于STF,可以快速地计算内散射的辐射L1(x,ωl),并且上述方程(ω)L(x,ω)=σa(x)Le(x,ω)+σs(x)Li(x,ω)-κ(x)L(x,ω)可以通过在材质样本求积分来计算辐射L(x,ω)。
本实施例的计算中,在对相应物体作任何渲染之前预先计算并存储5DSTF子函数。尽管其他可选的实施例可以包括对材质样本反射场的计算,但是考虑到反射场是入射照明4D场和辐射4D场的8D函数这一事实,因此存储开销相当大。另一方面,通过只考虑定向光线,照度就变成2D函数,且反射场减少为6D函数,但仍然需要知道介孔结构几何结构以准确地渲染轮廓。尽管预先计算反射场用于所记录的介孔结构几何结构可以减少运行时计算,但额外查看维度的附加数据(这些数据需要密集采样)是很大量的。
另一方面,5D STF自然地与体积介孔结构结合起来,尽管并不清楚该如何将反射场和(非高度场的)介孔结构结合起来。由于具有低维纹理函数的这类实际优点,且由于来自表面体元的辐射可以非常简单地从辐照度数据计算出来,因此在本实施例STF表示中,体元辐照度是预先计算的。对剩下的计算,其计算开销不大,于是在运行时执行。
为根据示范实施例预先计算组成5D STF的辐照度函数,首先确定STF基体积Vb中的表面介孔结构和散射特性。通过扫描实际体积的材质特性并测量来自实际表面的介孔结构,可作出这样的确定。通过计算和存储所采样光线方向上每个体元的单次散射和多次散射辐照度,从基体积构造STF,如下所述。
图2B示出要根据在此所描述的STF相关技术的示范实施例进行建模和渲染的样本物体210。特别地,图2B示出包括两个部分的物体210,这两个部分是具有介孔结构的非均匀的外壳层215和均匀的内核220。当光线入射到物体210上时,来自物体200的内核220中的光线经过显著的散射,使得最终的辐射呈现出物体210的材质特性的平均效应。为利用这一特性,根据一个示范实施例,内核220被建模为均匀材质,以使得可以对其快速计算辐射。相反,外壳层215上的体元处于物体表面附近,因此外壳层215材质特性的变化对物体200的外观有相对较大的影响。
图3提供参照图2A中的物体200进行建模和渲染处理的纵览300。图3的处理考虑了表面外壳205的介孔结构和内核220的非均匀性的结合,这样的组合会导致光线在外壳215中的复杂散射。具体地,将会在下面更详细地描述的处理纵览300包括方框305,它涉及获取(例如)材质样本210的纹理样本参数的至少一个进程或指令;方框310,它涉及确定材质样本210的STF的至少一个进程或指令;方框315,它涉及在物体200表面上合成纹理样本210的至少一个进程或指令;以及方框320,它涉及至少利用所确定的STF来渲染物体200的至少一个进程或指令。
对于方框305,使用被称为体积可视化(volume visualization)的体积建模和处理技术来生成STF基体积Vb。在此所描述的示范实施例可构想通过使用诸如计算断层照相法(CT)等体积成像技术来测量实际材质,或通过扫描-转换现有的3D几何模型,来获得Vb。
更具体地,为使用体积图像技术测量实际材质,可以使用体元分类并然后进行查表法来确定Vb。体元分类是一种用于确定所测量体积数据的每个体元中存在哪些材质的标准过程。可使用一可选的分类技术来确定特定体积类别中的体元材质,且对每种材质,其消光系数κ和反照率α可以在出版的测量表中获得。同一体元中的多种材质的消光系数和反照率根据它们在体元中的相对含量进行平均。位于介孔结构表面上的体元被标识为沿着最外面的等值面的那些体元。在STF基体积Vb中,使用二进制函数来指示介孔结构表面上的体元。
扫描-转换现有的3D几何模型包括将3D几何模型转换成体积数据。3D几何模型通常包括若干分量,每种分量与一种给定的材质相关联。当扫描-转换一个几何模型时,转换算法确定每个体元中存在哪一或哪些材质。对于所测量体积数据的情况,体元消光系数κ和反照率α可以从表中确定。
通常,所出版的测量表只提供单个反照率α值,但对于诸如有脉纹的大理石等某些材质,需要空间变化反照率影射α(x)。为获得反照率映射,使用固体纹理合成为物体内部生成体元颜色,这可以在程序性的基础、基于样本的基础或基于样本观察的基础上执行。程序性的方法较佳地适用于有限类型的纹理;基于样本的方法原则上较佳地适用于任何固体纹理,尽管这种方法可能需要固体纹理样本作为输入;基于样本观察的方法较佳地只适用于一些(例如,两种或三种)目标固体纹理的2D图像,并因此比较容易使用。然后,通过将体元颜色看作漫反射系数,可以将体元颜色转换成反照率α(x)。
均匀内核的散射特性可以根据偶极子扩散近似由内核表面特性确定。根据在此所描述的示范实施例,内核表面特性与外壳体元底层的表面特性即使不同,实质上也是相似的。
图4A示出基体积模型400的一个示范实施例,以例示根据图3的方框310通过材质样本中的光子映射的STF构造。具体地,对诸采样照明方向,使用基体积405的材质特性,计算基体积Vb(示出为基体积405)的每个体元x的STF辐照度值(由图4A的箭头图示)。即,对采样的照明方向ωl,可以使用用于参与介质中光子跟踪的已知算法中的至少一种变体来计算单次散射分量Is(x,ωl)和多次散射分量Im(x,ωl)。这类算法的一个例子由Jenson和Christensen在Proceedings of SIGGRAPH 1998第311-320页的Efficient Simulation of LightTransport in Scenes with Participating Media Using Photon Maps(参与介质场景中使用光子映射的光传输有效模拟)公开。根据本实施例,光子沿着光线方向ωl发出,然后,当光子从介孔结构表面反射并在物体内部散射时,评估所发出的光子对STF的贡献。由所映射的光子,根据下列方程对x处体元的诸STF分量进行求值Is(x,ωl)=ΣsΔΦp(x,ωl)σs(x)ΔV,]]>Im(x,ωl)=ΣmΔΦp(x,ωp)σs(x)ΔV]]>本实施例中,选择ΔV为半径等于一个体元的球体。
为避免STF采样中光子通过各边离开基体积的边界效应,基体积405可以由其他相同的体积405’(a)-(h)包围,如图4A所示。在图4A的示范实施例中,基体积被八个其他相同的体积405′(a)-(h)包围,但这个数量可以根据所考虑的计算能力和相应开销而改变。在该示范实施例中,基体积405可以被渲染为一一个贴片(tile),并具有比STF基体积散射平均自由路径的两倍更大的纹理尺寸nx,ny。由于基体积405可以是非均匀的,相应的散射平均自由路径被计算为组成基体积405的材质的加权平均。对基体积405大小的这一约束保证了基体积405周围八个相同的体积405′(a)-(h)可以为计算STF基体积中每个体元的STF提供足够大的体积邻域。基体积405的厚度nz被设置为大于最大介孔结构深度加上基体积405平均自由路径均值的三倍。这样选择nz保证了可以忽略来自均匀内核的单次散射的贡献。可以使用约束的固体纹理合成将大小不足的不可平铺基体积转换成较大的可平铺体积。
图4B示出一个例示基体积405中光子跟踪的模型。根据图4B的例子,根据用于本领域中所熟知的非偏振光的公式,光子与介孔结构表面相互作用,其中光子或者在表面反射,或者折射进入物体内部。因为在渲染阶段用射线跟踪来处理这种相互作用,所以反射离开表面点的光子不作记录。穿过物体内部传播的光子可以通过介质而不受影响,或者与介质相互作用。当光子在体元x处与介质相互作用时,如果光子是第一次与该介质相互作用,就将相互作用的贡献加到单次散射分量Is(x,ωl),例如在点410,否则就加到多次散射分量Im(x,ωl),例如在诸点415中的任意点,其中,表面反射被认为是相互作用。光子在位置x与介质相互作用的概率由下列累积概率密度函数确定p(x)=1-e-∫x0xκ(ξ)dξ]]>其中x0是光子折射进入物体内部的介孔结构表面点。方程中的积分用射线行进法来求值。如果光子与介质相互作用,则随机图形处理可以根据基于反照率α(x)的散射概率来判断光子是否被散射或吸收。被散射的光子的方向通过对相位函数f(x,ω’,ω)进行重要性采样来计算。
对一组离散的光线方向执行光子跟踪,其中这些光线方向对物体的上半球和下半球进行采样。对于每个光线方向ωl,跟踪大量光子,并且将这些光子对STF的贡献加到Is(x,ωl)和Im(x,ωl)。例如,一个示范实施例可以包括为每个RGB通道而跟踪的1000个光子。于是上半球按72=6×12个光线方向来采样。下半球可以同样地采样,因此由于逆光来自均匀内核,入射光线可以被认为是无向的多次散射。基于这一特性,对下半球所有方向的多次散射STF值进行平均,并记录为Im(x,ωb),此处ωb表示所有逆光方向。
因此,STF需要适中的存储量,这样了减少相关的计算开销。例如,具有96×96×10基体积的材质样本可以在73个光线方向上采样,在压缩前需要205MB的存储空间。对于压缩,使用利用矢量量化(VQ)的方案,然后使用熵编码,其中每一VQ码字是给定体元和照明方向的单次散射和多次散射辐照度颜色的6D矢量。对STF,这种方案可以产生48∶1的压缩比。
提供图5A-5D以例示根据图3的方框315的来自材质样本STF基体积Vb(图4A中示出为405)的材质外壳的合成。
更具体地,为形成外壳模型,基体积Vb被合成到物体的目标网孔上,使得该外壳中的每个点都被分配基体积Vb中的一纹理坐标。于是给每个外壳体元分配与其关联的基体积体元的STF值。
图5A示出材质样本的nxxnyxnz基体积405的材质外壳。对这一合成,基体积Vb405可以被视为nxxny个纹理元素(texel)的2D纹理T(x1,y1)。每个纹理元素T(x,y)由nz个体元{(xi,yj,z1),...,(xi,yj,znz)}及其材质特性的堆叠组成。使用已知算法将纹理T(x,y)合成到目标表面网孔上,例如发明人为Tong等人(以下称为“Tong”)、共同待批的美国专利申请第10/299,623号(于2002年11月9日提交)中所提出的算法,该专利申请在此引用作为参考。
图5B例示其中纹理元素是高维矢量的2D纹理,以例示Tong所述的用于将彩色纹理合成到表面上的技术。这一方法基于如下观察以局部比例,给定的高维纹理样本只包含少数的感觉上可区分的介孔结构和反射系数变化,称为纹理基元(texton)。高维纹理函数的纹理基元通过纹理基元分析或K-平均值(K-mean)聚合步骤来确定,然后在捕捉压缩表示中的纹理本质的2D纹理基元映射中进行编码。将2D纹理基元映射合成到目标网格上有效地确定了高维纹理的映射。计算成本类似于彩色纹理合成的计算成本,且可以使用k-相干性(k-coherence)搜索技术来加速。
对图5A中的基体积405,合成基于以下体元特性消光系数κ、反照率α和相位函数f(x,ω’,ω)。由于相位函数是ω‘和ω的函数,因此可以假设f(x,ω’,ω)=f(x,ω’·ω),即,f只依赖于x和相位角ω’·ω。根据这一假设,两个相位函数f(x,ω’·ω)和f(x’,ω’·ω)的相似性可以通过对点x和x’处的相位角进行密集采样来测量。为进一步简化,可以使用矩相似性关系,其中矩相似性关系允许改变介质散射特性而不会显著地影响光线分布。借助于此,散射系数σs(x)可以简化为σs′(x)=σs(x)(1-∫4πf(x,ω·ω′)(ω·ω′)dω′).]]>当光散射被强峰值前向散射(strongly-peaked forward scatter)时,该矩相似关系是有效近似,这可能是计算机图形学中所感兴趣的大多数半透明材质的情况。借助于上述简化,使用简化的消光系数κ′(x)=σ′s(x)+σα(x)和反照率α′(x)=σ′s(x)/κ′(x)执行材质外壳的合成。简化散射系数只是为了纹理合成这一目的,仍用原来的散射系数来计算STF。
图5C示出具有顶点v 515的目标网孔510的例子,在该顶点v 515上合成过程分配2D纹理坐标(xv,yv)。
图5D示出纹理域中沿着v处的曲面法线放置在顶点v下的物体外壳中的体元(xv,yv)的堆叠。即,通过沿着每个顶点v处的曲面法线放置nz个体元{(xv,yv,z1),...,(xv,yv,znz)}获得材质外壳520。以这种方式表示的材质外壳是在不规则网格上的一系列密集点。为方便后面的渲染运算,在规则网格上对这些点进行再采样。
图6A和6B提供外壳的不同透视图,以例示外壳再采样。更具体地,在规则网格上生成目标表面网孔的距离场d,网格间隔d与基体积体元Vb大小相等。如图6A所示,对规则网格上的每个采样点x,最近点vf605在网格上,距离d是vf605和x610之间的距离。x610的纹理坐标是(tu,tv,d/d0),其中(tu,tv)是最接近于vf605的网格顶点v615的纹理坐标。使用最近顶点的纹理坐标避免了内插计算,并提供非常接近的近似,这是因为,出于合成的目的,将网孔密集地再平铺,使得每个体元与表面上的一个顶点对应。
材质外壳只占有目标表面网孔附近的空间,因此即使是规则网格的多个采样点也没有对数据存储要求的显著影响。因此,通过使用分层空间数据结构,如八叉树和k-d树,可以获得空间效率,八叉树和k-d树是在计算机图形学领域中为人熟知的数据结构,因而在此不作描述。
图6B示出外壳体元的二层存储结构。更具体地,本示范实施例的实现利用了图6B的简单二层存储结构。(底层)叶结点对应于规则网格的采样点,并存储次表面层的数据。顶层结点包含8×8×8个叶结点。通过将材质外壳不占有的面积中的顶层结点设置为空值,获得空间效率。
对材质外壳中具有纹理坐标(tu,tv,d/d0)的采样点x,相应的材质特性是基体积中相应点x′=(tu,tv,d/d0)的那些材质特性。此外,x′处的单次散射和多次散射STF值被用作x处的单次散射和多次散射STF值。即,在材质外壳合成中,每个点x具有一体积邻域Nx′,其材质特性与基体积Vω中点x′周围的体积邻域Nx′的材质特性类似。对光厚介质和给定光线方向,多次散射辐照度对一个点的贡献由该点周围足够大的体积邻域的材质特性确定,相比之下,来自这一邻域之外的区域的贡献可以忽略不计。对单次散射,来自该邻域之外的光子可以给体元带来辐照度,但这样的光子很少,以致于它们的辐照度贡献确实可以忽略不计。
给外壳体元分配的STF值的有效性视邻域Nx,Nx′是否足够大到能够包含影响x,x′的辐照度的体元而定。体元相互影响的范围取决于材质特性。如前所述,这一范围可以被表示为材质散射平均自由路径的两倍。该邻域大小作为参数包括在纹理合成算法中,以保证使用了适当范围的邻域相似性。
邻域Nx,Nx的相似性也受扭曲Nx的形状的外壳曲率影响。在此所描述的实施例中,可以假设Nx的大小相对于网孔形状的变化来说是小的,这使得Nx充分平坦。为概略地处理这一假设不成立的实例,STF可以潜在地被扩展为包括一个单曲率参数,而不需要不切实际的存储量。
以下描述图3中的方框320所示出的物体渲染。即,可以通过由基于STF的外壳和均匀内核表示物体进行射线跟踪来有效地渲染物体。更具体地,相应的辐射计算至少包括下列步骤。首先,可以获得进入均匀内核的照度作为外壳体元底层的辐照度,这通过将光强与底层STF值相乘来计算。然后,从进入内核的光线,可以使用偶极子近似来计算离开均匀内核的光线。其次,入射到物体的光线和离开内核的光线可以用来确定使用STF的外壳体元的辐照度。从这些辐照度值,由进入物体内部的射线行进来计算在介孔结构表面处的离开辐射。
图7例示一个点或具有局部光线方向ω1705的方向性光源的辐射求值的几何结构。观察方向ω715上的表面体元x710的辐射L(x,ω)由反射离开物体表面720的辐射LR和离开物体体积的辐射LT组成L(x,ω)=(1-Ft)LR(x,ωr)+FtLt(x,ωt)其中Ft是菲涅耳(Fresnel)透射率,是广为人知的光学现象,ωr715是在x处跨越介孔结构曲面法线的ω镜像方向,ωt730是相对于ω715的折射射线方向。LR(x,ωr)的值可以由传统的射线跟踪来求值,从而递归地产生射线。由于可以递归产生,LR(x,ωr)中包含介孔结构表面上的相互反射。
为对折射的射线辐射LR(x,ωr)进行求值,根据下列方程,沿着进入物体内部的折射射线进行积分∫x0xσs(x′)e-∫x′x&Kgr;(ξ)dξIb(x′,ωt)dx′,]]>其中Ib(x′,ωt)是体元x′735的辐照度,该体元对方向ωt上的辐射有贡献。从外壳表面的局部光源亮度I0(x′l,ωt)、均匀内核的辐射Ld(x,ωl)和单次散射及多次散射STF值计算辐照度分布Ib(x′,ωt),如下14πI0(xl′,ωl)Im(x′,ωl)+14πLd(xd′,ωl)Im(x′,ωb)+f(x′,ωl,ωt)I0(x′ωl)Is(x′,ωl)]]>这一表达式的第一项是由到达物体外壳顶部的照度I0按比例缩放的多次散射STF值。第二项说明了来自点x′d740的内核辐射Ld(x′d,ωl)的贡献,其中点x′d740是x′735在外壳法线方向到内核上的投影。Ld(x′d,ωl)的值从偶极子计算中获得,其对外壳体元辐照度的贡献由逆光方向ωb的多次散射STF值Im(x′,ωb)按比例缩放。Ib(x′,ωt)的前两项一起说明了来自物体外壳中体元的无向多次散射的贡献。Ld(x′d,ωl)的第三项是来自外壳内的、在方向ωt上反射的单次散射的贡献。由于光子穿越次表面层而不被散射或吸收的可忽略不计的可能性,不包括均匀内核的单次散射的贡献。
对于个每采样点x,Is(x,ωl)和Im(x,ωl)通过对周围八个体元的相应单次和多次STF值进行三次线性内插来获得。对Lt(x,ωt)求值所需的材质特性也通过三次线性内插来获得。
提供图8以例示,当外壳表面上的照度不是局部一致时,辐照度修正核如何将阴影/光线传播进入次表面层内以解决光差。即,由于STF值Im(x′,ωl)和Is(x′,ωl)是用材质样本上的一致定向照明来预先计算的,因此当照明在x′l810周围的表面邻域上均匀时,外壳体元辐照度分布Ib(x,ωt)的计算是有效的,其中x′805到外壳表面的投影沿外壳法线方向。与介孔结构阴影不同,外部几何结构阴影在STF中没有建模。对于外部几何结构投射的阴影边界附近的外壳体元,辐照度修正技术可以用来改善辐照度计算的准确度。
例如,当x′805在阴影边界附近的阴影中时,可以基于x′l810附近的所有外壳表面体元都有相同的照度I0(x′l,ωl)这一假设来计算Ib(x,ωt)。对于在x′l810附近但不在阴影中的外壳表面体元x1805,由于跨越阴影边界的照度突然改变,xl处的假设照度和真实照度之差ΔI0(xl,ωl)=I0(xl,ωl)-I0(x′l,ωl)可能较大,辐照度Ib(x,ωt)的计算需要修正。额外的照度ΔI0(xl,ωl)可以跨越阴影边界散射。
为计算Ib(x,ωt)的修正项,许多光子在所有方向上从x1805发出,进入物体外壳815,然后计算这些光子对体元的多次散射辐照度贡献,如下I^m(x′,xl)=14πΣmΔΦp(x′,ωp)σs(x′)ΔV,]]>该值用与多次散射STF值Im(x,ωl)相同的方法来求值。因此由于xl而引起的对Ib(x,ωt)的修正为Im(x′,xl)ΔI0(xl,ωl)。对Ib(x,ωt)的总修正包括在x′的邻域中但不在阴影中的每一x1的单个修正项。邻域尺寸可以被设置为散射平均自由路径的两倍。对于xl在阴影边界附近但不在阴影中的情况,同样地计算修正项,因为当ΔI0(xl,ωl)为负时,修正也是负的。
对给定的外壳表面体元xl,Im(x′,xl)可以被称为辐照度修核(ICK),并可以表示为定义在体元的3D数组上的函数,该3D数组被称为ICK的域。因为物体外壳从STF基体积Vb合成,因此ICK可以用Vb来预先计算,然后在渲染期间应用到物体外壳。由于Vb是非均匀的,为Vb的每个外壳表面体元预先计算ICK。为了减少不同ICK值的个数,可以根据外壳表面体元的ICK域中的材质特性,使用K-平均值算法聚合外壳表面体元。于是可以为每一聚类计算并存储单个ICK。ICK域的相似性度量与用于外壳合成的邻域相似性是相同的。
尽管辐照度修正的更高精度可以用大量ICK值获得,然而对在此描述的示范实施例,仅通过跟踪均匀阵列的1000个光子来计算一个ICK值。这种简化模型通常提供合理的辐照度修正。
由以上的描述,示出用于STF建模和渲染系统的诸示范实施例至少包括下列部分一个部分用于建模STF基体积Vb、一个部分用于使用光子跟踪从Vb生成STF样本、一个部分将STF样本合成到表面上、以及一个部分用于渲染最终的基于STF的模型。用户干预只需要对一小块材质样本建模。一旦获得STF样本,合成和渲染步骤就遵循已知的表面纹理管线实现。
图9例示可以用于实现在此所描述的技术的通用计算机环境900。计算机环境900仅仅是计算环境的一个例子,并不暗示对计算机和网络体系结构的使用范围或功能的任何限制。也不应该将计算环境900解释成对示例操作环境900中所例示的任何一个组件或组件组合具有相关的任何依赖或要求。
计算机环境900包括以计算机902的形式的通用计算设备,包括但不限于图1中示出计算设备105。计算机902的组件可包括但不限于,一个或多个处理器或处理单元904、系统存储器906、以及将包括处理器908在内的各种系统组件耦合到系统存储器904的系统总线906。
系统总线908代表多种类型的总线结构中的任何一个或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口以及使用各种总线体系结构中的任何一种的处理器或局部总线。作为例子,这些体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线、也被称作Mezzanine总线的外设部件互连(PCI)总线、PCI Express总线、通用串行总线(USB)、安全数字(SD)总线或IEEE 1394(即,火线)总线。
计算机902通常包括多种计算机可读介质。这类介质可以是能够由计算机902访问的任何可用介质,包括易失性和非易失性介质、可移动和不可移动的介质。
系统存储器906包括易失性存储器形式的计算机可读介质,如随机存取存储器(RAM)910;和/或非易失性存储器形式的计算机可读介质,如只读存储器(ROM)912或闪速RAM。基本输入/输出系统(BIOS)914包含例如在启动过程中帮助在计算机902内的各元件之间传输信息的基本例程,储存在ROM912或闪速RAM中。RAM 910通常包含可由处理单元904即时存取的和/或目前正在操作的数据和/或程序模块。
计算机902也可以包括其他可移动/不可移动、易失性/非易失性的计算机存储介质。作为例子,图9例示了从不可移动的非易失性磁介质(未示出)中读取和向其中写入的硬盘驱动器916、从可移动的非易失性磁盘920(例如,“软盘”)中读取和向其中写入的磁盘驱动器918、以及从可移动的非易失性光盘924,如CD-ROM、DVD-ROM或其他光学介质中读取和/或向其中写入的光盘驱动器922。硬盘驱动器916、磁盘驱动器918和光盘驱动器922中的每一个都通过一个或多个数据介质接口925连接到系统总线908。或者,硬盘驱动器916、磁盘驱动器918和光盘驱动器922可以通过一个或多个接口(未示出)连接到系统总线908。
磁盘驱动器及其相关联的计算机可读介质为计算机902提供了计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。尽管例子例示了硬盘916、可移动磁盘920和可移动光盘924,可以理解,可以存储计算机可访问数据的其他类型的计算机可读介质,诸如磁带盒或其他磁存储设备、闪存卡、CD-ROM、数字多功能盘(DVD)或其他光存储、随机存取存储器(RAM)、只读存储器(ROM)、电可擦可编程只读存储器(EEPROM)等等,也可以用来实现示范计算系统和环境。
任意数量的程序模块可以存储在硬盘916、磁盘920、光盘924、ROM 912和/或RAM 910中,包括例如操作系统926、一个或多个应用程序928、其他程序模块930和程序数据932。此类操作系统926、一个或多个应用程序928、其他程序模块930和程序数据932(或它们的某种组合)中的每一个都可以实现支持分布式文件系统的常驻组件的全部或部分。
用户可以通过输入设备,如键盘934和定位设备936(例如,“鼠标”)向计算机系统902输入命令和信息。其他输入设备938(未具体示出)可以包括话筒、操纵杆、游戏垫、圆盘式卫星天线、串行端口、扫描仪等等。这些和其他输入设备通过耦合到系统总线908的输入输出接口940连接到处理单元904,但也可以通过其他接口和总线结构,如并行端口、游戏端口或通用串行总线(USB)连接。
监视器942或其他类型的显示设备也可以通过接口,如视频适配器944连接到系统总线908上。除了监视器942之外,其他外围输出设备可以包括通过输入输出接口940连接到计算机902的各种组件,如扬声器(未示出)和打印机946。
计算机902可以使用到一个或多个远程计算机,如远程计算设备948的逻辑连接在网络化环境中操作。作为例子,远程计算设备948可以是个人计算机、便携式计算机、服务器、路由器、网络计算机、对等设备或其他普通网络节点等。远程计算设备948被例示为便携式计算机,它可以包括在此相对于计算机系统902所描述的许多或所有元素和特征。或者,计算机902也可以在非网络化环境中工作。
计算机902和远程计算机948之间的逻辑连接被描述为局域网(LAN)950和通用广域网(WAN)952。这类网络环境常见于办公室、企业范围内的计算机网络、内联网和因特网。
当在LAN网络环境中实现时,计算机902通过网络接口或适配器954连接到局域网950。当在WAN网络环境中实现时,计算机902一般包括调制解调器956或用来通过广域网952建立通信的其他装置。可以内置或外置于计算机902的调制解调器956可以通过输入/输出接口940或任何其他合适的机制连接到系统总线908。应该理解,所例示的网络连接只是例子,可以使用在计算机902和948之间建立通信链路的其他方法。
在网络化环境,如用计算环境900所例示的网络化环境中,相对于计算机902所描述的程序模块或其中的部分,可以存储在远程存储设备内。作为例子,远程应用程序958驻留在远程计算机948的存储设备上。为了进行说明,应用程序或程序和其他可执行程序组件,如操作系统,在此被例示成离散的块,尽管可以认识到,此类程序和组件在不同的时刻驻留于计算设备902的不同存储组件中,并由计算机的至少一个数据处理器执行。
各种组件和技术可以在诸如由一台或多台计算机或其他设备执行的程序模块等计算机可执行指令的一般上下文中描述。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。通常,程序模块的功能可以根据各种实现中的需要进行组合或分布。
这些模块和技术的一种实现可以被存储在某一形式的计算机可读介质上或通过其发送。计算机可读介质可以是能够由计算机访问的任何可用介质。作为例子而非限制,计算机可读介质可以包括“计算机存储介质”和“通信介质”。
“计算机存储介质”包括用存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术来实现的易失性和非易失性、可移动的和不可移动的介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或者其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或任何其他可用于存储所需信息并可由计算机访问的介质。
“通信介质”通常具体化为诸如载波或其他传输机制中等已调制数据信号中的计算机可读指令、数据结构、程序模块或其他数据。通信介质也包括任何信息传递介质。术语“已调制数据信号”是指以在信号中编码信息的方式来设置或改变其一个或多个特性的信号。仅作为非限制性的例子,通信介质包括有线介质,如有线网络或直接有线连接,以及无线介质,如声学、射频、红外和其他无线介质。以上任何一个的组合也应当被包括在计算机可读介质的范围之内。
在本说明书中已经参考“一个实施例”、“实施例”或“示范实施例”,意指本发明的至少一个实施例中包括详细描述的特征、结构或特性。因此,这些短语的使用可以涉及一个以上实施例。此外,所描述的特征、结构或特性能够以任何适当方式在一个或多个实施例中组合。
然而,相关领域中的技术人员可以认识到,本发明不需要一个或多个具体细节,或者用其他方法、资源、材质等,也可以实施。在其他实例中,广为人知的结构、资源或操作没有被详细地示出或描述,仅仅是为了避免使本发明的诸方面模糊。
尽管已经例示和描述本发明的诸示范实施例,应该理解,本发明不限于上述的精确配置和资源。在不偏离本发明的精神和范围的前提下,可以对此处公开的本发明的方法和系统的排列、操作和细节做出对那些本领域内的技术人员来说是显而易见的各种修改、改变和变动。
权利要求
1.一种方法,包括获取一材质样本的材质参数;确定所述材质样本的辐照度分布值;将所述材质样本合成到物体网孔上;以及利用被合成到物体网孔的所述材质样本的所确定的辐照度分布值,渲染所述物体。
2.如权利要求1所述的方法,其特征在于,获取材质样本的材质参数包括使用体积可视化的体积建模和处理技术。
3.如权利要求1所述的方法,其特征在于,获取材质样本的材质参数包括使用在3-D几何模型上的计算机断层照相法(CT)或扫描-转换技术。
4.如权利要求1所述的方法,其特征在于,获取材质样本的材质参数包括根据偶极子扩散近似确定曲面物体的散射特性。
5.如权利要求1所述的方法,其特征在于,所述材质样本包括体积材质样本中的至少一个体元。
6.如权利要求1所述的方法,其特征在于,所述材质样本的辐照度分布值包括一单次散射辐照度值和一多次散射辐照度值。
7.如权利要求1所述的方法,其特征在于,所述材质样本的辐照度分布值是利用光子映射技术来确定的。
8.如权利要求1所述的方法,其特征在于,所述材质样本的辐照度分布值是对一个或多个照明及观察方向上所述材质样本中的每个体元确定的。
9.如权利要求1所述的方法,其特征在于,将所述材质样本合成到物体网孔上包括向所述物体网孔上的每个点分配所述材质样本的基体积中的纹理坐标。
10.如权利要求1所述的方法,其特征在于,渲染所述物体包括通过用基体积和均匀内核表示所述物体来进行射线跟踪。
11.如权利要求1所述的方法,其特征在于,渲染所述物体包括获得进入所述物体内核的照明作为辐照度,所述辐照度是通过将光强与来自物体底部的辐照度分布值相乘来计算的,使用偶极子近似来计算离开所述物体内核的光线;使用入射到所述物体的光线和离开所述物体内核的光线来确定所述物体外壳上的体元的辐照度;以及由进入所述物体内部的射线计算介孔结构表面的离开辐射。
12.一种具有可由一个或多个处理器执行的一个或多个指令的计算机可读介质,所述一个或多个指令使得所述一个或多个处理器产生一材质样本的基体积;计算所述材质样本的每个体元的单次散射辐照度值和多次散射辐照度值;将所述基体积合成到目标网孔上,其中,向所述目标网孔上的每个点分配所述基体积中的一纹理坐标;以及通过在所述网孔上进行射线跟踪来渲染所述物体。
13.如权利要求12所述的计算机可读介质,其特征在于,所述基体积的体元位于所述材质样本的次表面层或周围的自由空间中。
14.如权利要求12所述的计算机可读介质,其特征在于,所述单次散射辐照度值包括来自光源的辐射分量,所述多次散射辐照度值包括来自其他体元的辐射分量。
15.如权利要求12所述的计算机可读介质,其特征在于,所述基体积中,位置x和光源方向ω1的单次散射辐照度值Is和多次散射辐照度值Im分别计算为Is(x,ωl)=ΣsΔΦp(x,ωl)σs(x)ΔV,Im(x,ωl)=ΣmΔΦp(x,ωp)σs(x)ΔV]]>其中所述辐射是对微分体积ΔV中的n个光子的求和,ΔΦp(x,ωp)是来自入射方向ωp的光子所携带的通量。
16.如权利要求12所述的计算机可读介质,其特征在于,所述单次散射辐照度值和多次散射辐照度值被计算为至少所述样本材质基体积中的位置和光源方向的函数。
17.如权利要求12所述的计算机可读介质,其特征在于,将所述基体积合成到目标网孔上包括,向每个网孔顶点分配一纹理坐标,并将所述基体积置于沿着所述顶点的曲面法线的网孔的表面下。
18.一种方法,包括将一材质样本合成到物体网孔上,其中,所述材质样本的辐照度分布值基于所获取的参数预先确定;以及利用被合成到物体网孔上的材质样本的所确定的辐照度分布值渲染所述物体。
19.如权利要求18所述的方法,其特征在于,所述材质样本包括体积材质样本中的至少一个体元。
20.如权利要求18所述的方法,其特征在于,所述材质样本的预先确定的辐照度分布值包括一单次散射辐照度值和一多次散射辐照度值。
21.如权利要求18所述的方法,其特征在于,所述材质样本辐照度分布值是利用光子映射技术预先确定的。
22.如权利要求18所述的方法,其特征在于,对一个或多个照明和观察方向上所述材质样本中的每个体元,预先确定所述材质样本辐照度分布值。
23.如权利要求18所述的方法,其特征在于,将所述材质样本合成到物体网孔上包括,向所述物体网孔上的每个点分配所述材质样本的基体积中的一纹理坐标。
24.如权利要求18所述的方法,其特征在于,渲染所述物体包括通过用基体积和均匀内核表示所述物体来进行射线跟踪。
25.如权利要求18所述的方法,其特征在于,渲染所述物体包括获得进入所述物体内核的照明作为辐照度,所述辐照度通过将光强与来自物体底部的辐照度分布值相乘来计算;使用偶极子近似计算离开所述物体内核的光线;使用入射到所述物体的光线和离开所述物体内核的光线确定所述物体外壳上的体元的辐照度;以及由进入所述物体内部的射线行进计算介孔结构表面的离开辐射。
26.一种用于建模物体的系统,包括用于获取纹理样本参数的装置;用于确定所述纹理样本的辐照度值的装置;用于将所述纹理样本合成到所述物体表面上的装置;以及用于基于所合成的物体渲染所述物体的装置。
27.如权利要求26所述的系统,其特征在于,所述纹理样本参数被包括在所述纹理样本的基体积中。
28.如权利要求26所述的系统,其特征在于,所述纹理样本的辐照度值包括所述纹理样本的基体积中的位置x和光源方向ω的单次散射辐照度值和多次散射辐照度值。
全文摘要
提供用于至少建模表面上的介孔结构阴影、遮蔽、相互反射和轮廓,以及非均匀体积中的次表面散射的技术。这类技术至少包括,获取材质样本的材质参数、确定材质样本的辐照度分布值、将材质样本合成到物体网孔上。然后可以用多种渲染技术的其中之一渲染所合成的物体。
文档编号G06T15/04GK1741070SQ20051008820
公开日2006年3月1日 申请日期2005年7月22日 优先权日2004年7月23日
发明者B·郭, H·-Y·舒姆, S·S·林, X·佟, Y·陈 申请人:微软公司