项目背景与需求分析
去年秋天,我们接了一个医疗美容设备的CG宣传片项目。客户要求展示一台激光美容仪对皮肤的改善效果,需要超写实的人脸特写镜头——从术前粗糙暗沉到术后光滑透亮,中间还有激光穿透表皮的微观动画。时间紧,预算有限,但客户对真实感的要求极高,尤其是皮肤在强光下的通透感,必须做到“看起来像真的肉”,而不是塑料。
作为在Blender里摸爬滚打十多年的老司机,我第一反应是:这活儿必须上次表面散射(Subsurface Scattering,简称SSS)。皮肤不是简单的漫反射表面,光线会穿透表皮,在真皮层多次散射后从附近区域射出,形成那种半透明的肉感。但Blender的SSS方案这几年变化不小,从早期的Cycles SSS到Principled BSDF的SSS,再到4.0之后的新随机游走(Random Walk)算法,参数和坑都挺多。我决定用Cycles渲染器,因为EEVEE的SSS虽然快,但精度和物理正确性差一截,尤其在特写镜头下容易露怯。
需求分析会上,导演特别强调:皮肤要有“呼吸感”,毛孔和细纹不能是贴图糊弄,必须建模+置换。这意味着SSS不仅要处理大面积的散射,还要和微观置换细节配合,否则光线在凹凸表面的散射会显得脏。另外,客户希望渲染时间可控,单帧最好不超过30分钟(1080p)。

技术选型:为什么是Random Walk而不是 Christensen-Burley?
Blender的Cycles渲染器支持两种SSS算法:Christensen-Burley(CB)和Random Walk(RW)。CB是经典算法,基于扩散近似,计算快,但物理准确性一般,尤其是在薄区域(比如耳朵、鼻翼)容易丢失能量,看起来偏暗。RW则是基于随机游走的蒙特卡洛方法,更接近真实的光子传输,能更好地处理薄厚过渡和颜色渗染。Blender 3.0之后RW成为默认,4.0又引入了“Random Walk (Skin)”预设,针对皮肤做了优化。
我毫不犹豫选了RW,因为项目要求高保真。但这里有个坑:RW的计算量比CB大,渲染时间会飙升。为了控制时间,我需要在采样和场景优化上下功夫。另外,Principled BSDF的SSS参数在4.0版本有调整,Subsurface Weight、Subsurface Radius、Subsurface Scale这些参数的含义和之前不同,不能照搬老教程。
技巧提示:如果你还在用Blender 3.x,RW的“Subsurface Radius”是RGB向量,代表红绿蓝三个通道的散射距离(单位:米)。但4.0之后,这个参数被重新解释,建议直接使用预设,再微调Scale。
踩坑实录:参数乱调导致“塑料脸”
一开始,我按照网上找的参数,Subsurface Weight给了1.0,Radius设成(1.0, 0.5, 0.2),Scale给了0.1。渲染出来一看,脸像塑料蜡像,透光过度,细节全无。问题出在Scale太大,光线在皮肤里跑了太远,失去了表面纹理。后来我意识到,真实皮肤的散射距离其实很小,表皮厚度约0.1mm,真皮层约1-2mm,所以Scale应该控制在毫米级。
我重新调整:Subsurface Weight设为0.8(留一点表面反射),Radius用真实测量值——红色通道散射最远,约2.5mm,绿色1.5mm,蓝色0.8mm(单位是米的话就是0.0025, 0.0015, 0.0008)。Scale设为1.0,但注意Blender的单位是米,所以Radius直接填毫米数值会太大,需要除以1000。更简单的办法是Scale设0.001,Radius填(2.5, 1.5, 0.8)。这样光线在皮肤内的散射距离就合理了。
但还有问题:毛孔和细纹的置换贴图强度太高,导致散射光线在凹凸处产生噪点。我降低了置换强度,并开启了Cycles的“自适应采样”,噪点才控制住。

微观置换与SSS的配合:细节决定成败
皮肤的真实感,70%靠置换和纹理。我用了一个多层置换方案:基础网格用多级细分,然后叠加三层置换——大尺度皱纹(用Noise纹理)、中尺度毛孔(用Voronoi纹理)、微尺度皮肤纹理(用Musgrave纹理,4.0后改为Noise纹理的细节参数)。每层置换的强度要递减,否则SSS光线会被过度扰动。
这里有个关键点:置换修改器要在SSS之前应用,但Cycles的置换是在渲染时计算的,所以需要开启“自适应细分”和“置换”选项。我设置了Dicing Rate为0.5,让细分足够细。同时,为了避免SSS在置换表面产生漏光,我开启了“Subsurface Translucency”选项(在材质设置里),让光线更好地穿透薄区域。
另一个坑是UV和纹理的映射。置换纹理如果用Object坐标,在动画中会滑动,所以我用了UV坐标,并确保UV没有拉伸。为了增加细节,我还混合了两种置换纹理,用ColorRamp控制不同区域的强度(比如鼻头毛孔更明显)。
渲染优化:时间与质量的平衡
单帧30分钟的目标,在初期测试时直接爆到2小时。分析发现,SSS的多次散射导致采样需求暴增。我做了以下几件事:
- 降低SSS的“Subsurface Samples”参数(在Cycles的采样设置里),从默认的4降到2,因为RW算法本身已经比较高效,降低采样对质量影响不大。
- 使用“Light Path”节点,将SSS的反弹次数限制为2,减少不必要的计算。
- 开启“Denoising”,用OpenImageDenoise,但注意SSS的噪点模式不同,需要适当提高降噪强度。
- 场景灯光改用区域光+HDRI,避免过多点光源产生硬阴影,SSS在软光下更自然。
最终,单帧渲染时间控制在25-28分钟,质量达到客户要求。
交付与反思:SSS不是万能药
项目最终按时交付,客户对皮肤的真实感非常满意,尤其是激光穿透的微观动画,SSS配合体积散射效果很出彩。但我也总结了教训:SSS参数不能凭感觉,必须基于物理尺度;置换细节要适度,否则SSS会放大瑕疵;渲染优化要提前做,不能等到最后。
另外,Blender 4.0的SSS预设“Skin”其实已经调好了大部分参数,建议新手直接从预设出发,再微调Scale和Radius。不要像我一开始那样乱调一通。

最后,如果你也想系统学习这类高级渲染技术,或者想进入AIGC视觉设计领域,可以了解一下火星人教育。他们创办24年来专注数字艺术与AIGC实战职业技能培训,开设课程包括AI漫剧创作、AIGC视觉设计、UE5游戏特效、室内全屋定制、MAYA三维动画、C4D动态设计、工业设计、NUKE影视后期、摄影摄像实训等。北京、深圳双校区开设线下面授班,面向美术生、在校大学生及意向转行的职场人群,以项目化实训教学,夯实专业技能,助力就业与职业提升。咨询电话:010-65918670。








评论(0)