食物质感是三维渲染中最容易翻车的领域之一。一个建模精美的面包,如果材质不到位,渲染出来就像一团黄色的塑料;一块看起来本该多汁的烤肉,如果没有透光感,就会显得干瘪僵硬。问题的根源通常有两个:一是忽略了次表面散射,二是表面细节纹理不够丰富。这两个因素分别决定了食物在光线下的宏观观感和微观质感,缺一不可。

为什么食物必须使用SSS材质
次表面散射(Subsurface Scattering,简称SSS)描述的是光线进入物体表面后,在内部经过多次反弹再从另一点射出的现象。绝大多数食物都不是完全不透明的:光线照在一块生肉上,会穿透表面几毫米,被内部的纤维和水分散射后重新透出来,形成那种特有的温润、柔和的红润感。如果直接用漫反射材质,光线只在表面被吸收和反射,物体就会显得死板、干燥,像上了漆的模型。
典型的需要SSS的食物包括:面包、蛋糕等烘焙食品(光线穿透酥皮后呈现暖黄色)、水果如葡萄和番茄(边缘透光尤其明显)、肉类和奶酪(整体呈现柔和的半透感)、以及果冻、蜂蜜这类强散射物体。判断标准很简单:把实物放在窗边逆光观察,如果边缘能看到光线"渗"进来,那就一定要用SSS材质。
在Blender的Principled BSDF中,可以借助次表面权重和半径三个通道来控制散射颜色。半径值决定了光线在物体内部传播的距离,单位通常是毫米。面包的半径大约在2到5毫米,肉类可以到8毫米,而葡萄这类水分充足的水果甚至可以超过10毫米。半径越大,物体看起来越"透",但过大会导致整体发灰,需要结合缩放系数反复调整。
SSS材质参数的实战思路
散射半径的三个通道对应红绿蓝三种颜色的传播距离。由于红光波长最长、穿透力最强,食物的红色通道半径通常要大于蓝绿通道,这样才能还原出逆光下那种温暖的红色边缘光。一个常用技巧是先给三个通道相同的较小值,然后逐步增大红色通道,观察物体边缘的透光变化,直到接近参考照片。
除了半径,材质的密度概念也很关键。同样是面包,外皮致密、内部疏松,散射表现完全不同。比较稳妥的做法是利用贴图控制散射强度:烘焙一张表示内部密度的灰度图,酥皮部分颜色深(散射弱),柔软的芯部颜色浅(散射强),把它连到次表面权重上。这样同一套材质就能同时表现表皮和内芯的差异,比做两套材质混合自然得多。
# 在Blender中通过脚本设置Principled BSDF的SSS参数示例
import bpy
mat = bpy.data.materials.new("BreadSSS")
mat.use_nodes = True
bsdf = mat.node_tree.nodes["Principled BSDF"]
# 设置次表面权重
bsdf.inputs["Subsurface Weight"].default_value = 0.8
# 设置散射半径,红通道最大,模拟面包的暖色透光
bsdf.inputs["Subsurface Radius"].default_value = (4.0, 2.5, 1.5)
# 适当提高粗糙度,避免表面出现塑料般的高光
bsdf.inputs["Roughness"].default_value = 0.65
需要注意的是,SSS的渲染成本明显高于普通漫反射。如果场景中食物数量多,可以采用折中方案:主力食物用真实SSS,背景虚化的部分用带透光近似的简化材质,肉眼几乎看不出差别,但渲染时间能缩短一半以上。
表面细节纹理才是质感的灵魂
如果只有SSS而没有表面细节,食物依然会显得假。真实食物的表面布满了不规则结构:面包上的气孔和面粉颗粒、烤肉表面的焦化纹路、苹果表皮的细密斑点。这些细节如果只靠颜色贴图去画,会显得像贴了一张图片,因为它们没有参与实际的光影计算。正确做法是使用置换贴图(Displacement),让表面几何真正凹凸起伏,在侧光下投出真实的阴影。
制作置换贴图有两条路线。第一条是扫描真实食物,用摄影测量软件生成高精度模型后烘焙出置换信息,效果最好但流程繁琐。第二条是程序化生成,用噪波、沃罗诺伊纹理等节点叠加出气孔和颗粒感。以面包为例,可以用大尺度的沃罗诺伊纹理生成气孔结构,再叠加一层细碎的噪声模拟面粉颗粒,最后通过颜色渐变控制置换强度,几步就能得到相当可信的效果。
粗糙度贴图同样不可忽视。食物表面的粗糙度很少是均匀的:烤鸡皮上油亮的部位粗糙度低、撒了盐粒的部位粗糙度高。把一张带有斑驳变化的灰度图连到粗糙度输入,高光的破碎感会立刻真实起来。这个细节的成本极低,但对观感的提升常常超过置换贴图。
综合案例:一块真实感的黄油吐司
把前面的知识组合起来,以黄油吐司为例走一遍完整流程。第一步是材质分层:面包体使用中等强度的SSS,半径设置在3毫米左右,配合烘焙气孔的置换贴图;黄油部分用强散射材质,半径可以到6毫米,因为黄油的透光性远强于面包;两者交界处用权重贴图做渐变过渡,避免出现生硬的边界。
第二步是细节叠加。在面包表面增加一层极细的噪声置换,幅度控制在0.05毫米以内,模拟面粉的颗粒感;黄油的边缘则用轻微的凹凸贴图表现融化后凝固的波浪形态。第三步是光照验证:用一盏侧逆光检查透光效果,此时面包边缘应呈现暖黄色,黄油应有明显的琥珀色透光,如果透光过头就减小半径或降低SSS权重。
最后一步是渲染参数。开启置换的微细分(如Blender中的Adaptive Subdivision),确保置换细节在近景镜头下依然锐利。降噪建议使用OptiX或OpenImageDenoise,因为SSS属于间接光照,噪点多,靠提高采样数去硬抗非常浪费时间。经过这几步,一块放在盘子里、边缘微微透光的黄油吐司就完成了,和塑料感彻底告别。