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

47 篇文章 0 订阅
18 篇文章 10 订阅


什么是次表面散射

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 透光距离计算次散射的颜色)

用我自己的 E-Name 来弄一张 SSS 效果:
在这里插入图片描述


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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值