节选自《不同类型玉石材质3D渲染技术研究_李欢欢_2009》

“半透明材质”概述

半透明、微透明的透明度效果是玉石材质区别于其他材质的最重要的视觉特征,通常和皮肤、牛奶、蜡烛、纸张等在计算机图形学和计算机3D 动画制作中被归入“半透明材质”的一类,相比透明物体和不透明物体,半透明、微透明物体的光照属性更为复杂,当光线穿透这类物体的表面时,不但发生反射和折射的情况,在物体的内部还发生不均匀的散射。这一现象称为 Sub-Surface Scattering,即次表面散射,简称3S。 现阶段对“半透明材质”的效果模拟研究的很多,很多渲染器如 Mental Ray、Vray等都增加了 3S 渲染的属性设置参数,很多教程也在介绍不同三维软件相关的制作方法,计算机图形学专家们也在进行更深入的半透明效果绘制的算法研究,但是基本上“半透明材质”渲染效果的研究一般都是围绕渲染实现的真实度实现的速度这两方面,同时,由于目前逼真的人物制作是CG制作的热门,大多数 3S 材质探讨的都是皮肤的特点,表现玉石这一题材的作品相对比较少,有关于玉石的大多数研究也均是在探讨次表面散射中的单散射问题时作为一个总体的特征材质进行探讨。因此,目前尚未见到对于“半透明材质”中不同的半透明程度的比较研究。 本文将次表面散射的光照现象与玉石材质“半透明”艺术视觉效果相结合进行分析,对不同类型玉石材质的不同透明度效果进行比较研究,同时为避免前文所述的 Mental Ray、Vray 渲染3S效果渲染的速度问题,提出一种基于 MAYA 自身渲染的方法模拟玉石材质的“半透明”效果。

次表面散射现象分析

光的传播

当光线从一种介质传播到另一种介质表面时,它会产生反射、漫反射、吸收、折射和散射。这是在真实世界中光线照到所有物体都必然会产生的现象。但并不是所有的现象都显而易见。对于浑浊的液体或不透明的固体来说,它的反射比折射要强得多。但对于半透明的材料,我们透过它看不到对面的物体,但是却能看到对面的光亮,甚至隐隐的看到材料内部的组织结构。这就说明照射在半透明材料上的光线没有直接传递到我们的眼睛里,而是在材料的内部发生了折射和散射。 以下分别说明光线照射到不透明、透明和半透明材质表面时的传播情况:
(1)光线照射到一般的不透明物体上的传播情况如图 4-1 所示。
image.png
图 4-1 光线在不透明物体表面反射示意图
Fig.4-1 Sketch map of light reflected from the opaque surface
光线碰到不透明物体的表面后立刻反射而回,并在反射中损失掉一部分能量。这种模型对于光滑且不透光的表面——比如金属,是完全适用的。

(2)光线照射到一般的透明物体上的传播情况如图 4-2 所示。
image.png
图 4-2 光线在透明物体表面反射和折射示意图
Fig.4-2 Sketch map of light reflected and refracted from the transparent surface
光线碰到透明物体表面后,一部分发生反射,另一部分在接触的表面发生折射。这种模型对于光滑的透光的表面——比如玻璃,是完全适用的。

(3)光线照射到“半透明”的物体上的传播情况如图 4-3 所示。
image.png
图 4-3 光线在半透明物体表面反射、折射和散射的示意图
Fig.4-3 Sketch map of light reflected, refracted and scattered from the translucency surface

光线碰到“半透明”物体表面后,一部分被反射,一部分被折射,而被折射的光线在物体内部又发生散射,散射会在物体内部渐渐衰减,直到完全被吸收或者从物体表面另外不同的点穿出
根据光线照射在“半透明”物体上时发生的反射、折射及散射现象,计算机图形学的研究专家一直在努力研究最合适的光照模型。图 4-4 就是著名的 Henrik Wann Jensen 的BSSRDF计算模型示意图之一
image.png
图 4-4 单入射光线在近似散射的情况下转变为双偶极子辐射源
Fig.4-4 Incoming ray is transformed into a dipole source for the diffusion approximation.

次表面散射视觉效果讨论

在多数情况下,3S的“半透明”的视觉效果总是会和 Translucence 的单纯的半透光的视觉效果混淆,其实这两者之间无论在光线传播的原理上,还是艺术视觉效果的表现上都有很大的差别。 半透光的视觉效果是透过物体并不能完全看清楚物体后面的物体,而只能看到模糊的光亮和影像,在使用时仅有当光源处于物体背面时,这种半透光的效果才能表现出来。半透光其实仅仅是某些较薄的物体对光线穿透的程度的表现。 例如:阳光穿过树叶的透光效果,如图 4-5 和图 4-6 所示。
当有一光源在树叶的背后时,较薄的树叶具有“半透光”的特性,因此,从树叶的前面看过去也能够模糊的看到附着在输树叶背后的昆虫的影像以及光源发出的模糊的光亮。但当光源完全处于树叶的前面时,树叶的“半透光”的特性就无法发挥出来,根本看不到树叶后面的昆虫。
因此在渲染这一类型“半透光”的材质时,基本调整的就是参数 Translucence 的变化。
image.png
图 4-5 光源在背面时叶片半透光的渲染图
Fig.4-5 Translucence rendering when the light source on the back of the leaves

image.png
图 4-6 光源在前面时叶片半透光的渲染图
Fig.4-6 Translucence rendering when the light source in the front of the leaves

