Blender - Subsurface Scattering(次表面散射) - 实现比较好的奶酪材质参数说明

文章目录

  • 什么是次表面散射
  • 建模、添加 SSS 材质


什么是次表面散射

Subsurface Scattering - 次表面散射,简写 SSS

以前没去了解过,但是发现,如果要制作光通透效果,还是要了解实现原理,对于参数调整也会得心应手


Subsurface Scattering (SSS) 的说明,我参考了一篇写得很不错的:【插播002】Subsurface


我自己总结理解为:光波在射入物体后,部分光波在物质中穿透,最后从他物体内多次散射后射出,然后我们的眼睛(相机)捕抓到这些光波的颜色。


  • Radius(光通透距离)

光波在射入物体后,部分光通透性一般的介质,如:我们的手,耳朵、大理石、蜡烛等,这些物质,大概弄个1~2厘米,都有中等的光通透性,这些光波都比较容易穿透这些物质。

所以也就有:光通透距离,不同介质(材质)该系数不一,有些叫:光自由程(光波射入后,还能自由行程的距离)
(很多渲染系统都叫:Surface Scattering Radius,用半径来描述这个距离)


  • Radius Channel(光通透的 RGB 分量)
    就是对白光的 RGB 复合光的每个通道的光通距离,数值越大,那么能同透的颜色分量就可能越大

如果我们要设置我们的皮肤光通透距离分量的 R 总是偏高的,因为很多时候都是散射出红光(你可以自己用手机开启手电筒光,然后用单个手指挡住光源,你会发现你的手指非常的红)


建模、添加 SSS 材质

使用了 Vertex Group(顶点组) + Weight Paint(笔刷调整 Vertex Group 权重) + Displace(置换)+ NoiseTex(噪点纹理)+ Bool(布尔挖空)就可以建模成功

在了解了参数的用意后,我们就可以添加材质,并调整参数

先来张效果图,与参数的截图

  • Base Color - 是奶酪的基础反射率的颜色值(如果要自己用 Unity 或是 C++ 中的 OpenGL,也可以只用纹理)
  • Subsurface - 是调整次表面散射的放大强度,可以说是一个缩放值,对 Radius 的缩放值
  • Subsurface Radius - 值为:(20, 20, 0.05),就是我们上面所说的光通透距离分量(RGB),因为奶酪本身偏黄,透出来的光也就偏黄色,所以你可以看到 RG 通道值都比较高
  • Subsurface Color - 值为:(255,255,255),就是它能透出来的光的颜色分量系数,白色,就是说每个通道量都有透光性(所以透光计算时,计算散射出来的颜色,需要使用光源颜色与这个 Subsurface 相乘后,才是后续用于与 Radius 透光距离计算次散射的颜色)

这个实现,后面如果有空我会尝试在 Unity 或是 C++ + OpenGL 中实现,但也只能实现效果一般的模拟版本,如果要实现比较好的,还是只能光追方式的版本

你可能感兴趣的:(Blender,图形,理论)