引言

我是 Alex Luna Garvin,一名 3D 与材质艺术家,职业生涯却是从程序员起步的。我一直想进游戏行业,整个少年时代都在学编程、几乎每天都用 Unity,直到我终于去读了计算机科学的大学学位——只读了大约三个月。

就在那时,我决定把人生翻个个儿,第一次开始学美术:退学,报了一门动画与 3D 环境的课程,在那里学到了 3ds Max、Unreal 和 Substance 3D PAInter 的基础!

我做过自由职业 3D 艺术家、为 VR/AR 体验写 C# 的 Unity 开发,最近则担任 Kitbash3D 的材质艺术家,参与过不少项目,比如 Brutalism 2055、Military Vehicles、赛博朋克风格的室内与载具、飞船等等。

Substance 3D Designer 制作的座舱面板材质渲染:深灰色金属面板上分布着按键、旋钮与一块绿色发光屏幕

座舱项目

在 Kitbash3D 做 Military Vehicles 的时候,我收集了一堆很酷的座舱参考。当时我就想做一套基于它们的材质,但那阵子在忙别的个人项目,所以一直没真正动工。

几个月前,我做了一个叫 Extended Shapes 的 Substance 3D Designer 工具,它用 SDF 数学表达式,把原本需要大量节点、变换与混合才能做出的形状,压缩成一个简单快速的节点。我正想找个有意思的点子来测试它,于是决定开始做这套座舱材质。

大部分形状都是用我自制的 Extended Shapes 工具生成的;工具搞不定的时候,我就用简单节点的经典组合来达成结果。

Extended Shapes 示例:

Substance 3D Designer 节点图(红色分组):四组由 Extended Shapes 工具生成的形状及其参数,展示单个节点即可得到复杂外形

传统形状搭建方式:

Substance 3D Designer 节点图(蓝色分组):用基础形状、变换与混合节点一层层拼出同样的形状

一开始我就知道,这套材质很快会变得极其复杂,所以有条理、有清晰的策略,是把它做完的关键。

那我们就来看看最终的节点图吧。原图太大了,大到没法上传到任何网页(78165×22297 像素)。要理解这套材质的主体,只需要关注每个框的颜色就够了。

Substance 3D Designer 的超大节点图概览:大量红蓝分组框按区域排布,整体结构一目了然

每个面板我都有两个必备的框:蓝色代表高度图,红色代表图形。带屏幕的面板,我还会用黄色框来做屏幕,把一切都分门别类。

Substance 3D Designer 节点图:蓝色边框代表高度图、红色边框代表图形,部分带屏幕的分区还加了黄色边框

内容很多,我先简要拆解一下第一个面板的制作。首先用 Extended Shapes 工具做出面板的基础形状。我不用默认的形状节点,是因为它可以做成圆角盒子,省下几个节点。记住,这么大的材质,每省一个节点都有意义。

把它接到 panelsBevel 之后——这大概是本文最重要的一条经验。我经常用这招让每个面板保持一致,也方便日后做大改动。如果打开 panelsBevel 这个节点看内部,它其实只是一个 Bevel 加一个 Blur;但这么早就建立简单的抽象,正是「一团乱麻的材质」和「做得完的材质」之间的差别。

Substance 3D Designer 节点图:面板形状接入 Panelsbevel 抽象节点,该节点内部只是一个 Bevel 加 Blur

这里另一个重要的抽象是 panelsHeight,它只是一个简单的 level,用来让每个面板保持一致,方便之后一次性更新全部面板。

Substance 3D Designer 节点图:Panelsheight 抽象节点只由一层 Level 构成,用来统一所有面板的高度

之后面板的创建就非常简单了。我只用形状、镜像、level 和 transform 的基本组合,就能做出所有面板元素。但你可以看到,整个过程我一直让面板保持在中心。最后一步,就是每个面板的 Transformation Panel 节点。

面板高度做完后,我用一个 Transformation 节点来设定它的位置,然后把这个节点也做成抽象,后面会很有用。这个面板比较特殊,它有 3 份数组复制,其实就是三次变换的混合。

Substance 3D Designer 节点图:用 Transformation 节点摆放面板位置,并保留数组复制的三份变换