而正如前所述,次表面散射现象是光线照射到物体表面后,不仅发生反射和折射,在物体内部还发生不断散射的现象。这使我们看到的物体对照射到它表面的光线并没有完全吸收或集中反射,而是在不停的散射中回到物体表面,又透射出来,而且是从离入射点有一定距离的物体表面附近透射出来。因此,物体在灯光的照射下,3S 现象使得照明的整体效果变得柔和,一个区域的光线会渗透到表面的周围区域,而小的表面细节变得看不清了。同时,光线穿入物体越深,就衰减和散射得越严重,处于物体上不同位置的明度会有层次的变化。这种视觉效果不仅表现在灯光处于物体的后面的情况时,当灯光处于物体的前面时依然会有这样的视觉效果。 例如典型的 3S 材质皮肤,在照亮区到阴影区的衔接处,散射也往往引起微弱的倾向红色的颜色偏移,这是由于光线照亮表皮并进入皮肤,接着被皮下血管和组织散射和吸收,然后从阴影部分离开。散射效果在皮肤薄的部位更加明显,比如鼻孔和耳朵的周围。如图 4-7 所示。
image.png
图 4-7 皮肤 3S 效果渲染图
Fig.4-7 3S rendering about the skin

图 4-8 和图 4-9 是采用 3S 材质渲染和没有使用3S渲染的图片对比:
image.png
图 4-8 皮肤渲染效果比较 (a)未采用 3S;(b)采用 3S
Fig.4-8 Skin Rendering (a) without 3S; (b) with 3S
image.png
图 4-9 牛奶渲染效果比较(a)未采用 3S;(b)采用 3S
Fig.4-9 Comparative of milk Rendering (a)without 3S; (b) with 3S
图 4-10 和图 4-11 是以往研究中采用3S 渲染的一些玉石材质的图片:
image.png
图 4-10 光源在玉石材质背后时的渲染图
Fig.4-10 Rendering results when the light source on the back of the boulder
image.png
图 4-11 光源在玉石材质前面时的渲染图
Fig.4-11 Rendering results when the light source in the front of the boulder

玉石材质在受光线照射时,若光线从背后照射过来,从前面看光线被玉石内部散射,变得混乱和零碎,使得玉石后面的影像完全无法看清,而只是模糊的光亮;若光线从前面或侧面照射时,光线照亮表面,并进入材质内部,不同深度散射的程度不同,光亮从表面渐渐渗透到内部,最终被完全吸收,而且这种光亮的变化受玉石厚度和材质物理特征的影响,发光的颜色、范围、强度都会有所不同。 目前很多有关于玉石材质的“半透明”效果的研究仍然建立在实现半透光的效果上,因此这样的研究结果渲染时,光线只能从背后照射,一旦光源转向模型的前面或侧面进行照射时,半透光的效果就消失了。例如法国三维艺术家 Emmanuel Campin 发明的半透光材质节点网络等。这其实并不符合玉石材质“半透明”的视觉效果,也不满足制作3D 时的实际要求。因为首先玉石材质的“半透明”的原理归属于复杂的3S,而并不仅仅是Translucence,正如前文所述,这两者的视觉效果有一定的差异;其次,在真正制作动画时,光源肯定不会仅仅从模型的后面照射,必须保证光源转到模型的前面或侧面时仍然能表现玉石材质的视觉特征。
目前,要表现较好的光线从前面照射玉石材质后的次表面散射效果,通常使用方法是基于 BSSRDF 的光照模型的算法实现或者是 Mental Ray 等带有 3S 的渲染器进行渲染,由于这类渲染器同样是尽可能采用模拟真实光线传递算法进行效果实现,因此最大的缺点就是渲染速度较慢

BSSRDF

BSSRDF是Bidirectional Scattering Surface Reflectance Distributed Function双向散射表面反射率分布函数的缩写。
说到BSSRDF就不得不先说BRDF。BRDF是Bidirectional Reflectance Distributed Function双向反射率分布函数的缩写。
要 完备地描述真实世界中的材料的反射性质,就必需描述在各个方向入射到材料上的光线在各个方向的反射强度按反射方向的分布情形。这就是所谓的“双向反射率分 布”。其中完全镜面折/反射光强按折/反射角的分布情形是由物理学家A.J.Fresnel(菲涅耳)总结出来的,被称为菲涅耳公式。而计算机图形学中长 久以来使用的光照模型(如,phong,lambert,blinn等)就是物理学范畴中的BRDF的近似。
然而,即使是物理学范畴中的BRDF都有不完备之处———它是在假定光线的入射和反射发生在材料表面同一点的前提下进行统计的。而光在射入真实世界中 的绝大多数材料表面时都会扩散到材料内部,然后再经过各不相同的路径反射出来,总而言之不是限定在材料表面同一点发生。这样一来恐怕只有金属才是严格的 BRDF,其它能发生或强或弱散射的材料都可归为BSSRDF。云,大理石,葡萄,牛奶,人体的各种生物组织都是明显表现半透明的材料,都是因高度散射造 成的。要表现这些特性用BRDF显然力不从心。而BSSRDF却能兼容所有材料的属性,包括BRDF。可见不能忽视BSSRDF。
我在CG里更是重视半透明材料的表现。
BSSRDF还有一大优点就是它从一开始就是基于分布式光线追踪采样的,广泛用到Monte Carlo估计手法,利于与常规光线追踪兼容,也能很好地与基于分布式光线追踪的GI和caustic协同工作。”
image.png

定义式

次表面散射(Sub-Surface Scattering | 3S) - 图13
BSSRDF对应的渲染方程的一般形式:
次表面散射(Sub-Surface Scattering | 3S) - 图14