Substance 3D Designer 制作的冰块材质渲染,表面被多边形裂纹分割成大小不一的冰块,泛着冷蓝色光泽

引言

我一直很想做一套冰块材质,因为我很爱看冰——冬日场景、冰块,诸如此类。于是我慢慢学着做类似的东西。这个项目的主要目标,是把「冷」的感觉和冰那种严酷的美感传达出来。

我用的工具是 Substance 3D Designer。我先分析参考图,需要抓住冰那种标志性的裂纹结构。

两张并排的参考照片:左侧是裂纹密布的透明冰块,右侧是开裂的冰面,用于分析冰的结构特征

冰

基础是 Voronoi 噪波,我按自己的需要做了调整。这个技巧是从艺术家 Johnny Nodes 那里学来的。生成的裂纹构成了基础形状,后面的工作都建立在它之上。

Substance 3D Designer 节点图:Clouds 2、Auto Levels、Levels、Tile Sampler Grayscale、Distance、Threshold、Edge Detect、Vector Morph Grayscale 等节点串起的裂纹生成流程,末端接 Crystal 1 与 Normal Sobel 输出法线

细化基础形状

到了这一步,我需要打磨裂纹:把边缘稍微柔化、让它们更细,再稍微抬起来。在参考图里,我注意到冰有那种先部分融化、又重新冻结的效果,我很想把这个故事讲出来。

实拍参考:深色水面上漂浮着众多多边形海冰浮板,边缘堆着白色碎冰,排列方向散乱

一开始,我把裂纹遮罩反相,并对边缘做模糊。为了把边缘抬起来、让它更有表现力,我用了 Multi-Directional Warp Grayscale 节点,它可以加入细微变形,模拟不均匀的冻结。

接着我用 Perlin Noise 加了一点起伏,免得表面看起来太完美、太平。然后我把原始裂纹复制出一份更细的版本,与上一步的结果混合后做减法。

Substance 3D Designer 节点图:Basic Form、Blur、Hight、Add Waviness、Subtract 五个分组框,分别处理裂纹边缘的模糊、抬升与减法
灰度高度图预览:多边形冰块被隆起的裂纹边缘分隔,边缘略带锯齿与碎裂感

高度图细化

下一步是表现冰无穷无尽的不规则感——那是融化与再冻结、在各类天气作用下形成的。要做到这一点,我们需要先建立一层冰结构特有的基础噪波。它会成为材质的根基,让整体更连贯,也是后面一切细节的承托层。

在这套材质里,这层基础噪波就是所有其他细节的底。此外,我还把它和其他噪波一起接到 Directional Warp 节点上做变形,用来制造不均匀的融化与冰层堆叠。截图里可以看到这个过程。

Substance 3D Designer 节点图中的 Warp 分组:Noise 3 与 Base Noise 两路噪波接入 Directional Warp,制造不均匀的融化变形

截图里这些噪波来自艺术家 Deniz Giritli Art 制作冰的一段视频,这套材质整体上也是照着那段视频做的。

Substance 3D Designer 节点图中的 Base Noise 分组:Clouds 2 经 Histogram Range 与 Normal To Height Hq 处理后接入 Directional Warp

制作雪痕

接下来的阶段是做雪,以及大、中、小各种痕迹。它们能让材质更连贯,也带来颜色的变化。做雪痕时,重要的是区分哪些会影响高度图与颜色,哪些只加到颜色通道上。

比如这种雪的噪波(见截图示例),我只把它加进颜色通道。这样既不会破坏表面的几何,又能在视觉上丰富它。

灰度预览图上标注 Color Only:细密的雪粒噪波只提供颜色变化,不参与几何高度
灰度预览图上标注 Color And Height:白色裂纹网络同时参与颜色与高度信息

裂纹我用 Slope Blur、Perlin Noise 和 Levels 节点的组合来做。先把基础裂纹遮罩接到连着 Perlin Noise 的 Slope Blur 上,再用 Levels 调整对比度与强度——具体调多少,取决于我希望它有多突出。

Substance 3D Designer 节点图:Slope Blur、Perlin Noise 与 Levels 组合,把基础裂纹遮罩处理成层次更丰富的裂纹

更细的裂纹也用同样的方式处理,做出额外一层细节。之后我把所有版本的裂纹合在一起反复打磨,直到满意为止:加一点细小扭曲、模糊,再和一些噪波混合。这么做是为了让裂纹在颜色上也好看。

Substance 3D Designer 节点图:把不同粗细的裂纹版本混合、扭曲,并再次叠加噪波
黑底白纹的遮罩图:细密的白色裂纹网络铺满画面,用于控制裂纹在表面上的分布

这是最终的高度:

Marmoset Toolbag 中渲染的最终高度图:多边形冰块表面被隆起的裂纹边缘分割,冰面带有细微起伏

颜色处理(Albedo)

为了控制颜色变化,我用了 Ben Wilson 的 BW Color Variation 节点。它让色相范围的控制容易得多。想了解这个节点的原理,可以到 ARTStation 上看作者本人的讲解。

我先按参考图挑出深色与浅色,作为冰基础色的起点,再用基础裂纹生成的遮罩在 Overlay 模式下把它们混合,然后把这个结果接进 Color Variation 节点。

Substance 3D Designer 节点图(绿色分组):Bw Color Variation 节点控制冰块颜色的色相范围

接着,我把之前做好的雪遮罩与裂纹遮罩都取来,与白色混合,并把强度调到我喜欢的程度,让积雪的区域看起来自然。

Substance 3D Designer 节点图:把此前生成的雪遮罩与裂纹遮罩混合进白色,调整雪面密度

结语

在最后阶段,我还把 Dust 与 Edge Wear 节点当作遮罩使用,并用 HSL 节点调整颜色变化。

Substance 3D Designer 节点图:Dust、Edge Wear 与 Hsl 节点作为遮罩,为冰块补充脏迹与边缘磨损
最终渲染:两块圆润的冰块并排摆放,内部裂纹与积雪层次分明,冷蓝色调呈现冰的通透质感

更多材质制作拆解可以查看本站 案例教程 分类;

需要现成的冰材质,可以看 完美冰材质 Shader-Perfect Ice,想了解这套节点流程所在的软件版本,可以参考 Substance 3D Designer 16.0 发布:3D 散布 + SDF 建模 + OpenPBR。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。