
引言
大家好!我叫 Emilia Krutilina,是一名 3D 环境与材质艺术家。从我开始学 3D 到现在大约三年,这段时间里我主要专注写实环境,尤其喜欢处理自然表面与建筑元素。
大约两个月前,我决定更深入地研究 Substance 3D Designer——此前我在个人项目里已经用过它。这一次我想把这项技能推得更远,于是开始做一批不太常规的材质。第一个是上一个项目《巧克力糖果》。接着我想再做一套甜品类材质,这次就选了肉桂卷。

塑造表面
和往常一样,我从制作高度图开始。为了得到卷的基础形体,我用了一个抛物面形状,再叠加 Swirl 节点做出扭卷的形态。接着我加入一些不规则变化,让卷看起来更真实。为了让每个卷都不一样,我把这套节点图复制了四份、各自调整参数,最后得到了五种不同的基础形体。
下一步是把它们合成一张可平铺的贴图,这一步我用的是 Tile Sampler。


然后我开始添加细节与瑕疵。最常用的手段是 Slope Blur Grayscale 与 Multi-Directional Warp 节点,另外再通过 Blend 节点叠一些噪声。

之后我开始制作夹心。这个图案我用了 Clouds 2 与 Gaussian Spots 2,并对它们施加 Multi-Directional Warp。
为了得到夹心遮罩,我在高度图上叠加了 Histogram Scan 与 Blur HQ。这样我就能做出卷内部应该放夹心的区域遮罩,把它用在 Blend 节点里、采用 Add (Linear Dodge) 模式。

这个项目里对我来说最难的部分是做奶油。我试了好几种方案,最后定下这一个。基础部分我用的是 Fur 2 节点,再施加 Non-Uniform Blur Grayscale、Directional Blur 与 Histogram Scan,做出奶油的方向线。接着用一张 Clouds 2 贴图施加 Multi-Directional Warp,加入更多变化。之后我做模糊处理,并把这张贴图复制两份,其中一份旋转 45 度。最后用 Height Blend 把这两张贴图混起来。
得到这张方向多变的新贴图之后,我用 Histogram Range 调整高度,再用一个 Blend 叠上设为 Overlay 模式的 Clouds 3,加入更多细节。几番调整后,我对这张贴图施加 Swirl。由于结果不可平铺,我用 Make it Tile Photo Grayscale 节点来修正。对平铺效果满意之后,我再叠一次 Clouds 3,这次用 Subtract 模式。


到了把奶油和卷混合的环节,我先试了常规的 Height Blend,但对结果并不满意,因为奶油看起来铺得太均匀了。于是我决定做一个自定义遮罩,用到 Height Blend 里。做法是这样的:
1)我在卷和奶油之间做了一次 Height Blend,把奶油放得足够高,好盖住两个面包之间的空隙。
2)我取出这次 Height Blend 的遮罩,对它施加 Blur。
3)我在卷的高度贴图上用了 Histogram Select 与 Histogram Scan,得到一个轮廓,再通过 Histogram Range 把它修整好。
4)我用 Add Linear Dodge 把模糊后的 Height Blend 遮罩与轮廓遮罩混合起来。
5)最后,我用 Add Linear Dodge 再把得到的这张贴图与其中一个初始奶油变体混合一次。
这样得到的遮罩,现在就可以用在奶油与卷之间最终的 Height Blend 里了。

接下来我做放在顶部的坚果。我先用 Spline (Poly Quadratic) 节点做出形状,然后用 Spline Fill 生成遮罩。我加了一个 Bevel 来柔化边缘,接着做了一次带 Perlin Noise 的 Slope Blur。我用 Curve 节点做出高度渐变,这样坚果才不会显得扁平。最后我加了 Non-Uniform Blur,并用一个 Blend 叠上 Clouds 2 增加细节。

为了增加变化,我把这些节点复制了两份,最终得到三种不同的坚果变体。我略微调整了一些数值,让它们彼此看起来不同。之后我用 Tile Sampler 并调了调参数,让坚果以更自然、更不均的方式散布开。

到了把坚果摆到顶部的时候,我在坚果与奶油的混合上遇到了问题。一开始我用的是 Add (Linear Dodge) 混合模式,但坚果在卷与奶油交界处看起来并不自然。接缝清晰可见,让结果显得很不真实。
花了很多时间去想怎么解决之后,我终于找到了办法。我单独为坚果生成了一张法线贴图,又为带奶油的卷生成了一张,然后用 Normal Blend 把它们合并。这张混合后的法线贴图成了我最终的法线。为了得到高度图,我对结果施加 Normal to Height 节点,把它作为最终的高度。

基础色与粗糙度
基础色方面,我在所有项目里通常都用同一套手法。我把高度图转成渐变图,把它们混合起来,再用之前做好的遮罩来控制混合。我还会额外叠加一些污渍与噪声贴图,比如 Clouds 2、BnW Spots 与 Moisture Noise,来获得颜色变化。

粗糙度方面,我通常直接使用已有的高度图,用 Histogram Range 调出想要的色调。另外我会取基础色里的灰度,用之前做好的遮罩把它们混合起来。

渲染
渲染用的是 Marmoset Toolbag,因为它展示材质又快又方便。我喜欢不只把材质放在平面或圆柱上展示,而是也放进一个小场景里,因为这样能体现它的真实感,让人觉得它属于某个完整的东西。所以我搭了一个场景,建模了几件附加道具,比如烤盘、盘子、布餐巾和锅铲。我还加入了桌子和墙面这些元素。
我的标准灯光设置包括一盏 Sky 光提供自然照明,外加两到三盏补充灯。我会刻意把其中一盏聚光灯调得更冷,在场景里制造有趣的色温对比。
整体来说,这个项目从开始到完成大约花了我五天。这期间我做出了基础材质、细化了纹理细节,并用我的标准灯光设置搭好了最终渲染。


结语
对刚开始学 Substance 3D Designer 的人,我建议尽可能多看教程。最好从讲解基础节点的教程入手,再转向讲解复杂材质制作的进阶内容。这能帮你熟悉有用的节点,并理解怎样做出不同的效果。我自己学习时,发现 YouTube 视频以及 FlippedNormals、ARTStation Learning 上的教程都极有帮助。对我来说最有价值的是 Javier Perez 与 Daniel Thiger 的教程,它们尤其有帮助、也特别能激发灵感。
但请记住:不要只看。真正的进步来自把这些课程付诸实践,并在 Designer 里不断试验。
感谢阅读我的文章。希望你喜欢,也能从中找到有用的东西。如果你想看更多我的作品,可以访问我的 ArtStation 和其他社交账号。有任何问题,或者只是想交流,也欢迎联系我。
更多材质制作拆解可以查看本站 案例教程 分类;
想了解同一类食物材质的程序化做法,可以看 小熊软糖材质:Substance 3D Designer 的 SDF 流程;
想了解这套节点流程所在的软件版本,可以参考 Substance 3D Designer 16.0 发布:3D 散布 + SDF 建模 + OpenPBR。


评论(0)