在这个面向初学者的教程中,我们将学习如何为一个只有单一 Texture Set 的对象的不同部分分配两种不同的材质。也就是说,这个对象作为一个单独的几何体提供,并且只包含一个 Material。为了给同一个几何体的不同区域分配不同的 Substance Materials,我们将使用遮罩。
本教程不提供中文配音。您可以在下方观看英语配音的视频,并选择中文、英文或其他语言的字幕。视频下方提供了翻译成中文的文字稿。
视频文字稿
大家好!在这个面向初学者的教程中,我们将学习如何为一个只有单一 Texture Set 的对象的不同部分分配两种不同的材质。也就是说,这个对象作为一个单独的几何体提供,并且只包含一个 Material。为了给同一个几何体的不同区域分配不同的 Substance Materials,我们将使用遮罩。
首先,使用 “PBR Metallic Roughness” 模板创建一个新的 Substance 项目,当然,还要导入我们想要使用的模型。

让我们先看看这个教程中使用的模型。首先请注意,Texture Set List 中只有一个条目 “can_opener_2”,因此这个 3D 模型实际上是作为一个带有单一 Material 的整体对象提供的。我们的任务就是为这个对象的不同部分分配不同的 Substance 材质。

在 3D 视图右上角的视口模式选择器中,选择 “2D Only” 模式,快捷键是 F3,然后按下 F 键,也就是 “frame”,让 UV 布局居中显示在视图中。

请注意,这个 UV 布局制作得非常好。它没有任何重叠区域,也就是说它是 “non-overlapping” 的。同时,我们也很容易识别位于下方的手柄区域,它与金属部分是分开的。最后,还有一个非常重要的细节,就是这些表面的方向都设置得很正确,特别是在水平方向上。这一点非常有用,因为有些 Substance 材质会带有纹理方向,例如木纹,而这些纹理通常是水平或者垂直排列的。

由于 UV 布局中的表面都是笔直排列的,因此我们可以非常轻松地控制材质纹理在对象上的方向。
现在回到 3D 视图,在 Layers 面板中选择 “Layer 1”,然后点击垃圾桶图标将其删除。这个图层原本允许我们直接在对象上自由绘制,但这并不是我们现在需要的,因为我们想使用 Substance 自带的原生材质。

接下来,在 Shelf 面板中选择 “Materials”,然后在搜索框中输入 “wood”。Substance 会自动过滤结果,在可用材质中,我们应该能够找到 “Wood American Cherry”。

也许这个材质并不是这个手柄最合适的选择,但至少在 2019 版本的 Substance 中,它是软件默认自带的材质之一,因此你应该能够直接使用它。在其他教程中,我们会学习如何添加从 Substance Source 下载的材质,以及如何创建自己的 Smart Materials。而在这里,我们只使用软件开箱即带的材质。
点击这个材质进行选择,然后将它拖入 “Layers” 面板中。此时,这个材质会被应用到整个对象上。

请注意,木材材质显然带有纹理方向,而且由于之前我们检查过 UV 布局方向正确,因此这些木纹方向现在也显示得很正确。
在 Layers 中选中这个材质之后,让我们来看一下 “Properties - Fill” 面板。如果你没有看到这个面板,可以通过 “Windows” - “Views” 来启用它。
这个面板本质上就像当前所选对象的身份信息卡。无论是材质,还是我们之后会看到的滤镜、遮罩等等,它们的属性都会显示在这里。总的来说,它会显示当前选中对象的各种属性设置。

对于材质来说,这个面板至少包含两个部分:Fill 和 Material。
Fill 部分包含所有材质通用的设置,也就是与材质在对象上的映射和投射方式相关的参数。而 Material 部分则既包含所有材质共享的设置,例如影响哪些信息通道的选择器,比如 Color、Height、Roughness 等等,也包含当前材质特有的设置。例如对于 “Wood American Cherry”,这里就有木材颜色、粗糙度、纹理以及其他独特特征的控制项。
例如,在 Fill - Projection 部分中,我们可以看到,这个材质默认是通过模型自带的 UV 映射投射到对象表面上的。这也是为什么之前在 2D 视图中看到的那些方向正确的 UV 接缝会如此重要。
如果我们想改变材质在 UV 映射中的方向,可以保持 “UV Projection” 不变,然后直接调整下面的 Rotation 参数。

如果我们想增加或减少表面上纹理的密度,则可以修改 Scale 数值,也就是材质在 UV 映射中的缩放比例。减小这个值会让材质变大,而增大这个值则会让材质变小,因此 Substance 会在 UV 上重复平铺它多次,以覆盖整个表面。这是因为 UV Wrap 选项当前设置为 “Repeat”,因此可能会产生平铺效果。

例如,我们将 Scale 设置为 3。这样能够让木纹更加密集,同时又不会让纹理看起来重复得太明显。
从不同角度观察对象表面时,我们还会发现,这个材质在沟槽内部加入了光照效果,从而模拟出深度感,尽管对象本身的几何实际上是平滑的。我们可以通过点击 Layers 中 “Wood American Cherry” 旁边的眼睛图标暂时禁用材质来验证这一点。

在 Substance 中,表面的凹凸效果主要通过 Normal 和 Height 通道来模拟。由于在 Properties - Fill - Material 中,“Nrm” 复选框是关闭的,因此这个效果一定是由 Height 生成的。我们可以通过反复开启和关闭 Height 来观察 3D 视图中的变化,从而验证这一点。

