用 Substance 3D SDF 管线制作瓢虫材质:Romain Lemaire 的工作流拆解

简介
大家好!我叫 Romain Lemaire,是游戏行业的一名资深材质美术师。我现在仍然和以前一样是一名自由职业者。不过,我也曾有机会在 Arrowhead Game Studios 工作 3 年,参与《Helldivers 2》的制作,还在 Omeda Studios 参与过一段时间的《Predecessor》项目。所以可以说,我比上次更有经验了一些。


瓢虫项目
基本上,自 2021 年我开始那个色彩项目以来,瓢虫材质就一直在我的待办清单上;该项目聚焦于为我选定的每种颜色制作一组材质。自那以后,这个项目长期处于搁置状态,并且不断演变,主要是通过更改一些材质以及整体范围来实现的。

那个项目的目标主要是专注于在 Substance 3D 中处理色彩,而这正是我以前一直比较吃力的地方。我在《绝地潜兵 2》(Helldivers 2)中的经验在这方面帮了我不少忙。但我仍然想完成这个项目,或者至少完成绿色和红色部分!
而新版本的 Substance 3D Designer,尤其是新的有向距离场(Signed Distance Field)管线,似乎是一个绝佳的机会,让我终于可以开始制作那些瓢虫了!

因此,这个材质的主要目标是更多地试验 SDF 流程。当然,第一步是创建一只瓢虫的合格 SDF 模型。
Substance 3D 工作流程
当我开始做出某种隐约像昆虫的东西时,我就进入了每个材质制作的第一步:我称之为概念验证,即一个由极其基础的外形、颜色、摆放等构成的完整节点图。

重点在于看看我的想法是否可行,同时也试验我正在寻找的每一种细节,包括基础形状本身,以及材质的摆放、构图和整体外观。由于这个材质是一个作品集项目,我是在 Marmoset Toolbag 中制作的,但即使在生产环境中,我也会用引擎内的情境场景做同样的事情。

这一步通常需要我 1 到 4 个小时,具体取决于材质的类型。这是一个重要的步骤,因为它能让我对最终材质有一个不错的视觉呈现,使我首先能确保得到接近我设想的结果,同时也让我只专注于真正重要的细节,避免花几个小时去打磨一些在最终结果里几乎看不见的东西。
完成这一步后,我可以重新把注意力放回材质本身,尝试从整体上改进它,并进一步打磨每个部分。重点不是只专注于某一个步骤,而是逐步提升整个材质的质量。

每当我达到一个视觉上的“里程碑”,我都会把其余各个部分都稍作打磨,尽量避免过度打磨某一部分而损害其他部分。这有助于我保持专注,而且由于这是一件作品集项目,它能让我在投入的时间内获得最佳成果。
至于材质本身,它可以拆分为多个部分,例如 SDF、形状散布、颜色或水滴。首先,让我们看看瓢虫最终的 SDF 图:

有点令人生畏,但老实说,它比看起来要容易。很多节点只是其他部分的副本,这主要是因为 SDF 系统的一个限制;你不能创建一个形状并在节点图的其他地方重复使用它。例如,如果我创建一条腿,我需要复制节点图来创建第二条腿,而不是简单地用另一个变换节点复用输出。
这使节点图变得比它本该有的复杂得多,但就目前而言,这是在使用 SDF 时必须记住的事情。我首先处理的是身体部位,在瓢虫身上,这些部位分为三个部分:
- 底层身体:

- 前胸背板:

- 然后是头部:

如你所见,每次它们的节点图中都有一些部分看起来极为相似,原因很简单,就是我在前面提到的那点:我无法复制一个形状并重复使用它。之后,我把重点放在了翅膀上,这大概是整个节点图里最棘手的部分,因为我想在某些侧边做出倒角。这迫使我在需要创建更复杂形体时,不断添加小的切割形状。

节点图中最后、可能也是最令人生畏的部分,实际上却是最简单的:腿。它们只是三个球体,被压扁并挨个摆放在一起,用来伪造出更复杂的东西;因为我早就知道自己不需要比这更多的细节,毕竟我可以快速导出,并用之前的验证场景直接查看。
我只是把这个流程重复了四次,每次都复制整个腿部节点图,改动几个数值把它们摆到正确的位置,最后用对称来完成结果。

剩下的工作就是分配颜色信息以便后续使用、为翅膀添加遮罩,以及添加一些位置和尺寸控制。SDF 系统有一个最大边界框,而我在制作瓢虫时并没有真正考虑到这一点,所以最后不得不调整它的大小。

