阿诺德教程造光

【插播002】Subsurface

2018-05-18  本文已影响119人  卜噪大仙

综述:

次表面散射(SSS)模拟光线进入对象并在其表面下散射的效果。并非所有的光线都从被照明对象表面散射,其中一部分会穿透表面并被材质吸收、散射在照明对象内部。这些在材质内部散射的光线中,还会有一部分会再次回到被照明对象表面,并被摄像机捕捉、变得可见。这个过程被称为次表面散射SSS。SSS对于大理石、皮肤、树叶、蜡、牛奶等材质的真实再现是必不可少的。该着色器中的SSS组件使用蛮力光线追踪算法(暴力算法,穷举法)进行计算。

当渲染像堆叠的塑料这种材质时,SSS显得尤为重要,例如:

左不启用SSS,右启用SSS

各项参数详解:

Subsurface参数

【Weight】控制漫反射和次表面散射之间的“混合”(次表面散射的强度)。当设置为1.0时,只有SSS,当设置为0时,没有任何SSS。 在大多数情况下,使用1.0(完全SSS)。


通常,提高权重值,颜色会变得更通透:



【Color】用于确定次表面散射效果的颜色。 例如,皮肤材质意味着将其设置为肉色。

Tips:
Skin Color
通常,将皮肤颜色纹理贴图链接到次表面颜色,并将次表面颜色的半径设置为适合皮肤的值(假设红色主要来自血液,大多数情况下红色通道值越高,皮肤呈现颜色越红)。如果需要的话,半径也可以被纹理化。静脉是颜色纹理贴图的一部分,不仅影响皮肤颜色,而且还影响次表面散射在皮肤上的表现。
标准曲面混合了Base和SSS,你可以自己选择是否在皮肤上使用漫反射。这种混合可以用于多种情况,例如混合不同材质的面具或者面部彩绘,或通过将相同的材质连接到 Base ColorSubsurface Color并更改混合条件来改变清晰度。

皮肤着色器设置举例
皮肤着色器参数设置参考

【Radius】光线在表面下可以穿透的深度,也称为“平均自由程”(MFP)。这个参数(Radius)影响散射光线在返回表面之前,在表面之下传播的平均距离。可以为每个色彩成分(r,g,b)分别指定不同半径值。Radius的值越高模型的透光性越强,值越低外观透明度越低。



颜色越浅,散射的光越多。 值为0将不会产生散射效果:

增加Radius的值可以改变材质的外观,使其起来从像皮革到像大理石。 SSS非常依赖数值范围, 需要根据模型的大小调整Radius。 如果要使用默认的SSS设置进行渲染,则可能会产生某些不正确的外观。 当然另一种选择是,调整场景数值,也可以得到类似的结果。

可以为每种RGB颜色选择不同的Radius值,而不是分配相同数值给所有颜色。 例如,粘土或皮肤等材料的Radius值,红色应高于绿色和蓝色。

Tips:
渲染皮肤时,应使用像1.0,0.35,0.2等值,表示红色应该分散最深,绿色和蓝色其次。 这将取代皮肤的三层工作流程(深层,中层和浅层),使深层显示为红色,表明深层应以更大的半径散射,即scatter_radius.R设置为更大的值。

下图显示了增加红色的Radius值时的效果。 注意圆周边的彩色“边缘”的效果。 将合成包中源图像的红色通道进行高斯模糊,会出现同样的效果。



【Scale】控制光线在反射回去之前,可能在表面之下传播的距离。 它可以缩放散射半径,调节颜色的SSS半径。

如果场景以米为单位,则可以将SSS比例设置为0.01,以厘米为单位指定SSS半径。 例如对于皮肤,SSS半径可以是0.37cm,0.14cm,0.07cm。



**【Type】可以选择diffusion或者randomwalk两种类型(默认情况下使用diffusion,以免打破现有场景外观)。

有关BSSRDF请移步:局部光照模型杂记

【Anisotropy】Henyey-Greenstein(HG函数)在-1(完全后向散射)和1(完全前向散射)之间的各向异性系数。 对于各向同性介质,其默认值为0,从而在各个方向均匀地散射光线,以获得均匀的光照效果(例如镜面)。 正值偏向光线散射前方,负值偏向光线散射后方。
这个参数只适用于randomwalk SSS模式。

【SSS Between Objects】可以将多个对象标记为属于同一个SSS“集合”,以便照明在对象边界上模糊。 一个常见的用例是牙齿和牙龈之间的模糊。 它通过将常量STRING userdata sss_setname给集合中对象赋予相同值来启用。
目前这种方法与randomwalk SSS不兼容。

禁止私自转载。
转载请私信。

上一篇 下一篇

猜你喜欢

热点阅读