引言:皮肤为何难渲染?从“蜡感”说起
在Blender中制作角色皮肤,几乎每个进阶用户都经历过“蜡感”的挫败:模型光滑、贴图精细,但渲染结果却像塑料或蜡烛,缺乏鲜活的生命气息。这背后的根本原因,在于我们对“皮肤”这一材质的物理本质缺乏深层认知。皮肤不是简单的漫反射表面,它是一个由多层半透明介质构成的复杂光学系统。本教程将从底层光传输机制出发,逐步推导Blender中次表面散射(SSS)节点的算法原理,并给出可落地的参数配方与工作流。

现象:当光遇到皮肤——为什么传统BRDF会失效
在计算机图形学中,基于微平面理论的BRDF模型(如Principled BSDF中的漫反射与高光)假设光线在表面交点处即被反射或吸收,忽略了光线进入介质内部后的传播。对于金属或塑料,这一假设成立;但皮肤的半透明性导致光线在表皮层内部发生多重散射,部分光子从入射点附近的其他位置重新出射。若仅使用BRDF,这部分“内散射”能量被错误地计为表面吸收,表现为暗部过黑、色彩浑浊、缺乏通透感——这正是“蜡感”的成因。物理学上,这属于次表面散射(Subsurface Scattering, SSS),一种参与介质中的辐射传输问题。
原理:从辐射传输方程到Blender的SSS算法
严格描述光在皮肤中的传播需求解辐射传输方程(RTE),这是一个积分-微分方程,通常无解析解。为此,Blender采用了近似模型:将SSS贡献视为一个额外的、依赖于入射与出射点距离的漫反射项。具体而言,Principled BSDF的SSS参数并非简单调高“通透度”,其背后是偶极子近似(Dipole Approximation)——假设半无限介质内部存在一正一负两个虚拟光源(分别位于表面下方d深度与上方z处),通过叠加两者对表面某一点的漫反射贡献,近似求解远场散射。对于近场(即入射点附近),偶极子模型存在失真,因此Blender还支持更精确的随机游走(Random Walk)实现,它直接模拟光子路径:光子进入表面后,依据介质的散射系数与吸收系数进行随机步进,直至被吸收或逃逸。在CPU渲染中,Blender默认使用随机游走,它更物理正确,尤其适合薄片物体(如耳朵)的透光效果。
关键参数背后的物理量
Principled BSDF中的SSS Radius并非“散射半径”,而是与介质的散射系数(Scattering Coefficient)相关联。它定义了散射特征距离——光子在此距离内发生散射的概率呈指数衰减。默认的1.0单位意味着在1个Blender单位内,散射概率衰减至1/e。对于真实皮肤,需要按模型比例缩放Radius。同时,SSS Color则对应介质的吸收系数,它决定了光线在内部的衰减与最终的出射颜色。皮肤呈红色调,是因为血红蛋白对短波长(蓝绿)光吸收强,而红光穿透更深、散射更远。
技巧提示:当模型的皮肤偏黄或偏蓝时,不要只调整SSS Color的明暗,而应思考其背后血红蛋白与黑色素的浓度。例如,唇部血管密集,血红素浓度高,可增大SSS Radius并调高SSS Color的红色分量。
推导:从物理参数到Blender节点数值
要获得可信的皮肤渲染,必须将真实皮肤的生理光学参数映射到Blender的节点系统中。这里给出一个已校准的推导流程,基于文献中典型的皮肤光学特性(如Farmer & Causin, 2016)。假设模型比例以米为单位,则平均自由程(即散射特征距离)约为1-2mm。在Blender中,若模型高1.8m,则Scale为1.8,SSS Radius需设为0.001~0.002(以模型比例为单位)。但Blender的Radius单位为米(Scene单位),因此若场景默认单位为米,应设为0.0015左右。然而,此数值对多数用户过于微小,且随机游走模式下,Blender会自动按Scale进行缩放,因此更实际的做法是:在“World Properties”中确认“Units”为米,并设置模型Scale为1(即模型真实尺寸)。然后,通过一个基础皮肤材质预设开始:在Principled BSDF中,将“Subsurface”设为0.01(用于皮肤,数值较小意味着主要能量来自漫反射,SSS仅作补光),设置Subsurface Color为中性的粉红色(约RGB 0.8, 0.6, 0.5),Subsurface Radius保持默认或按表1调整。下表是基于文献的参考值,适用于较高精度的角色特写。
| 材质部位 | Subsurface Color | Subsurface Radius (R,G,B) | 说明 |
|---|---|---|---|
| 面部皮肤 | #E8B4A0 | 1.0, 0.4, 0.2 | 红远、绿中、蓝短,符合血红蛋白吸收 |
| 嘴唇 | #C85A5A | 2.0, 1.0, 0.5 | 血管密布,红光穿透更深 |
| 耳朵 | #FF9980 | 3.0, 1.5, 0.8 | 透光性强,可适当增大Radius |
| 手背 | #E0B090 | 1.5, 0.6, 0.3 | 需结合纹理 |
需要注意的是,这些数值依赖于光照强度与场景曝光。在标准灯光下(亮度约1),这些值可产生柔和效果。若使用更亮的光(如Sun强度10),Radius需相应降低,否则皮肤会显得过于苍白通透。
验证:通过节点组与测试渲染校准SSS参数
理论推导后,必须通过实验验证。推荐创建一个“SSS校准场景”:灰色背景,一盏强度适中的面光(Softbox效果),一个球体模型(或头部模型),使用HDRI环境贴图。然后,逐步调整参数,并渲染测试图。观察以下三方面:
- 暗部过渡:若暗部区域出现不自然的紫色或黑色,说明SSS强度不足或吸收系数过高;若能隐约看到皮肤下的血色,则说明适中。
- 边缘透光:用强逆光观察耳朵或鼻翼,若透光呈半透明且颜色偏红,则随机游走计算有效;若为全黑,则可能Scale设置错误。
- 颜色溢出:对比不同SSS Color与Radius组合下的脸颊红色调,找到最接近真实照片的平衡点。
一个常用技巧是使用“Subsurface Scattering”节点(旧版接口)进行更精细的控制,但在Blender 3.x以后,Principled BSDF已集成物理正确的随机游走,因此推荐直接利用其参数。以下是一个推荐的节点设置流程,用于模拟带有纹理的皮肤:将漫反射贴图(Albedo)连接到Base Color,同时通过一个“ColorRamp”调整贴图的明暗,作为SSS Color的输入——因为皮肤内部的散射颜色取决于表层的色素分布,但更深层则更红。这样,通过纹理分离了表皮与真皮的特性。

