
引言
大家好,我叫 Amir Habibi,是一名伊朗的材质艺术家,在这个领域大约有四年的经验。我的 3D 之路始于申请瑞典斯德哥尔摩 Futuregames 的 3D Artist 课程。被录取之后,我上了一整套课程,学习了不同的软件,也探索了游戏行业中各种不同的岗位。
一开始我打算做环境艺术家。但随着学习的推进,我意识到材质美术才是我真正想走的路。作为材质艺术家,我不仅为环境制作材质,还要通过恰当的打光让这些环境真正活起来,这一点让我无比兴奋。
我一直是个注重细节的人,而材质制作恰恰要求对微妙的细节保持高度专注,才能做出写实感。这种挑战让我始终保持动力与热情。为了提升自己,我看了很多教程,主要来自 Joshua Lynch、Daniel Thiger、Enrico Tammekand 等优秀的艺术家。但除了看,我还会花时间去批判性地思考他们是如何构建材质的,以及如何把他们的见解与我自己的经验结合起来,做出独特的项目。
过去几年里,我参与过若干项目,既有独立完成,也有团队协作。其中最难忘的一段经历,是学生时期在 Futuregames 参与的一个游戏项目,我负责用 Substance 3D Designer 与 Unreal Engine 制作环境材质。
我也做了一系列个人材质练习,包括写实的木材、俄勒冈洞穴、干涸熔岩与科幻表面,都发布在 ARTStation 上。这些项目帮我打磨了工作流,也让我尝试用纹理与表面细节来讲故事。

工作流
当我想做一套材质却还没定下具体主题时,通常会先去浏览提供高分辨率照片的网站,比如 Getty Images、Pinterest 和 Alamy,看看什么能抓住我的眼睛。岩石地面这个项目正是这样开始的。我在翻参考时看到一组岩石地形照片,立刻来了兴趣。那种表面的复杂度,感觉正是逼自己把技术再往上推一推的完美挑战。
定下主题之后,我开始收集参考图。我认为这个阶段至关重要,会显著影响整个创作过程。找到准确而一致的参考往往很花时间,有时要花上一天多。我收集的图片之间需要彼此支撑,也就是说,它们合起来应该覆盖图案、色彩变化、粗糙度以及表面的整体表现等关键方面。
对于岩石地面这个项目,我特别留意侵蚀与潮气对表面的影响。我还在参考里使用了扫描数据,这样可以更清楚地观察细节,并采到不受光照或环境反射干扰的真实颜色——普通照片常常会失真。这帮我做出了一套更写实、更扎实的材质。
总体而言,岩石地面这个项目源于好奇与自我挑战的混合。我想看看自己能把材质的写实度与细节推到多远。它也帮我改进了工作流,并更理解纹理如何讲故事。

在深入图表、逐个讲解各部分之前,我想先说明我是如何设置输出的。以前我用的是 Standard Normal 与 Ambient Occlusion(AO)节点,直接接到各自的输出上。这种做法在调整法线与 AO 参数时很大程度上靠猜。后来我从 Enrico Tammekand 那里学到了一种更精确的方法,效果准确得多。

这套流程使用 World Units,可以同时控制表面的尺寸与深度,非常强大。对于这套材质,我把表面尺寸定为 200×200 厘米,表面深度定为 24 厘米。


我们回到图表的开头。总的来说,我在 Substance 3D Designer 里做材质的流程是:先搭宏观形状,再逐步细化到微观细节。我把节点从左到右、从上到下排列,这样的布局对我来说更有逻辑。
作为项目的开端,我先从地面做起。我选择不把石头随机散布在表面,而是希望它们彼此堆叠、相互影响,同时让地面的起伏仍然可见。为此我用 Clouds 2 节点打底,并开始引入方向性的图案。下面的 GIF 展示了我是如何一步步给地面叠加不同的噪声图案,让它贴近参考的:

下一步是处理大石头。我先做出石头的基本图案,然后用 Tile Sampler 以简单的布局把它们散布开。由于这些大石头构成了高度图的核心,小石头则散布在它们周围,我想多花些时间细化它们的形态,让它们更贴近参考。


为此我用了两次 Flood Fill 节点,并引入额外细节,比如悬崖状的图案(后面会讲),让石头看起来尽可能写实。

中等石头与大石头类似,但细节更少。我只用 Flood Fill 节点来雕刻石头,再做几处额外调整来塑形。

悬崖图案用来给石头刻出细节。和之前一样,我先做出初始图案,再把它们接到两个 Tile Sampler 上,用 Min Darken 混合模式混合。生成结果之后,我再雕刻混合图案产生的硬边,让它们更贴近参考。

