2. 桂林电子科技大学 广西高校图像图形智能处理重点实验室, 广西 桂林 541004
2. Guangxi Colleges and Universities Key Laboratory of Intelligent Processing of Computer Image and Graphics, Guilin University of Electronics Technology, Guilin Guangxi 541004, China
半透明高光类物体由于其表面具有镜面反射、光线散射等特性,严重影响高光区域重建的精度,无法用三维激光扫描仪来恢复它的几何形状,所以半透明物体的真实感重建成为三维重建技术中的一个难题。而基于图像的三维重建技术,通过实体拍摄得到序列图像来估算点云坐标及纹理的方式,可基本恢复出半透明高光物体的几何网格及表面颜色纹理,但还是存在网格模型失真、纹理贴图色泽误差及表面真实光感缺失等问题,由于人眼对光的敏感度较高,因此,对模型进行真实感光泽复原,是使失半透明三维重建模型在视觉上逼近于真实物体的有效方法。但是,半透明物体的物理属性较为复杂,当光线进入半透明物体内部,部分光线会在表面被反射和散射,余下的部分光线经过折射进入内部组织再进行一系列散射之后被吸收或穿越出物体,通常人们称这种光线发生散射、吸收及衰减的现象,为次表面散射(SubSurface Scattering,SSS)。在次表面绘制的研究中,Jensen等[1]提出了简化双向表面散射反射分布函数(Bidirectional Surface Scattering Reflection Distribution Function,BSSRDF)的处理方法,该方法把半透明材质中的光线传播分为单次散射和多重散射,能较好地模拟真实散射过程;Donner等[2]在此基础上提出了多极子对偶模型,有效地描述了光线在多层中的传输与反射。但这些基于真实感的渲染方式皆需要较长的绘制时间而达不到实时要求。在实时渲染方面,Munoz等[3] 提出基于单独图片的方法模拟BSSRDF,实现了一部分半透明材质的真实感模拟;Kim等[4]利用一张二维的颜色图和一个色调映射函数(Tone Mapping Function,TMF),实现超声体渲染,但渲染过程相对繁琐;Huang等[5]在屏幕空间渲染的基础上,结合Kubelka-Munk模型模拟半透明内部的次表面散射;蔡飞龙[6]针对人脸的半透明属性,使用纹理扩散方法实现了具有散射特性的人脸材质表现。
针对半透明物体在物理光学表现上具备的多重散色、透射及表面散射不规则的特点,本文提出采用高光、散射、透射三层光照模型线性叠加的方式来模拟半透明物体的真实光感表现。首先,采用基于GGX分布函数的微平面Cook-Torrance模型作为高光项模拟不规则玉石表面圆润的高光效果;其次,为表现不同玉石具有的不同漫反射剖面,在综合Green、D'Eon及Penner方法的基础上,预积分单个高斯函数对光线产生的模糊效果到一张双向反射分布函数(Bidirectional Reflectance Distribution Function,BRDF)散射查找贴图,在片元着色器中,把光线散射权重与查找贴图中的对应项相乘,得到基于不同漫反射剖面的散射项;然后利用Jimenez方法[13]实现基于漫反射剖面的模糊散射,并结合厚度贴图预计算透射强度衰减查找图,实现透射的效果。实验结果表明,三层光照模型的叠加的方法能较为逼真地模拟出半透明光感表现,且能保证片面数较大情况下的实时效率。
1 相关理论在半透明材质的研究中,本文主要利用了高斯模糊模拟散射的方法,在这方面研究中,NVIDIA公司的Green[7]用环绕散射近似散射,其以光矢量和法线的点积为索引,修改漫反射函数,使得光照环绕在物体的周围,越过正常时变黑暗的点,形成一种散射的简单的近似效果,但其衰减过程不具备真实物理特性。随后,D'Eon[8]用在纹理空间中结合漫反射剖面作多重高斯卷积的方法模拟内部多重光线散射所表现出的模糊效果。漫发射剖面,见如图 1(a)效果,是在一个完全黑暗的场景中被一束白光照射到半透明物体中产生的光线发散效果,其近似地描述了光在半透明材质表面之下的传播与散射方式,并可利用带有散射参数的数学模型模拟Donner[2]所提出的多级子对偶模型。对给定光束的距离,可以将红、绿、蓝相应的剖面表述为光的散射量,如图 1(b)所示,其中从上往下依次是蓝、绿、红通道的扩散曲线,通过观察漫反射剖面的光线散射并分析其衰减过程,可以发现其过程和一维高斯函数曲线类似,尽管单个高斯项不能精确适用于任何漫反射剖面,但多个高斯项的叠加可以提供比较真实的近似结果,其扩散剖面分布曲线R(r)可表示为:
$R(r)=\sum\limits_{i=1}^{k}{{{w}_{i}}G}({{v}_{i}},r)$ | (1) |
其中:r是光线到达物体表面的中心点和溢出点之间的径向距离,即r=‖xi-xo‖;wi是权重,刻画了每个高斯函数模糊的比重;vi是方差,表现光线散射的偏离程度。这里的高斯项可以被描述为:
$G(v,r)=\frac{1}{2\pi v}{{\exp }^{-\frac{{{r}^{2}}}{2v}}}$ | (2) |
其中:选择常数1/2πv是为了当使用一个径向2D模糊时,G(v,r)不会使输入图像亮度有所变化。
在D'Eon方法[8]中,使用纹理空间高斯卷积拟合漫反射剖面的方法,用式(2)的高斯拟合项,形成与真实散射相似的漫反射剖面,实现较为真实的漫反射效果。
但以上方法由于需要在纹理空间做多次高斯卷积,效率较低,所以Penner[9]根据D'Eon[8]提出的漫反射剖面理论,采用本地预积分基于漫反射剖面的BRDF查找图的方式代替D'Eon纹理空间高斯模糊法以达到更高的渲染效率。由经典Lambertian模型可知,物体表面法线与光矢量的点积影响到达物体表面入射光的强度,不仅如此,物体表面的形状也从视觉上影响着散射衰减,由此Penner提出:
1) 以模型表面法线N与光矢量L的点积,即(N·L)为影响表面光线的R、G、B通道以不同速度衰减的决定因子,结合高斯卷积与环绕光照的方法,应用基于真实测量的R、G、B通道衰减权重值形成的扩散面分布R(r),使光线在物体中衰减时具备物理性。
2)物体表面不同曲率是影响散射强弱产生的关键因素,所以采用预计算物体表面曲率的方法得到不同形状表面所产生的不同散射值,这里使用相似三角形的方法预计算模型表面曲率,如图 1(c)所示;然后将第1)条中的(N·L)作为决定模型表面散射的第一个参数,将曲率作为第二个参数;最后利用式(3)把漫反射剖面预积分在一个曲率一定的环形表面上,如图 1(d)所示,由此得到一张以曲率为y坐标,(N·L)为x坐标的散射BRDF查找图,见图 1(e),其积分表达如式(3)所示:
$D(\theta ,r)=\frac{\int\limits_{-\pi }^{\pi }{\cos (\theta +x)\cdot R(2r\sin (x/2))dx}}{\int\limits_{-\pi }^{\pi }{R(2r\sin (x/2))dx}}$ | (3) |
其中:θ是表面法线N到光矢量L之间所有可能的角度;r为表面曲率;R(2r sin(x/2))为式(1)漫反射剖面的扩散面分布曲线。
2 半透明真实感实时渲染方法对半透明玉石进行图像三维重建后所得的数字化模型,如图 2所示,可观察到对比实物原图 2(a),重建三维模型图 2(b)~(d)表面色泽真实感表现相对较差,这是由于模型表面纹理贴图是图像序列加权平均得到的,且模型表面不含任何光照信息。为复原真实玉石所具有的光感表现,首先分析半透明材质中最显著的次表面散射特性,但是直接用BSSRDF模型进行模拟计算效率太低,故为保证实时渲染效率,采用文献[10]所提到的多层BRDF模型叠加的方法来模拟半透明模型具有的次表面散射表现。通过分析可知,玉石主要具备高光、表面散射及稀薄处透射的物理光学表现,所以,本文提出了三层光照模型在物理守恒的基础上线性叠加的方式来模拟半透明高光效果的思路。假设La为模型中顶点的光照强度,则:
${{L}_{a}}={{L}_{rs}}+{{L}_{rd}}+{{L}_{t}}$ | (4) |
其中:Lrs、Lrd分别为高光反射项和漫反射散射项;Lt为透射项。半透明现象主要表现在漫反射散射项Lrd与透射项Lt两部分。
物体表面高光的表现分为基于经典光照模型与基于物理光照模型的两种展现形式,本文针对重建玉石表面具有不完全平整特性,选用物理模型中基于微平面的Cook-Torrance分布模型模拟真实物体的高光反射,计算如式(5)所示:
${{L}_{rs}}=\frac{F(l,h)G(l,{v}',h)D(h)}{4(n\cdot l)(n\cdot {v}')}$ | (5) |
其中:F(l,h)是有效微平面(法向量m等于光线与视线的中间向量h时)产生的Fresnel反射,计算光学折射反射比率;G(l,v′,h)是有效微平面中没有被遮挡的比例,一般结合式(5)中的分母,共同作为可视因子V(l,v′,h);D(h)是微平面的法线分布函数。
为确定D(h)分布函数,比较了经典的Phong、Beckmann模型,最终采用Disney公司[11]提出的Trowbridge-Reitz分布函数(又称GGX方法),以达到模拟玉石温润效果的柔和高光域,如图 3(c)~(e),使其更接近物体的真实感高光表现,具体见式(6):
$D(h)=\frac{{{\alpha }^{2}}}{\pi {{\left( {{\left( n\cdot h \right)}^{2}}\left( {{\alpha }^{2}}-1 \right)+1 \right)}^{2}}}$ | (6) |
其中:α为表面粗糙度的平方;n为法线向量;h为半角向量。
为匹配D项使用的GGX分布函数,可见因子V项与Fresnel项均采用对应的Schlick模型,它们的表达式分别为式(7)和式(8):
$V(l,{v}',h)=\frac{1}{((n\cdot l)(1-k)+k)((n\cdot {v}')(1-k)+k)}$ | (7) |
其中:k=α/2;l为光线方向向量;v′为视角方向向量;n为法线向量。
$F(l,h)={{f}_{\text{0}}}+(1-{{f}_{\text{0}}}){{(1-h\cdot l)}^{5}}$ | (8) |
其中:h为半角向量; l为光线方向向量; f0为高光反射向量正好在法线向量位置时Fresnel函数的值。
对以上方法实现的表面高光反射的实验效果,如图 3所示,通过和经典模型Beckmann及Phong对比可以看出,GGX在高光中心处的高光衰减相对于Beckmann及Phong衰减得更快,但是在远离高光中心后光线衰减却比Beckmann及Phong衰减慢得多,这使GGX的高光远比Phong要狭长,在高光亮度一定时,GGX的高光表现更为柔和,受光面积也更大,更符合真实模型表现。
当光线照射玉石表面,除去在表面层发生的高光反射外,更多光束进入模型内部并发生散射与透射,最终溢出模型表面到达人眼。为模拟此效果,首先在本地预烘培物体的厚度贴图,然后用可分离出漫反射剖面的预积分散射查找图结合厚度贴图实现散射,最后在较薄区域结合厚度贴图在纵向平面中得出漫反射剖面在出射点的光强,实时地实现光线在非均匀玉石内部的所具有的多重散射的半透明表现效果。
1) 预计算本地厚度贴图。
为表现物体表面形状对表面光感的影响,文献[9]提出了利用相似三角形求物体表面曲率来实现基于不同曲率的光强分布的方法,其特点是针对表面光滑的物体上表现良好,但对表面曲率变化快的模型不能很好适用。本研究所针对的三维重建物体大多形态复杂,无法避免表面曲率变化快这一特性。为解决这一问题,本文利用光线在物体中被散射和吸收的大小和传播距离有关的原理,采用厚度贴图代替表面曲率的方式来模拟模型不同形状表面的不同散射强度。厚度贴图在透明阴影贴图(Translucent Shadow Maps,TSM)[12]的基础上,利用环境光闭塞(Ambient Occlusion,AO),即越薄的地方闭塞信息越多的原理,实现光线在物体内部根据其厚度而变化的光强表现。具体实现步骤如下:
Step1 在3D软件工具中翻转物体表面法线向量。
Step2 由于环境光闭塞决定了到达表面顶点的环境光大小,越相互靠近的网格,之间的闭塞信息就越多。在此翻转法线的基础上,利用3D工具烘培出AO贴图,则贴图中闭塞信息多的地方可以默认为厚度较薄。
Step3 翻转顶点颜色存储贴图。
由以上过程可以得到一张白色代表透明度,黑色代表不透明度的物体厚度贴图,相对于场景渲染得到的深度贴图,使用厚度贴图可以基于本地预先烘培来减轻渲染场景的计算量;相对于Penner[9]用曲率表现表面不同形状的散射强度,利用厚度贴图的表现方法不存在高变化曲率表面失效的问题,但针对形状较为复杂的模型,计算机在计算深度时难免有误差,这时可利用本地计算得到的厚度贴图在图像处理软件中进行手动调整,以达到所需的最佳效果。
2) 可变漫反射剖面的散射项实现。
散射部分的实现,主要对进入半透明物体内部发生衰减后从不同于入射点散射出来的光线进行相关计算,通常情况下,光线在物体内部的衰减程度与其传播距离有关,所以本文结合厚度贴图,以厚度信息表示光线传播距离;但单一的光线传播距离还不能使散射表现具备物理特性,所以在此基础之上,利用高斯拟合项模拟的漫反射剖面对半透明物体内部光线每个颜色通道的衰减曲线进行了近似,使衰减过程具备物理性,并结合Penner算法[9]中所提到的预积分散射剖面的方法,根据不同种类玉石具有不同漫反射剖面这一特点,改进基于精确测量所得数据硬编码的漫反射剖面查找图,提出了一种漫反射剖面可独立于查找贴图的方法,实现基于表面厚度的可变漫反射剖面的散射表现。具体实现过程如下:
Step1 采用Penner所提出的预积分漫反射剖面至散射查找图的方法,但在预积分阶段较式(3)把多个高斯和拟合模拟的漫反射剖面R(2r sin(x/2)),改成单个高斯函数对光线造成的模糊散射G(v,2r sin(x/2)),使漫反射剖面可从式(3)中分离出来;又由于表面曲率对散射值的影响在视觉感受上同厚度对散射的影响相近,即曲率变化越大散射越明显,厚度越小散射越明显,所以将式(3)中的曲率r改成本地烘培的厚度贴图。从预积分本地贴图的实现中可知,采用了翻转厚度贴图的顶点颜色的方法,使数值大的白色表示厚度小区域,数值小的黑色表示厚度大区域,则厚度贴图中存放的物体厚度值rt对散射的影响同曲率r值对散射的影响一致,则式(3)改进为如式(9)所示:
$\begin{align} & {{D}_{1}}(\theta ,{{r}_{t}})=\frac{\int\limits_{-\pi }^{\pi }{\cos (\theta +x)\cdot G(v\text{,}(2{{r}_{t}}\sin (x/2)))dx}}{\int\limits_{\text{-}\pi }^{\pi }{G(v,(2{{r}_{t}}\sin (x/2)))dx}} \\ & \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\frac{\int\limits_{\text{-}\pi }^{\pi }{\cos (\theta +x)\cdot {{\exp }^{-\frac{{{(2{{r}_{t}}\sin \frac{x}{2})}^{2}}}{2v}}})dx}}{\int\limits_{\text{-}\pi }^{\pi }{{{\exp }^{-\frac{{{(2{{r}_{t}}\sin \frac{x}{2})}^{2}}}{2v}}}dx}} \\ \end{align}$ | (9) |
令Rt=rt/
$D(\theta ,{{R}_{t}})=\frac{\int\limits_{\text{-}\pi }^{\pi }{\cos (\theta +x)\cdot {{\exp }^{-2R_{t}^{2}{{\sin }^{2}}\frac{x}{2}}})dx}}{\int\limits_{\text{-}\pi }^{\pi }{{{\exp }^{-2R_{t}^{2}{{\sin }^{2}}\frac{x}{2}}}dx}}$ | (10) |
Step2 在合成散射查找图阶段,通过式(10),以1/Rt为变量y,表面法线与光矢量点积(N·L)为变量x,烘培出一张BRDF查找图,如图 4所示。
Step3 在着色计算之前,首先可变动的设置所需漫反射剖面R(d),得到漫反射剖面中确定好的R、G、B通道散射权重wi与方差vi(见式(1));然后在片元着色器中结合物体表面厚度rt与(N·L),把Step 2中所得的BRDF散射查找图的对应项与设置好漫反射剖面中R、G、B通道权重wi相乘,如式(11),实现基于可变漫反射剖面与物体表面厚度值的散射项Lrd。
${{L}_{rd}}=\sum\limits_{i=1}^{6}{BRDF((N\cdot L),\frac{\sqrt{{{v}_{i}}}}{{{r}_{t}}})*{{w}_{i}}}$ | (11) |
3)漫反射剖面结合厚度贴图实现透射。
漫反射部分主要模拟光线在物体内部散射及衰减的效果,而真实世界半透明物体的光感表现中还存在有很大一部分为光的透射,其中厚度对透射光的影响通常最为直观,随着厚度值得增加,透射光会逐渐减弱。因此,本文根据Jimenez[13]的方法结合预烘培的厚度贴图,来模拟光的透射现象,如图 6所示,若需要计算阴影背光面上C点经向光面(A点所在面)透射作用产生的出射幅度,首先考虑向光面上点A及点A周围采样点接受到的所有光照和;然后叠加计算每一个采样点中光照的漫反射剖面R(d),其中d为从C至A点周围采样点的距离;最后用厚度贴图的厚度信息替代距离d得到基于厚度的散射表现。
由于阴影背光面上C点的出射光计算起来相对复杂,D'Eon指出B处的出射光非常接近C,故采用B点的出射强度估算C点,B点的出射光为向光面上距A点r距离的任意采样光点的剖面卷积,计算如式(12):
$R(\sqrt{{{r}^{2}}+{{d}^{2}}})=\sum\limits_{i=1}^{k}{{{w}_{i}}}{{\exp }^{-\frac{{{d}^{2}}}{{{v}_{i}}}}}G({{v}_{i}},r)$ | (12) |
则C出射辐射量为A点及周围点的辐照度与到达C点的漫反射剖面的乘积为:
$M(x,y)=E(x,y)R(\sqrt{{{r}^{2}}+{{d}^{2}}})$ | (13) |
平面上的出射辐射量为:
$M(x,y)=\iint{E(x,y)R(\sqrt{{{r}^{2}}+{{d}^{2}}})dxdy}$ | (14) |
假设A点周围点的出射辐射量与A点相同,则有E(x,y)=E,由此推算出:
$\begin{align} & M(x,y)=E\iint{R(\sqrt{{{r}^{2}}+{{d}^{2}}})}dxdy=E\int_{0}^{x}{2\pi rR(\sqrt{{{r}^{2}}+{{d}^{2}}})}dr \\ & =E\int_{0}^{x}{\sum\limits_{i=1}^{k}{{{w}_{i}}}}{{\exp }^{\frac{-{{d}^{2}}}{{{v}_{i}}}}}2\pi rG({{v}_{i}},r)dr \\ & =E\sum\limits_{i=1}^{k}{{{w}_{i}}}{{\exp }^{^{\frac{-{{d}^{2}}}{{{v}_{i}}}}}}\int\limits_{0}^{x}{2\pi rG({{v}_{i}},r)dr} \\ & =E\sum\limits_{i=1}^{k}{{{w}_{i}}}{{\exp }^{^{\frac{-{{d}^{2}}}{{{v}_{i}}}}}} \\ \end{align}$ | (15) |
根据Green[7]提出的M(x,y)=ELt(s),与式(15)进行比较,可得到最终透射计算如式(16)所示:
${{L}_{t}}(s)=\sum\limits_{i=1}^{k}{{{w}_{i}}}{{\exp }^{-\frac{{{s}^{2}}}{{{v}_{i}}}}}$ | (16) |
其中:s为光线传输距离;wi、vi见式(1)。利用式(16)可计算实现一个基于距离s与R、G、B通道不同衰减值的透射光查找图,如图 7所示。由图 7可知,s越小透射光的表现强度越大。预处理的厚度贴图由于漫反射部分的需求,越薄处数值越大,所以在透射实现部分,需反转的预处理厚度贴图作为式(16)中的距离参数s。
由于物理光照中,存在所有的折射、散射及反射的出射光强不能大于入射光的能量守恒原理,即本文得到的漫反射Lrd、透射项Lt和高光Lrs之间存在如式(17)的能量守恒[14]。
${{L}_{rs}}+({{L}_{rd}}+{{L}_{t}})\le 1$ | (17) |
但由于物体反射项与散射项之间相互排斥,表面反射光提高必然导致散射光的减少,本文利用Fresnel函数(反射折射比率函数)中的光线与物体表面法线夹角接近0时的反射系数f0项来实现能量守恒,当光线达到物体表面,发生表面反射和进入物体内部散射两种传播行为,f0代表着某一状态下物体表面反射项所占的百分比例,则1-f0表示同一状态下散射光所占百分比例,而三层光照模型中漫反射项Lrd与透射项Lt属于光线散射部分,令(Lrd+Lt)′为最终的出射的散射能量,则考虑能量守恒后,最终表达式如式(18)所示:
$\left( {{L}_{rd}}+{{L}_{t}} \right)'=\left( 1-{{f}_{\text{0}}} \right)\left( {{L}_{rd}}+{{L}_{t}} \right)$ | (18) |
本文在配置为CPU为Intel core i7 5300,内存8GB,显卡为NVIDIA GeForce GTX850的个人计算机上进行了渲染实验;使用Unity3D 5.3版本作为渲染工具,Shader语言为CG。实验用例皆为实际的桂林鸡血玉半透明高光雕件经图像三维重建后得到的数字化模型。
3.1 实验渲染结果分析本文展示的第一组实验对象为一尊天然的半透明桂林鸡血玉石作品“天马行空”,在经图像重建后得到的三维几何模型,如图 2(b)所示,利用本文方法进行渲染实验,在渲染过程中,每一步的绘制实验图如图 8所示。
加入纹理贴图后的整体渲染结果如图 9所示。
图 9(a)为图像三维重建后未经渲染的三维模型,图 9(b)~(d)分别为加入本文方法所提出的高光、散射、透射项渲染结果。从实验结果观察可见,散射部分主要模拟光线多重散射,达到模糊“辉光”的柔和光照效果,透射部分针对物体较薄处,实现了光的透射表现。
图 9(e)为使用能量守恒公式叠加之后的结果,从图 9(e)中可看出,最终的绘制效果具备了半透明高光玉石类材质中光泽感与透明感,整体效果较未修饰的重建模型,由于添加了散射模糊项则表现较为圆润,并且在马腿、马嘴、马尾处有明显的透射特征。图 9(f)展示了用本文方法合成渲染后各个不同角度的材质表现。最后合成渲染结果图 9(e)与原始模型图 9(a)比较可以发现本文方法可以很好模拟出半透明材质的真实感表现,与实物二维图像2(a)对比可看出本文方法具有较高的视觉逼真性。
3.2 实验结果对比分析 3.2.1 与Penner方法渲染效果比较使用桂林鸡血玉精品“三羊开泰”作为第二组实验对象,采用本文方法和Penner方法[9]进行的实验对比,结果如图 10所示。
本文方法主要基于Penner所提出的Pre-Integrated Skin方法,针对所需处理半透明模型所具有的散射、透射、高光特点,改进预积分的漫反射剖面,并在此基础之上添加与之物理光学特性匹配的高光、散射光照层。
从图 10可看出,在Penner的预积分漫反射剖面的方法之上,加入厚度贴图的概念,实现基于不同厚度的散射表现,并针对较薄区域加入透射光的作用,在高光上,比起Penner原方法中较为“干涩”的高光表现,采用了更适合半透明物体的微平面高光反射,改进后从视觉表现上更接近原物体的真实感光感表现。
3.2.2 与经典光照模型渲染效果比较使用桂林鸡血玉精品“牡丹朝阳”作为第三组实验对象,采用本文方法和经典光照模型叠加的方法进行的实验对比,结果如图 11所示。
由于经典光照模型计算量小、实现简单,所以通过叠加不同的经典光照模型来实现不同种类的材质表现是目前最主流的做法。图 11(c)为用漫反射经典模型Lambertian叠加高光经典模型Blinn-Phong的渲染结果,和图 11(d)本文方法的渲染结果相比,明显发现经典模型叠加的渲染结果过于生硬,完全突出不了半透明物体玲珑剔透的视觉表现,无法真实模拟半透明材质;而本文方法通过散射、透射及微平面高光三层光照模型较好模拟了次表面散射现象,使渲染结果与图 11(a)的原始图像相比,更具逼真性。
3.2.3 与光线追踪算法比较光线追踪是实现次表面散射最常用的方法,其优势是渲染效果较为真实,缺点是算法的计算量巨大,不适用于实时渲染。
如图 12所示,同为片面数为278100的三维模型,用光线跟踪算法渲染一帧时间为10~12s,但用本文算法渲染一帧时间为24ms左右,完全符合实时要求。在渲染效果方面,本文算法渲染效果(见图 12(b)),对比光线追踪算法所得渲染效果(见图 12(a)),在透明感上稍有不足,但整体还是具备一定真实性,所以综合效率和渲染效果,本文方法对实现真实感实时渲染更有优势。
表 1展示出在不用片面数的情况下利用本文方法达到的渲染帧速率。一般而言,12frame/s的帧速率为人眼可延时达到实时交互的最低帧速率,而如表 1中本文渲染速率,当绘制模型片面数达到160万(极高精度模型)时,其渲染帧率依然可以在30frame/s左右,为人眼实时最低效率的两倍。所以本文实验方法保证了实时绘制的需要。综合图 9实验可得,本文方法可实现半透明重建模型表面光泽的真实感渲染,并具备实时渲染速率。
本文在实现半透明高光物体图像三维重建后的真实感光感实时渲染问题上,提出利用高光、散射、透射三层光照模型线性叠加模拟其高光及半透明表现。其中,首先考虑到半透明物体的散透射表现与光线在其内部的传输距离有关,提出了用本地预烘培的厚度贴图来表示光线在物体内部传输的距离,并以传输距离作为散射及透射光线的衰减因子,来实现不同的光线传输距离对半透明物体散透射视觉的影响;然后在此基础上,为使光线衰减过程具备物理特性,采用六个高斯函数叠加模拟光线进入半透明物体后不同颜色通道的衰减曲线,在视觉上形成漫反射剖面,利用厚度贴图中的厚度信息当作散射剖面的距离影响因子,实现随衰减距离和漫反射剖面而改变的散射表现;最后提出一个可变散射剖面的实现方法,解决不同的半透明物体具备不同漫反射剖面这一特性。实验图像表明,所用方法能较为真实地模拟半透明物体真实世界的光泽表现,而且在模型数据量较大的情况下,可以保证实时渲染速率。但由于物体的漫反射剖面差异性较大,本文仅仅直观估计不同物体的漫反射剖面,并非基于精确测量数据得到的,在物理真实感方面仍有所欠缺,并且该方法对散射透射不规则的复杂物体在光泽实现上需人工调整厚度贴图才能完成,智能性不够,未来需进一步优化和改进方法,使之适应于更复杂的半透明物体并减少人工参与。
[1] | JENSEN H W, MARSCHNER S R, LEVOY M, et al. A practical model for subsurface light transport[C]//Proceedings of the 28th Annual Conference on Computer Graphics and Interactive Techniques. New York: ACM, 2001:511-518. (0) |
[2] | DONNER C, JENSEN H W. Light diffusion in multi-layered translucent materials[J]. ACM Transactions on Graphics, 2005, 24 (3) : 1032-1039. doi: 10.1145/1073204 (0) |
[3] | MUNOZ A, ECHEVARRIA J I, SERON F J, et al. BSSRDF estimation from single images[J]. Computer Graphics Forum, 2011, 30 (2) : 455-464. doi: 10.1111/j.1467-8659.2011.01873.x (0) |
[4] | KIM Y T, KIM K, PARK S C, et al. Realistic fetus skin color processing for ultrasound volume rendering[C]//Proceedings of SPIE 9015. Bellingham, WA: SPIE Press, 2014: 901504. (0) |
[5] | HUANG C G, HUANG T S, LIN W C, et al. Physically based cosmetic rendering[J]. Computer Animation and Virtual Worlds, 2013, 24 (3/4) : 275-283. (0) |
[6] | 蔡飞龙. 京剧脸谱数字化建模与绘制技术研究[D]. 杭州: 浙江大学, 2012:76-89. ( CAI F L. Digital modelling and rendering of facial makeup in Peking Opera[D]. Hangzhou: Zhejiang University, 2012:76-89. ) (0) |
[7] | GREEN S. GPU Gems[M]. Upper Saddle River: Addison Wesley Professional, 2004 : 263 -278. (0) |
[8] | D'EON E, LUEBKE D. GPU Gems 3[M]. Upper Saddle River: Addison Wesley Professional, 2007 : 293 -347. (0) |
[9] | PENNER E, BORSHUKOV G. Pre-integrated skin shading[M]. Boca Raton: CRC Press, 2011 : 41 -54. (0) |
[10] | WEIDLICH A, WILKIE A. Exploring the potential of layered BRDF models[C]//Proceedings of the ACM SIGGRAPH ASIA 2009 Courses. New York: ACM, 2009:1-58. (0) |
[11] | BURLEYU B, STUDIOS W D A. Physically-based shading at Disney[EB/OL]. [2015-10-10]. http://disney-animation.s3.amazonaws.com/library/s2012_pbs_disney_brdf_slides_v2.pdf. (0) |
[12] | RANKIN J R, BOYAPATI M. Visual hull construction from semitransparent coloured silhouettes[J]. International Journal of Computer Graphics & Animation, 2013, 3 (4) : 57-63. (0) |
[13] | JIMENEZ J, WHELAN D, SUNDSTEDT V, et al. Real-time realistic skin translucency[J]. IEEE Computer Graphics and Applications, 2010, 30 (4) : 32-41. doi: 10.1109/MCG.2010.39 (0) |
[14] | HOFFMAN N. Background: physics and math of shading[EB/OL]. [2015-10-10]. http://blog.selfshadow.com/publications/s2012-shading-course/hoffman/s2012_pbs_physics_math_notebook.pdf. (0) |
[15] | 温佩芝, 朱立坤, 黄佳. 非均匀玉石真实感实时渲染方法[J]. 桂林电子科技大学学报, 2016, 36 (4) : 321-328. ( WEN P Z, ZHU L K, HUANG J. A realistic real-time rendering method for inhomogeneous jade[J]. Journal of Guilin University of Electronic Technology, 2016, 36 (4) : 321-328. ) (0) |