1. 引言
角度不同,远近不同,透光不同
什么是次表面散射(SSS)
次表面散射(Subsurface Scattering,简称 SSS)描述的是这样一类物理现象:光线照射到物体表面后,并没有全部在表面直接反射,而是有一部分穿透进入物体内部,在内部经过多次散射、吸收之后,再从表面的其他位置透出。
应用场景
SSS 在实时渲染中非常常见,典型场景包括:
- 角色皮肤:尤其是耳朵、鼻翼、手指边缘等薄区域,背光时会出现明显的红色透光。
- 玉石、大理石:光在内部散射形成柔和的体积感。
- 蜡烛、蜡质物体:靠近火焰一侧会透出暖色光晕。
- 树叶、花瓣:逆光时叶片呈现半透明质感。
为什么选择预积分皮肤(Preintegrated Skin)
UE 中实现 SSS 有多种方案,常见的有:
| 方案 | 精度 | 性能开销 | 适用场景 |
|---|---|---|---|
| Subsurface(简单散射) | 低 | 极低 | 远景角色、移动端 |
| Preintegrated Skin(预积分皮肤) | 中 | 低 | 中近景角色、移动端/性能受限 PC |
| Subsurface Profile(次表面轮廓) | 高 | 较高 | 影视级近景、PC 高端配置 |
| Substrate(UE5 新材质系统) | 高 | 视配置而定 | 新项目、追求物理准确性 |
Preintegrated Skin的核心思路是:把复杂的多次散射计算预先烘焙成一张查找表(LUT),运行时只需根据光照角度和曲率查表插值,从而以极小的开销近似出不错的散射效果。它牺牲了一部分物理精度,换来了非常友好的性能表现,非常适合移动端或对帧率敏感的 PC 项目。
2. 材质节点图解析(M_Preintegrated_skin)
基础属性设置
基础颜色(Base Color)与次表面颜色(Subsurface Color)
在预积分皮肤着色模型下,材质会同时暴露Base Color与Subsurface Color两个颜色输入:
- Base Color:表面直接反射的颜色,通常由皮肤漫反射贴图驱动,决定整体肤色。
- Subsurface Color:散射光的颜色,也就是"光从内部透出来"时携带的色调。
粗糙度(Roughness)
图中粗糙度使用固定值0.5。这个数值在皮肤材质中是一个比较中庸的起点:
- 太低(< 0.3):高光过于锐利,皮肤像涂了油或塑料;
- 太高(> 0.7):高光散得太开,皮肤显得干燥、哑光过度。
Texture Sample
法线强度太高,用FlattenNormal节点压平法线
表面反射率(Surface Reflectance)与平均自由程颜色(Mean Free Path Color)
PS:这在**Subsurface Profile(次表面轮廓)**里调节
平均自由程(Mean Free Path)是 SSS 中最核心的物理概念之一:它表示光子在发生下一次散射之前,平均能走多远。
不同波长的光在皮肤中的平均自由程差异很大:
- 红光:平均自由程最长,能穿透较深,因此皮肤背光时透出红色;
- 绿光:中等;
- 蓝光:最短,很快被吸收。
Surface Reflectance则控制表面反射的比例,影响整体亮度与对比度。它与 Base Color 配合,共同决定皮肤的明暗层次。
平均自由程距离(Mean Free Path Distance)
示例面板中该值为20.19,同时Scene Unit Scale为0.1。
这两个参数必须配合理解:
- Mean Free Path Distance是散射距离的绝对数值;
- Scene Unit Scale定义了场景单位与物理单位(通常为厘米)的换算比例。
实际物理距离 ≈Mean Free Path Distance × Scene Unit Scale。示例中约为2.019单位。这个值决定了散射的"视觉尺度"——数值越大,光透得越深,皮肤越像蜡;数值越小,散射越集中在表面,接近普通漫反射。
散射分布(Scattering Distribution)
示例中为0.93,接近 1,表示强前向散射。
散射分布参数控制光线散射方向的偏置:
- 接近 0:后向散射,光更多往回弹;
- 接近 0.5:各向同性散射;
- 接近 1:前向散射,光倾向于沿原方向继续前进。
皮肤属于典型的前向散射介质,0.93是一个合理的取值。它带来的视觉效果是:光能穿透较深,透光区域边缘柔和,符合真实皮肤的观感。
IOR(折射率)
示例中为1.55。
折射率描述光从空气进入介质时的偏折程度。常见参考值:
- 水:1.33
- 皮肤/有机物:约 1.4 ~ 1.55
- 玻璃:1.5
- 钻石:2.42
1.55是皮肤与多数有机材质的典型值,它同时影响表面高光的菲涅尔反射强度。除非有特殊艺术需求,一般不建议大幅偏离这个范围。
粗糙度 0 / 粗糙度 1
双面高光模型提供两个粗糙度输入:
- Roughness 0:控制表面直接反射的高光粗糙度;
- Roughness 1:控制透射光(穿过材质后从背面透出的光)的高光粗糙度。
两者可以独立调节,从而实现"表面高光锐利、透射光柔和"的效果,这在薄皮肤区域(如耳朵)尤其明显。
叶混合(Leaf Mix)
示例中为0.85。
Leaf Mix 原本是为树叶这类薄片材质设计的参数,用于混合双面光照。但在皮肤材质中,它可以被巧妙利用来模拟耳廓、鼻翼、手指边缘等极薄区域的透光感——这些区域厚度小,光容易穿透,视觉上接近"叶片"的透光行为。
0.85是一个较高的值,说明作者希望强化薄区域的透光。如果发现耳朵透光过强、像塑料片,可以适当降低到 0.5 ~ 0.7。
透射着色(Transmission Tint)
控制透射光的颜色。它与 Mean Free Path Color 有相似之处,但作用层面不同:
- Mean Free Path Color 影响散射计算的波长权重;
- Transmission Tint 直接给透射光染色。
总结
这期低质了。。。。
参考视频:
【次表面散射 (Subsurface Scattering) | 虚幻5材质学习】 https://www.bilibili.com/video/BV1KE421A7jS/?share_source=copy_web&vd_source=1db761baa3e453aebd572fb8d5056343