你可能会想,这里为什么不直接用个简单的 transform?但你看,这个面板现在还没有任何图形或屏幕,所以我可以再次复用这个 Transformation_1 到其他元素上,让一切保持一致、条理清楚。

Substance 3D Designer 节点图:把变换结果接到多个元素上复用,因此不必为每个面板单独写一套变换

这招不止这一种用法。对我来说,让每个元素都独一无二非常重要,所以我们可以把 Transformation_1 用在面板的各元素上,抽出遮罩,供之后做基础色、金属度和粗糙度贴图时使用。

Substance 3D Designer 节点图:从各个面板元素中提取遮罩,用于后续的基础色、金属度与粗糙度

用这个技巧,更新面板的位置或缩放都很容易。有了这些,我们就能抽出遮罩并混合成一张 ID 图。最终材质里我并没有用这张颜色 ID 图,但它在整理遮罩、检查进度上非常好用。

Substance 3D Designer 节点图:把各面板遮罩混合成一张彩色 Id 图,画面下方是它的预览,便于检查进度

Substance 3D

我在 Substance 3D Designer 里的工作流非常直接。每个项目开始时,我都会先在 PureRef 里做一份参考文件。这份文件因项目而异:有时用情绪板,有时按颜色分区,有时是光照参考,等等。

但我看到很多人会放太多参考。对你想要做出来的东西有清晰的路径很重要,参考太多反而可能毁掉整个项目。这套座舱材质,我的 PureRef 文件就小得可怜,你可以看到。

参考图合集:飞机座舱、仪表盘与控制台的照片拼成一小块图板,用来捕捉座舱的元件构成

开始做 Substance 3D Designer 之后,我的流程总是一样的:专注高度图,从大到中再到小细节。大多数人会先把高度图做完再去做基础色、粗糙度和金属度,而我会尽早把那个底搭起来,通常中期形状做完就开始。

这套座舱材质不太一样:我先把高度图做完,才动其他贴图,因为我需要先有遮罩。在我看来,任何材质想做出写实感,诀窍都是「一点点加」。用 10 层稍有不同的颜色、混合值 0.05,比用 5 层 0.1 要好。

当然,我们也得克制,不能混过头,但这靠反复实践与经验。最终你会知道什么时候该停手。除此之外,重视渲染和重视材质本身一样重要,甚至更重要。糟糕的渲染场景能毁掉一套好材质,而好的灯光与相机设置,能把平庸的材质抬成惊艳的作品!

这篇文章已经够长了,而且这个主题的教程到处都是。我所有的渲染都用 Marmoset Toolbag 5,不过 Unreal Engine 或别的渲染引擎也能胜任。

这套材质很特别,有各种按键、拨杆和屏幕。如你所见,我的工作流把一切都做成了非破坏性的,所以你几乎可以改这里的任何东西!从哪个按钮被按下,到元素旋转的角度,等等。

我没有花时间去建参数、让一个并不存在的用户通过界面来改动,因为这套材质本来就是做给我自己用的;不过如果将来需要,做起来也很容易。

结语

这套材质从头到尾花了我大约一周,再加一整天做渲染。不过实际上,我开始做它的时候正在搬家,所以每天只能做一点点,中间还完全停了一个多月。项目九月开始,到十一月底结束。

座舱材质最大的挑战,是把这套非破坏性、可迭代的面板创建工作流想出来;但意外的是,一切从一开始就顺利推进,这很不寻常!

对于想做出好看材质的读者,我最后的建议是:逼自己一把!我看到很多人害怕走出舒适区,不愿意碰自己一时不会做的东西。

我每个项目开始时都抱着学点新东西的冲动,结束时都会分析自己做到了什么、还能改进什么。比如这套材质,我对结果非常满意,但我仍在提升渲染技巧,也在琢磨怎么在作品集里展现自己的流程。

很多人来问过我这套材质的问题,所以随时可以通过我的 ARTStation 联系我,我很乐意帮忙。也谢谢你读到这里!

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

需要现成的金属表面资产,可以看 Metal Materials Vol 2——虚幻引擎逼真金属表面的 PBR 材质集合,想了解 Extended Shapes 所在的软件版本,则可以参考 Substance 3D Designer 16.0 发布:3D 散布 + SDF 建模 + OpenPBR。

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