如果将视口显示模式切换为 3D 视图右上角的 “Normal + Height + Mesh”,然后再次在 Properties - Fill - Material 中反复开启和关闭 Height 通道,我们会更加明显地看到差异。

所以没错,这个效果确实来自 Height 通道。“Wood American Cherry” 这个 Substance 材质中包含了 Height 信息,同时还允许我们调整其强度。在 Properties - Fill - Material 中,展开 Parameters 部分,然后修改 “Height Range” 参数,同时观察 3D 视图中的变化。建议在 Material 视图模式下,并且让对象受到侧面光照时进行观察。

在这个教程中,我们不会逐个讲解每一个参数,因为那样会变成一长串既无聊又不太实用的列表。在之后的教程中,我们会通过实际案例来探索不同设置和组合的效果,那样会更加有趣。当然,如果你想提前了解各种参数和它们的作用,也完全可以自己尝试和实验。
好了,我们已经为 Texture Set 添加了第一个 Substance Material,并了解了其中一些参数。但是,这个材质现在被应用到了整个对象上,而我们其实只想让它出现在手柄部分。那么该怎么做呢?
最简单的方法,就是给这个材质添加一个遮罩。
遮罩本质上是一张映射到对象 UV 布局上的灰度图像。材质会被应用到白色区域,在黑色区域中则不会生效,而灰色区域则会根据灰度值按比例影响材质效果。
在 Substance Painter 中,遮罩是非常重要的功能。它不仅可以用于像现在这样简单的操作,还可以结合滤镜和其他运算器来制作复杂效果,例如模拟边缘磨损,或者只在特定区域出现的锈迹。
遮罩也可以基于外部图像来创建,但在我们的例子中,只需要从一个黑色遮罩开始,然后把手柄区域涂成白色即可。
为了给 “Wood American Cherry” 材质创建黑色遮罩,在 Layers 中右键点击这个材质,然后选择 “Add Black Mask”。

此时,在材质预览旁边会出现一个黑色方块,它代表新创建的遮罩。当前选中的就是这个遮罩,请注意黑色方块周围的选中边框。在 “Properties - Fill” 面板中,我们现在看到的设置也已经不同于材质本身。当然,我们仍然可以通过在 Layers 中左键点击材质预览来重新选择材质本身。与此同时,在 3D 视图中,对象现在会变成灰色且没有任何效果,因为材质当前没有被应用到任何区域。

有很多方法可以将遮罩的一部分变成白色,包括手动方式和程序化方式,也就是通过算法生成的方法。在这个教程中,我们会使用一种手动方法,也就是直接选择 UV island,也就是我们希望变成白色的那一部分 UV 区域。

在选中黑色遮罩的状态下,点击 “Polygon Fill” 图标。现在它应该会出现在 Tools 面板中。如果没有看到这个面板,可以通过 Window - Toolbar - Tools 来启用它。

在 “Properties - Polygon Fill” 面板中,选择名为 “UV chunk fill” 的棋盘格图标。这个模式允许我们只需点击 UV island 上的任意一点,就能修改整个 UV island。

确保 “Color” 设置为白色,然后点击手柄上的任意一点。这样,对应的 UV island 在遮罩中就会变成白色。我们也可以通过切换到 “3D | 2D” 显示模式,并选择 “Mask” 模式来验证这一点。而在 Material 模式下,由于材质重新出现,因此结果也会非常明显。

注意:你也可以直接在 2D 视图中的 UV 布局上点击。为了演示这一点,我现在会使用 CTRL Z 快捷键,也就是 Edit 菜单中的 “Undo”,撤销刚才的操作。然后在保持遮罩选中并且 UV Chunk Fill 模式为白色的情况下,我会直接点击 2D 窗口中的 UV 布局。

到这里,我们是不是就可以从 Materials 中再选择一个材质,并把它拖到 “Wood American Cherry” 下方,让它显示在对象剩余的部分上了呢?
嗯,理论上是正确的,但这里有一个小问题。这个问题在那些包含额外 Normal 或 Height 效果的材质中会尤其明显,比如 “Iron Brushed”,也就是带有明显拉丝纹理的金属材质,正如我现在在屏幕上展示的那样。由于这个材质会应用到整个表面,因此它的 Normal 和 Height 效果也会影响到手柄区域。

在这个例子中,问题还不算太严重,但相信我,换成其他材质时,这种影响会明显得多。现在屏幕上展示的就是一个使用 Diamond Bicolor Tiles 的例子,这是我从 Substance Source 下载的材质。

那么,我们该如何解决这个问题呢?
答案其实很明显:还是通过遮罩来限制材质的影响范围。
不过这一次,我们将采用相反的方式。由于除了手柄以外的整个对象都应该是金属材质,因此在 Layers 中右键点击 Iron Brushed 材质,然后这次选择 “Add White Mask”。这样会创建一个覆盖整个对象的白色遮罩。随后,选择 Polygon Fill 并使用 UV Chunk Fill 模式,不过这次将 Color 设置为黑色,也就是数值 0,然后点击手柄上的任意一点。这样,只有对应于手柄的 UV island 会在遮罩中变成黑色,从而被排除在 “Iron Brushed” 的效果之外。

总结一下,我们学习了如何通过遮罩,将多个 Substance 材质应用到同一个 Texture Set 的不同部分。我们还探索了两个材质在 Properties - Fill 面板中的一些设置,从而熟悉了基础参数和配置方式。
本教程就到这里。和往常一样,如果你有任何疑问、问题,或者希望进一步解释的内容,欢迎在 Youtube 视频的评论区留言。我们下次见!