OCTANE 渲染器制作伪 SSS 提升渲染速度方法小结

本文由 简悦 SimpRead 转码, 原文地址 www.bilibili.com

作者:H-T-Z-T

大家都知道所谓的 SSS 次表面散射皮肤材质,传统做法是在 specular 的基础上,添加 scattering medium,然后用两个 RGBspectrum 去控制 absorption 和 scattering, 最后用 floattexture 去控制浮点强度,最后 mix image 达到 SSS 的效果,但是这种方法非常浪费资源而且噪点很难控制,对于低配电脑简直是噩梦(当然你习惯 HDR + 圆盘 + 模型就无所谓了)。

大家都知道所谓的 SSS 次表面散射皮肤材质,传统做法是在 specular 的基础上,添加 scattering medium,然后用两个 RGBspectrum 去控制 absorption 和 scattering, 最后用 floattexture 去控制浮点强度,最后 mix image 达到 SSS 的效果,但是这种方法非常浪费资源而且噪点很难控制,对于低配电脑简直是噩梦(当然你习惯 HDR + 圆盘 + 模型就无所谓了)。

那怎么办呢?我们可以以 diffuse 为基础,首先关闭 diffuse 通道,然后用 rgbspectrum 去控制 transmission,然后给 medium 一个 absorption,然后再去 mix image,然后你就会发现,哇~!!!!

原理实际上很简单,transmission 在 OC 里面的表现机制是过滤掉其他颜色而保留 “排除” 颜色,所以用 RGB 去控制 transmission,就是给予了光透过材质保留的颜色,在皮肤材质上自然是红色,所以 RGB 建议把红色拉到头;而 absorption 在 OC 里面的表现机制是决定了模型皮肤颜色表现的深浅程度(姑且这么理解吧),所以这两个节点赋予了 diffuse 材质的通透性、通透颜色、和通透程度,电脑在计算的时候就省略了 specular 基础上的 SSS 材质的面下散射、折射计算过程(实际上也是计算机按函数模拟计算的,不是真实散射、折射的计算,因为没法算。。。),使渲染过程得到大幅简化,自然也就非常省资源喽~~

还要注意一点,我们一般将 image 与以 diffuse 为基础的伪 SSS 混合后,才形成最终的皮肤材质,因为把 diffuse 通道关闭转而用 transmission 来表现通透,容易造成 mix 材质的 index 值偏低,因此我们在混合后,要将 mix 的 index 值拉高一些,才能实现更好的效果。

PS:我的习惯是用 floattexture 来控制 transmission,而在 absorpion 上连接一个 RGB(纯红)再连接 medium,这种做法更适合于身体皮肤,因为 float 可以控制皮肤材质的粗糙度,当然只是视觉上的,有需要的朋友可以用 noise+transforno+bump 来模拟;有时也用 glossy 为基础来调伪 SSS,这种更适合面部皮肤,就是利用它的 roughness 来模拟 “油腻” 皮肤效果,大家也可以试一试哦~

总之,octane 渲染器的三大材质 diffuse\glossy\specular 都是可以用来做 SSS 材质的,所谓的伪 SSS 材质不过是省略了表面下散射折射计算而已。目前 octane 发展到 4.0,出了一个金属材质,这个东西也非常有意思,等我总结总结后再分享给大家。

就是这些啦,希望能对大家有所帮助。谢谢!

评论