所有石头做完之后,就该把它们与地面混合了。开始之前,我用 Transformation 2D 节点配合 Auto Crop Greyscale 把每块石头单独分离出来。我先用 Shape Splatter 节点混合大石头,仔细调整散布设置以达到想要的分布。选择这个节点,是因为它会生成灰度遮罩,之后可以用于制作基础色或散布更多细节。



Shape Splatter 节点的一个缺点是它不支持尺寸随机化,只能手动处理。为此我用 Transformation 2D 节点沿 X 或 Y 轴压缩一些石头。随着加入更多石头,我逐步缩小它们的尺寸,直到地面某片区域被完全覆盖,尽量贴近参考。
出于性能考虑,我把最后两个 Shape Splatter 节点的分辨率设为 512,因为它们用于很小的石头。这些小石头是为了填补中等与大石头之间的缝隙、并出现在表面之上,所以较低的分辨率已经足够,不会损失视觉质量。

我还把 AO 与 Shadows 节点当作石头的遮罩使用,这是我从 Daniel Thiger 那里学到的很棒技巧,能让图案散布得更加自然。石头散布完成后,我转向细化表面细节。一个有效的方法是把噪声接到 Normal to Height HQ 节点上,这来自 Derk Elshof 的一套流程。

反照率与粗糙度
完成高度图之后,我接着做基础色与粗糙度。这个阶段我先准备了一套色板来引导整个基础色流程。我先用高度图提取各种图案用于取色,然后混合不同的噪声纹理,做出视觉上有意思的东西并接入整条链路。
随着基础色推进,我持续加入更多细节,比如纹理脉络、色彩变化、污渍与边缘磨损。最后,我把完成的高度图与环境光遮蔽混合,强化整体的形状与纵深。






基础色完成之后,我开始做粗糙度。首先把最终的基础色节点接到 Greyscale Conversion 节点上,把 RGB 值转成灰度。然后用 Levels 节点调整范围,开始塑造粗糙度。随着推进,我混入与基础色相同的图案,以保持一致并增加纵深。


扫描数据
对材质满意之后,我决定第一次引入扫描数据,把项目的写实度再推进一步。从 Textures.com 购买素材后,我用 Atlas Scatter 节点把它们散布到表面上。我希望散落的元素出现在除大石头之外的各个地方,并据此做了遮罩。

高度图阶段的一个关键挑战,是在细节与清晰度之间取得平衡。我希望它能驱动其他输出的变化,但过于复杂又会让表面显得嘈杂。我迭代了好几次才把形状调整到位,让一切保持可读。

Substance 3D Designer 很酷的一点,是它能让你创建程序化材质,也就是说图表里的每一部分都可以调整。我的材质遵循这一原则。我没有暴露任何参数,因为我没有想到具体的控制需求,也不需要同时调整多个参数,所以就让它们保持未暴露状态。
Marmoset Toolbag
在 Marmoset Toolbag 里,我用一块简单的平面,把材质拖拽上去就能快速搭建。着色器由 Substance 3D Designer 的输出构成,包括基础色、法线、粗糙度、高度与环境光遮蔽。我用两盏相对的方向光打亮场景,以平衡阴影并突出表面细节,还常常试不同的时段,看看材质会有怎样的反应。
渲染在 4096 × 4096 分辨率下完成,开启了光线追踪与高级光照采样。我还调整了镜头与后期效果,让场景更有电影感。



我也用了 Substance 3D Designer 里的 PBR Render 节点渲染了几张图。它用起来相当简单。把最终输出接到对应的插槽之后,我选了一个合适的环境并截图渲染。为了在这个节点里控制光照,我用了 Plane Light 节点,可以摆放灯光位置并定义想要的方向。


结语
这个项目我花了将近两个半月,我没有逼自己快点做完,因为不想为了尽早发布作品而牺牲质量。最让我享受的是看着所有石头完美地拼合在一起,看着构图如我设想的那样成形,那种满足感难以形容。
我也很喜欢 PBR Render 节点与 Marmoset 的渲染,它们帮我做出了一些极其写实的画面,让整个场景活了起来。
这次练习让我学到几件事。比如使用 Shape Splatter 节点时要谨慎,它是一个很重的节点,会显著增加内存开销,最好只在特定区域选择性地使用。
另一个心得是,PBR Render 节点是一个很好的渲染选择,能产出非常惊艳的结果,我很期待把它用到以后的项目里。我也想分享几个对我帮助很大的教程:Fundamentals Part 1: Pattern Creation and Natural Scattering、Creating Herringbone Bricks in Substance Designer: Bundle,以及 Advanced Material Creation in Substance 3D Designer。
更多材质制作拆解可以查看本站 案例教程 分类;
想了解完整的环境搭建案例,可以看 维京环境搭建案例:打造生活气息十足的风格化 3D 场景;
想了解这套节点流程所在的软件版本,可以参考 Substance 3D Designer 16.0 发布:3D 散布 + SDF 建模 + OpenPBR。


评论(0)