// 伪代码:节点逻辑示意
ShaderNodeBsdfPrincipled {
BaseColor = DiffuseTexture
Subsurface = 0.01 + (1 - Roughness)*0.02 // 高光区域适当增加SSS
SubsurfaceColor = Mix(Texture, Pink, 0.5)
SubsurfaceRadius = Vector(0.5, 0.2, 0.1) * SubsurfaceScale
SubsurfaceRoughness = 0.2
}
总结:突破蜡感的关键是理解“光在介质中的旅程”
次表面散射并非一个可调参数,而是一个物理过程。Blender的随机游走算法为真实感皮肤渲染提供了坚实基础,但只有当我们理解其背后的光学原理,才能正确设置参数——而非盲目拉动滑杆。通过本文的“现象→原理→推导→验证”路径,你应该已经掌握了从生理光学参数到节点数值的映射方法,并能运用参考表格与测试渲染,快速校准出具有生命感的皮肤材质。同时,请留意渲染性能:随机游走计算相对昂贵,建议在最终渲染时启用,而预览可用较快的近似模式。最后,拥抱迭代:每一次渲染测试都是对理论理解的加深。
注意事项:SSS效果与场景单位尺寸强相关。如果模型是导入的,请检查Scale是否为1(Ctrl+A应用缩放),否则Radius数值将产生不可预知的偏差。此外,电影级调色(如ACES)对SSS影响显著,建议在Filmic或AgX色彩空间下进行最终输出。
当你掌握了SSS的物理核心,下一步便是将它与高精度纹理、光照环境结合,创造令人屏息的角色。而这条路,需要系统的训练与反复实践。这正是火星人教育所深耕的领域。

延伸学习:从物理正确到艺术表现
物理正确的SSS是基础,但艺术表现还需考虑风格化需求。有时需要夸大SSS效果以制造梦幻感,或减弱以追求写实中的干练。Blender提供了Subsurface Roughness参数,用于控制散射的模糊程度,在随机游走模式下可模拟粗糙介质(如油性皮肤)的散射。在实际项目中,我们应结合角色风格设定,灵活调整物理参数,而“真实”并非少见标准。
如果你希望系统掌握Blender材质与渲染精髓,进阶为专业的AIGC视觉设计师,火星人教育将是你理想的选择。创办24年来,火星人教育专注数字艺术与AIGC实战职业技能培训,开设课程涵盖AI漫剧创作、AIGC视觉设计、UE5游戏特效、室内全屋定制、MAYA三维动画、C4D动态设计、工业设计、NUKE影视后期、摄影摄像实训等前沿方向。我们在北京、深圳双校区开设线下面授班,面向美术生、在校大学生及意向转行的职场人群,以项目化实训教学,夯实专业技能,助力就业与职业提升。若你期望在三维渲染与视觉设计领域取得突破,欢迎拨打咨询电话:010-65918670,开启你的专业提升之旅。








评论(0)