完成之后,下一步就是放置这些昆虫。设置很简单。我使用了 Shape Splatter V2 节点,这样就能用上我们刚刚看过的 SDF 功能,但更重要的是,可以利用全新的分布系统以及强大的泊松圆盘(Poisson Disc)分布——它能在填充画布的同时防止形状重叠,这对任何 Substance 3D 用户来说都是梦想成真!

我在第一个 Shape Splatter 上使用随机遮罩,在第一次层分布上创建孔洞,然后遮罩这些孔洞以及它们之间的空间。这让我可以使用第二个 Shape Splatter V2 和非常有用的 Slope Rotation 功能,营造出第二层瓢虫与第一层重叠的效果。

分层完成后,我开始着手颜色设置。我首先需要确定的是,我该以什么思路来处理它。

最初的想法很简单:使用 Shape Splatter Mapper,因为它原生支持 Shape Splatter V2 的输出,然后制作一个瓢虫颜色纹理的俯视版本,这样会更容易制作。然而,在第一次尝试中很快就出现了一些问题。
使用 Shape Splatter Mapper 投影纹理共有三种模式:
- 三平面(tri-planar)版本,顾名思义,会沿每个轴投影纹理。这是为具有高频细节的资产制作纹理的非常好的方法,但它会让创建精确纹理变得困难得多,尤其是在这样的圆润形状上。

- 第二种选项“From Splatter UVs”使用的是由 SDF 系统原生生成的 UV。遗憾的是,这些 UV 完全损坏了,即使有可能修复,也需要花费太多的工作。

所以我采用了第三种方案,自己编写投影函数,而这实际上比听起来要简单得多。我知道我想从昆虫的俯视图来制作颜色贴图,因此我所要做的就是获取形状的位置,提取其 X 轴和 Y 轴,并把它们当作 UV 来采样我的颜色纹理。对于熟悉 Pixel Processor 节点的人来说,这相当简单。

不过有一个小问题。映射单个纹理无法让瓢虫的颜色产生变化。我想要至少四种变化,也就是四个采样器,并且我还希望这些变化能在所有瓢虫之间随机分布。
我使用了每个形状的 Shape ID,并结合取模运算,基本上就是每隔四个形状选取一个,隔离出每种变化,然后使用这些隔离出来的 ID 在四个采样器之间进行 lerp。

完成这一步之后,我只需要创建四张平面纹理。这个设置相当基础,所以我不会把整个流程逐一拆解。你只需要知道,我使用了一个 Shape Splatter,并以单个 SDF 形状作为基础:

颜色设置完成后,剩下的就只有水了。首先是水滴,这也是一个简单的设置,基本上就是使用两个 Shape Splatter V2 节点来散布球体形状。
其中一个生成较大的水滴,第二个则生成大量较小的水滴。将这两层合并,并叠加到现有的 Height 贴图上,再加上高光泽度数值,就达到了效果。
有一个我认为值得说明的小细节:我如何利用 shape splatter 新增的密度参数,为水滴的数量增加一些变化,使结果更自然,也更接近参考图。

剩下的工作就是创建水状背景并添加涟漪,让瓢虫看起来像是在与水面的互动。

以及一些昆虫周围的水张力。

至此,材质就完成了。只需要在 Marmoset Toolbag 里设置好渲染环境即可。
结语
最终材质大概花了一周时间,每天工作 1 到 3 小时,所以本质上是一个小型个人项目。最大的挑战无疑是 SDF 部分,因为它还非常新。虽然我理解它的工作原理,但我还没有像使用 Substance 3D Designer 其他部分那样形成同样的直觉和习惯。
至于我关于创建吸引人的材质的建议,首先要收集你需要的参考,并仔细研究它们,以理解其中的所有细微之处。我材质中许多吸引人的细节都直接来自参考:水珠、翅膀轻微的透明度、饱和的红色调等等。
提升的一个好方法是尽可能贴近地复刻参考,以此训练你的眼力。我认为这是学习如何为材质添加令人信服的细节的最佳练习之一。至此,我想这个拆解就完整了。
感谢 80 Level 团队提供这次拆解的机会!
Romain Lemaire,资深材质艺术家
采访由 Gloria Levine
相关链接
原文链接:https://80.lv/articles/how-to-design-a-vibrant-ladybug-material-using-substance-3d
喜欢这篇内容吗?