在本教程中,我们将介绍一种在 Substance Painter 中将 Logo 或更广义上的装饰元素,也就是所谓的 Decal,应用到物体表面的方法。


本教程的视频版本目前尚未提供该语言版本。您可以在下方观看带字幕的英文版视频;视频下方提供了翻译成中文的文字稿。


视频文字稿

大家好!在本教程中,我们将介绍一种在 Substance Painter 中将 Logo 或更广义上的装饰元素,也就是所谓的 Decal,应用到物体表面的方法。具体来说,我们会在 Layer 上使用 Brushes,但这还不是全部。为了给这些装饰元素指定 Material,我们将使用一个我此前在视频教程中尚未讲解过的 Substance 工具:Anchors。

我先直接展示一下我要实现的效果。我想把一些 Logo 应用到当前屏幕上显示的 3D 模型上,但我还希望为这些 Logo 指定一种 Material。因此,我需要一种方法,能够在 Layer 上使用 Texture 进行绘制的同时,再应用另一种 Material。当然,这种 Material 的 Base Color 除外,它只应作用于该 Texture 所定义的区域。

我已经通过 File → Import Resources,将这些带透明通道的彩色 PNG Logo 导入到了 Textures 类别中。我没有它们的 Opacity Mask,而且我也不想在绘图软件或图像编辑软件中创建这些遮罩,因为正如稍后会看到的那样,我们可以直接在 Substance 内部生成它们。

这个模型已经有自己的基础 Material,但这些 Logo 需要使用另一种不同的 Material,具有不同的 Roughness 效果等等。因此,仅仅添加一个 Layer、选择一个 Brush、把 Texture 指定给 Brush 的 Base Color,然后在物体表面点击,是不够的。这样做只会把图像应用到 Base Color,而所有其他属性仍然保持底层 Material 的设置不变。正如你所看到的,由于 Opacity 是均匀的,Brush 还会在 Logo 周围留下一个光晕。

如果我们同时把同一张 Logo 图像指定给 Brush 的 Opacity 通道,情况也不会有太大改善。Opacity 会将图像颜色作为灰度值使用。我们可以通过将 3D 视图切换到 Opacity 显示模式来验证这一点。

因此,我们需要一种方法,使 Material 只应用于 Brush Stroke 所定义的区域,同时又使用 Brush Logo 作为该 Material 的 Base Color。换句话说,Material 应当把 Layer 中的 Brush Stroke 当作 Opacity Mask 使用。这正是 Anchors 发挥作用的地方。

Anchors 是 Substance 中的一种工具,本质上充当引用机制。一个对象,例如 Layer Mask、Filter 或 Generator,可以使用另一个对象的信息作为参考,只要在该对象上添加了一个 Anchor。

在我们的例子中,可以按如下方式操作。首先添加希望用于 Logo 的 Material。我这里使用的是一种金属材质。对于装饰元素来说,它并不是最合适的选择,但我希望展示它在 Roughness、Metallic 等不同通道上的效果。然后为它添加一个完全黑色的 Layer Mask,并禁用 Color 通道,因为我们希望使用 Brush Stroke 的 Texture 来提供颜色。

接下来,添加一个空的 Layer,用来通过 Brush 放置 Logo。在我的例子中,我使用的是 Basic Hard,这样边缘不会被模糊处理。请确保 Brush 只启用了 Color 通道。

根据你所使用的模型,启用 Symmetry Tool 可能会很有帮助。这样,当你在物体一侧点击时,系统会根据所选的对称轴,自动在另一侧创建对应的 Brush Stroke。

此时,右键点击该 Layer,然后选择“Add Anchor Point”。这时会出现一个新项目,显示一个 Anchor 图标,并使用与该 Layer 相同的名称。当然,我们也可以对其进行重命名。

这样一来,这个 Layer 就可以被其他对象使用,即使这些对象属于不同的 Material。

现在切换到 Material,在我的例子中是金属材质。右键点击黑色 Layer Mask,选择“Add Fill”,为其添加一个 Fill Layer。最初,它会呈现统一的颜色,也就是在 Properties - Grayscale 中显示的灰色。因此,这个金属材质会以中等强度应用到整个物体表面。

点击 Properties - Grayscale,然后点击“Anchor Points”……但出现了问题。我们无法点击这个区域!

我是故意制造这个错误的,因为这里有一个重要的概念需要说明。Anchor Point 必须位于需要使用它们的对象之下,也就是在 Layer Stack 中排在这些对象的下面。我是在计划使用该 Material 之后才添加 Brush Stroke Layer 的,因此现在需要把这个 Layer 拖动到 Material 的下方。

完成之后,就可以在 Material Mask 的 Fill Layer 中选择这个 Anchor Point 了。

如你所见,现在这个金属 Material 的各种属性,包括 Metallic、Roughness、Normals 等等,只会应用到我们在底层 Layer 中绘制的 Brush Stroke 所定义的区域。更重要的是,Base Color 并不是来自这个金属 Material,而是来自绘制图像的那个 Layer 本身。

不过,设置还没有完全结束。

如果切换到 Metallic 显示模式,我们会发现 Logo 只在图像中的白色区域呈现金属效果。这意味着 Material 在应用时,同时还把 Texture 本身当作 Opacity Mask 使用了,而这并不是我们想要的结果。

为了解决这个问题,选择 Material Mask 内部的 Fill Layer,然后将 Anchor 的“Alpha Behavior”设置从默认的“Keep Alpha”改为“Extract Alpha”。完成!

现在,Material 已经能够正确应用。它会按照图像透明度的比例生效,并且精确地作用于底层 Layer 中绘制的 Texture 所在的位置。

Anchor 会影响整个绘制 Layer,因此我们还可以更换 Brush Texture,或者向模型添加更多图像和 Logo。与该 Layer 的 Anchor 相连接的 Material 也会自动应用到这些新图像上。

旗帜只显示了一部分的原因在于,作为 Texture 使用的图像是矩形的,而 Brush 是圆形的。在将图像导入 Substance 之前,最好先在图像编辑软件中为缺失区域添加透明部分,使图像变成正方形。

到目前为止,我一直使用 Basic Hard 来完整绘制这些 Texture。不过,你当然也可以使用其他 Brush。例如,可以创造手绘风格效果,或者让 Logo 呈现出受损、磨损后部分被擦除的效果等等。

总结一下,Anchors 允许你将一个 Layer 的属性作为其他 Materials、Filters 或 Generators 的 Mask 来使用。如果你希望通过 Brush Stroke 应用图像,并保留图像原有的 Base Color,同时又想为这些图像指定特定的 Material,那么可以先在一个 Layer 上仅使用 Color 通道绘制图像,为该 Layer 添加 Anchor,然后添加所需的 Material,并在 Material 的 Layer Mask 中通过 Fill → Grayscale 将该 Anchor 作为引用来源。如果有需要,请记得将 Keep Alpha 修改为 Extract Alpha。

好了,本教程的内容就到这里!和往常一样,如果有任何问题、意见或者需要进一步说明的地方,欢迎在视频评论区留言。下次见!

搜索教程

输入短语,或输入多个用逗号分隔的关键词进行搜索。

这是一个个人网站,并非销售渠道。3D 模型相关页面仅用于记录我的部分作品,不包含任何销售要约、价格、购买方式或商业链接。目前,我不接受定制项目、咨询或其他任何形式的专业合作请求。


高级隐私策略信息和cookie文件的使用