用 Substance 3D Designer 的 SDF 管线做瓢虫材质:分三段搭模型、Shape Splatter 散布、自写投影函数上色。

引言
大家好!我是 RomAIn Lemaire,游戏行业的高级材质艺术家。和前几次一样,我目前仍是自由职业者。不过我也在 Arrowhead Game Studios 工作了三年,参与《地狱潜者 2》,另外还在 Omeda Studios 做过一段时间的《Predecessor》。所以说,我比上次又多了一些经验。


瓢虫项目
其实早在 2021 年我启动「颜色」项目时,瓢虫材质就已经在我的待办清单上了。那个项目是为我选定的每一种颜色做一套材质。此后它长期搁置,也发生过变化,主要是调整了部分材质和整体范围。

那个项目的目标主要是练习在 Substance 3D 里驾驭颜色,而这正是我之前比较吃力的地方。《地狱潜者 2》的经历在这方面帮了我不少。不过我还是想把这个项目做完,至少把绿色和红色两部分完成!而新版本的 Substance 3D Designer,尤其是新的有符号距离场(Signed Distance Field,SDF)管线,看起来正是终于可以动手做瓢虫的好机会!

所以这套材质的首要目标,就是多试验 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 投影贴图有三种模式:
- 三平面(Triplanar)模式,顾名思义是沿着每个轴向投影贴图。它非常适合给高频细节的资产上贴图,但会让精确贴图变得困难得多,尤其是这种圆润的形状。

- 第二种是「From Splatter UVs」,使用 SDF 系统原生生成的 UV。遗憾的是,这些 UV 完全是坏掉的,修复它们所需的工作量太大,甚至可能根本修不好。

所以我用了第三种:自己写一个投影函数,其实比听起来简单得多。我知道自己想用俯视视角的虫子来生成颜色贴图,所以要做的就是取到形状的位置,抽出它的 X、Y 轴,把它们当作 UV 去采样颜色贴图。对熟悉 Pixel Processor 节点的人来说,这几乎是小菜一碟。

不过还有个小问题。只映射一张贴图,瓢虫的颜色就没有变化。我想要至少四种变化,也就是四个采样器,而且希望这些变化在所有瓢虫之间随机分布。
我用每个形状的 Shape ID 配合取模运算,基本上是每四个形状选一组,把每一种变化分离出来,再用这些分离出来的 ID 在四个采样器之间做线性插值。

做好这些,剩下的就是画出那四张平面贴图。设置相当基础,我就不把整个过程拆开讲了。只需要知道我用了一个带单个 SDF 形状的 Shape Splatter 作为基础:

配色搞定后,就只剩水了。先是水滴,同样是简单的设置——基本上就是两个 Shape Splatter V2 节点,用来散布球体形状。
一个生成较大的水滴,另一个生成大量细小的水滴。把这两层合并,叠加在已有的高度贴图上,再加上很高的光泽度数值,效果就出来了。
有一个我觉得值得说明的小细节:我利用形状散布新的密度参数给水滴数量加入变化,让结果更自然、更接近参考。

最后就只剩下制作水面背景,并加上涟漪,让瓢虫看起来像是与水发生了互动。

以及几只虫子周围的水面张力。

到这儿,材质就完成了,只剩下在 Marmoset Toolbag 里配一套好的渲染设置。
结语
最终这件材质花了大约一周,每天工作 1 到 3 小时,基本上是一个小型个人项目。最大的挑战无疑是 SDF 部分,因为它还非常新。我虽然理解它的运作方式,但还没有像用 Substance 3D Designer 其他部分那样形成本能和习惯。
至于做吸引人的材质,我的建议是:先把需要的参考收集起来,仔细研究,理解它们所有的微妙之处。我作品里许多讨喜的细节都直接来自参考——水滴、翅膀轻微的透明度、饱和度很高的红色,等等。
而一个很好的提升方式,就是尽可能贴近地复刻参考,以此训练眼力。我认为这是学习如何为材质加入可信细节最好的练习之一。到这里,这次拆解就讲完了。
更多材质制作拆解可以查看 案例教程 分类;
想了解这套 SDF 管线的来龙去脉,可以看 Substance 3D Designer 16.0 发布:3D 散布 + SDF 建模 + OpenPBR,需要现成材质的话 Substance 智能材质 专区里有不少可以直接复用的方案。
常见问题
这套瓢虫材质的制作思路是什么?
每套材质都先做一轮「概念验证」:用极基础的形状、颜色和位置搭出一张完整的节点图,花 1 到 4 小时确认想法成立并预览最终观感;之后按 SDF、形状散布、颜色、水滴四部分逐个打磨,让整体质量逐步提升,而不是死磕某一个环节。
为什么用 SDF 管线做瓢虫?
作者早就想把瓢虫列进他的「颜色」材质项目,而新版 Substance 3D Designer 的有符号距离场(Signed Distance Field,SDF)管线让这件事终于可做,这套材质的首要目标就是多试验 SDF 管线。
Substance 3D Designer 的 SDF 管线有什么限制?
最大的限制是不能创建一个形状后在节点图里重复使用。比如做了一条腿,就必须把整段图复制一遍再做一条,不能把输出接到另一个变换节点上复用,所以节点图会比想象中复杂得多。
瓢虫的颜色是怎么贴上去的?
三平面(Triplanar)投影不适合这种圆润形状的精确贴图,而 SDF 原生的 From Splatter UVs 完全坏掉、修复成本过高,作者于是自写投影函数:取形状位置、抽出 X 与 Y 轴当作 UV 去采样颜色贴图;再用每个形状的 Shape ID 取模 4,在四张颜色贴图之间做线性插值,让颜色变化随机分布。
最终渲染用什么软件?
用 Marmoset Toolbag 完成渲染。作者也提到,即便在项目环境里,他也会用引擎内的情境场景做同样的效果验证。


评论(0)