概要

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

成片的红色瓢虫铺满画面,深色背景衬托出湿润的甲壳高光与黑色斑点,为 Substance 3D Designer 制作的瓢虫材质最终渲染

引言

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

《地狱潜者 2》(Helldivers 2)游戏截图:落日余晖洒在连绵沙丘上,一名士兵的剪影站在沙脊顶端
《地狱潜者 2》(Helldivers 2)游戏截图:阳光穿过茂密林木,一名士兵行走在绿意浓重的丛林里

瓢虫项目

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

Substance 3D Designer 中按颜色分类的材质清单截图,多组色块与材质缩略图分列排布

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

深青色背景上一颗被密密麻麻的小瓢虫完全包住的球体,瓢虫甲壳呈湿润的红色、带黑色斑点

所以这套材质的首要目标,就是多试验 SDF 管线。当然,第一步还是要先做出一个像样的瓢虫 SDF 模型。

Substance 3D 工作流

当我做出来的东西开始隐约有点像昆虫时,我就进入了每套材质都会走的第一个环节:我称之为概念验证——一张只用极其基础的形状、颜色、位置搭起来的完整节点图。

Substance 3D Designer 的三维视口中,一只红色瓢虫模型立在灰色网格地面上

这一步的目的是检验想法能不能成立,同时也把我在寻找的所有细节都试验一遍:基础形状本身,还有排布、构图以及材质的整体观感。因为这套材质是作品集项目,我用的是 Marmoset Toolbag;即便在项目环境里,我也会用引擎内的情境场景做同样的事。

俯视视角下成片瓢虫停在黑色湿滑的水面上,水珠附着在甲壳表面并留下倒影

这一步通常要花我 1 到 4 个小时,取决于材质类型。它很关键,因为它给了我一个还不错的最终效果预览,既能确认结果接近我的设想,也能让我只关注真正重要的细节,避免把时间耗在最终几乎看不见的地方。

做完这一步,我就能回到材质本身上,从整体上改进、把每个部分再打磨一遍。重点不是死磕某一个环节,而是让整套材质的质量逐步提升。

瓢虫材质迭代动画:黑色水面上的瓢虫群从标注 01、02、03 的版本逐版推进到最终版本

每达到一个视觉上的「里程碑」,我就会把其他地方也各打磨一点,尽量不让某个部分过度打磨而拖累整体。这让我保持专注,也因为它是作品集项目,能在有限的时间里拿到最好的结果。

就材质本身来说,它可以拆成几个部分:SDF、形状散布、颜色,还有水滴。先来看看瓢虫最终的 SDF 图:

Substance 3D Designer 中瓢虫完整的 Sdf 节点图,右侧为瓢虫模型的三维预览

乍看有点吓人,但说实话,它比看上去简单。很多节点只是其他区块的复制品,主要是因为 SDF 系统的一个限制:你没法创建一个形状、然后在图里重复使用它。比如我做了一条腿,就必须复制整段图再做一个,而不能把输出接到另一个变换节点上复用。

这让节点图比本该有的复杂得多,但就目前而言,这就是使用 SDF 时必须记住的一点。我先做的是身体部分,瓢虫的身体分成三段:

  • 底层躯干:
瓢虫底层躯干部分的 Sdf 节点图,右侧为对应的白色模型预览
  • 前胸背板:
瓢虫前胸背板(Pronotum)的 Sdf 节点图,右侧为对应的白色模型预览
  • 头部:
瓢虫头部的 Sdf 节点图,右侧为对应的白色模型预览

如你所见,这些部件的节点图看上去每次都极其相似,原因就是我前面提到的:我没办法复制一个形状再复用。之后我处理的是翅膀——大概是整张图里最麻烦的部分,因为我想在某些边上做出倒角。这迫使我只要需要更复杂的形态,就得加入小小的切割形状。

标题为 Wings 的节点图,右侧视口中是白色的瓢虫鞘翅模型

图里最后、也是看上去最唬人的部分,其实是最简单的:腿。它们只是三个球体,压扁后并排摆放,假装成更复杂的东西——因为我早就知道不需要更多细节,可以直接快速导出来,用前面那个概念验证场景看效果。

我把这个流程重复了四次,每次都复制整段腿部节点图,改几个数值来摆正位置,最后用对称完成整个结果。

