Substance 3D Designer 制作的岩石地面材质渲染,碎石错落堆叠

引言

大家好,我叫 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 节点接入输出的节点设置

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

改用 World Units 工作流后的节点设置,可同时控制表面尺寸与深度

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

把表面尺寸设为 200×200 厘米、表面深度设为 24 厘米的参数设置
从宏观造型逐步细化到微观细节的节点图开头部分

我们回到图表的开头。总的来说,我在 Substance 3D Designer 里做材质的流程是:先搭宏观形状,再逐步细化到微观细节。我把节点从左到右、从上到下排列,这样的布局对我来说更有逻辑。

作为项目的开端,我先从地面做起。我选择不把石头随机散布在表面,而是希望它们彼此堆叠、相互影响,同时让地面的起伏仍然可见。为此我用 Clouds 2 节点打底,并开始引入方向性的图案。下面的 GIF 展示了我是如何一步步给地面叠加不同的噪声图案,让它贴近参考的:

逐步叠加不同噪声图案、让地面起伏贴近参考图的演变过程

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

制作大石头基础图案的节点,为高度图的核心部分打底
用两次 Flood Fill 并叠加悬崖状图案细化大石头的节点图

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

用 Tile Sampler 把石头按简单布局散布开的结果

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

制作中等石头的节点,细节比大石头更少,仅用 Flood Fill 雕刻

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

用悬崖图案为石头刻出细节,再以 Min Darken 混合两个 Tile Sampler 的节点图

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

用 Transformation 2D 配合 Auto Crop Greyscale 单独分离每块石头、再与地面混合的节点图
用 Shape Splatter 节点散布大石头并调整散布参数的节点图
用 Transformation 2D 沿 X 或 Y 轴压缩石头、逐步缩小尺寸的节点图

Shape Splatter 节点的一个缺点是它不支持尺寸随机化,只能手动处理。为此我用 Transformation 2D 节点沿 X 或 Y 轴压缩一些石头。随着加入更多石头,我逐步缩小它们的尺寸,直到地面某片区域被完全覆盖,尽量贴近参考。

出于性能考虑,我把最后两个 Shape Splatter 节点的分辨率设为 512,因为它们用于很小的石头。这些小石头是为了填补中等与大石头之间的缝隙、并出现在表面之上,所以较低的分辨率已经足够,不会损失视觉质量。

把最后两个 Shape Splatter 分辨率设为 512 来散布小石头的过程

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

把 Ao 与 Shadows 节点当遮罩使用、让图案散布更自然的节点图

反照率与粗糙度

完成高度图之后,我接着做基础色与粗糙度。这个阶段我先准备了一套色板来引导整个基础色流程。我先用高度图提取各种图案用于取色,然后混合不同的噪声纹理,做出视觉上有意思的东西并接入整条链路。

随着基础色推进,我持续加入更多细节,比如纹理脉络、色彩变化、污渍与边缘磨损。最后,我把完成的高度图与环境光遮蔽混合,强化整体的形状与纵深。

用于引导基础色流程的色板,以及高度图与 Ao 混合后的预览
从高度图提取各种图案用于色彩采样的基础色节点图
把不同噪声纹理混合进基础色链条的节点图
在基础色上继续叠加纹理脉络、色彩变化、污渍与边缘磨损的节点图
把完成的高度图与环境光遮蔽混合,强化整体形状与纵深的节点图
基础色完成后地表呈现黄褐色岩石质感的效果

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

把最终基础色接入 Greyscale Conversion 再经 Levels 调整范围,开始塑造粗糙度
混入与基础色相同的图案以保持一致并增加纵深的粗糙度节点图

扫描数据

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

用 Atlas Scatter 节点把从 Textures.com 购买的扫描素材散布到表面,并遮掉大石头区域

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

岩石地面材质的近景渲染,可见碎石堆叠的细节与标尺

Substance 3D Designer 很酷的一点,是它能让你创建程序化材质,也就是说图表里的每一部分都可以调整。我的材质遵循这一原则。我没有暴露任何参数,因为我没有想到具体的控制需求,也不需要同时调整多个参数,所以就让它们保持未暴露状态。

Marmoset Toolbag

在 Marmoset Toolbag 里,我用一块简单的平面,把材质拖拽上去就能快速搭建。着色器由 Substance 3D Designer 的输出构成,包括基础色、法线、粗糙度、高度与环境光遮蔽。我用两盏相对的方向光打亮场景,以平衡阴影并突出表面细节,还常常试不同的时段,看看材质会有怎样的反应。

渲染在 4096 × 4096 分辨率下完成,开启了光线追踪与高级光照采样。我还调整了镜头与后期效果,让场景更有电影感。

把岩石地面材质拖到平面上快速搭建后的渲染效果
Marmoset Toolbag 中由基础色、法线、粗糙度、高度与 Ao 组成的材质设置
Marmoset Toolbag 的渲染设置,采用 4096×4096、光线追踪与高级光照采样

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

在 Marmoset Toolbag 中调整镜头与后期效果后的渲染结果
用 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。

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