瓢虫腿部节点图动画,节点图被逐次复制,右侧视口中的瓢虫模型随之补全

剩下的就是分配颜色信息供后续使用、给翅膀做遮罩,并加上一些位置与尺寸控制。SDF 系统有一个最大包围范围,我创建瓢虫时并没有留意到这一点,所以最后不得不调整它的尺寸。

瓢虫节点图中接入颜色信息、翅膀遮罩与位置尺寸控制后的节点图,右侧为红色瓢虫预览

做完这些,下一步就是把虫子摆上去。设置很简单。我用了 Shape Splatter V2 节点,这样可以沿用刚才看过的 SDF 功能,但更重要的是能利用新的分布系统和强大的泊松圆盘(Poisson Disc)分布——它在填充画布时会自动避免形状互相重叠,对任何 Substance 3D 用户来说都是梦想成真!

Shape Splatter V2 节点图,右侧为白色球体的散布预览,用于以泊松圆盘分布排布瓢虫

我在第一个 Shape Splatter 上用了随机遮罩,让第一层分布出现空洞,然后把这些空洞以及它们之间的空隙遮掉。这样我就能用第二个 Shape Splatter V2 和非常好用的 Slope Rotation 功能,营造出第二层瓢虫压在第一层之上的感觉。

两层 Shape Splatter V2 的节点图,右侧为两组球体互相叠加的预览

分层做完,我开始处理配色,首先要确定的是用哪种思路。

标题为 Ladybug Color 的大幅节点图,包含 Shape Splatter Mapper 与多组颜色遮罩

最初的想法很简单:用 Shape Splatter Mapper,因为它能原生处理 Shape Splatter V2 的输出,然后做一张俯视视角的瓢虫颜色贴图,这样更好画。但第一次尝试时很快就出现了几个问题。

用 Shape Splatter Mapper 投影贴图有三种模式:

  • 三平面(Triplanar)模式,顾名思义是沿着每个轴向投影贴图。它非常适合给高频细节的资产上贴图,但会让精确贴图变得困难得多,尤其是这种圆润的形状。
瓢虫群渲染画面,左下角面板显示 Projection Mode 为 Triplanar(三平面投影)
  • 第二种是「From Splatter UVs」,使用 SDF 系统原生生成的 UV。遗憾的是,这些 UV 完全是坏掉的,修复它们所需的工作量太大,甚至可能根本修不好。
橙红色瓢虫群渲染画面,左下角面板显示 Projection Mode 为 From Splatter Uvs

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

自定义函数节点图:Get Float3 取形状位置、Swizzle 拆出 X 与 Y 轴,经乘加运算后采样颜色,右侧为瓢虫渲染

不过还有个小问题。只映射一张贴图,瓢虫的颜色就没有变化。我想要至少四种变化,也就是四个采样器,而且希望这些变化在所有瓢虫之间随机分布。

我用每个形状的 Shape ID 配合取模运算,基本上是每四个形状选一组,把每一种变化分离出来,再用这些分离出来的 ID 在四个采样器之间做线性插值。

节点图展示 Shape.id 取模 4 后分别采样四张颜色贴图并做 Lerp 混合,右侧为瓢虫渲染

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

俯视角度的瓢虫颜色贴图绘制动画:从白色剪影开始,逐步叠上红色、黑斑与头部

配色搞定后,就只剩水了。先是水滴,同样是简单的设置——基本上就是两个 Shape Splatter V2 节点,用来散布球体形状。

一个生成较大的水滴,另一个生成大量细小的水滴。把这两层合并,叠加在已有的高度贴图上,再加上很高的光泽度数值,效果就出来了。

有一个我觉得值得说明的小细节:我利用形状散布新的密度参数给水滴数量加入变化,让结果更自然、更接近参考。

画面左右为黑底白点的水滴遮罩,中间为 Shape Splatter V2 节点及其密度、高度贴图参数

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

标题为 Water Ripple 的节点图,右侧为带水滴的灰色瓢虫模型预览

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

包含 Water Background Tension 与 Water Ripple Composite 两组节点的节点图,右侧为灰色瓢虫模型预览

到这儿,材质就完成了,只剩下在 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 完成渲染。作者也提到,即便在项目环境里,他也会用引擎内的情境场景做同样的效果验证。

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