在本教程中,我们将了解什么是 PBR,如何使用基础 Textures 在 Substance 中定义 PBR Material,以及最重要的是,它们是如何协同工作的。


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


视频文字稿

大家好!如果你来到这里,应该已经知道 Substance Painter 是一款用于为 3D 模型创建 Materials 和 Textures 的软件应用程序。3D 模型文件会被导入到 Substance Painter 中,在这里你可以创建 Texture 图像,并将它们映射到模型几何体表面,然后导出这些图像。这样,带有 Textures 的对象就可以在 Unity 或 Unreal 等游戏引擎中使用,用于制作电子游戏或虚拟现实、增强现实应用程序;也可以用于 Blender 3D、3D Studio MAX 和 Maya 等动画与渲染软件;还可以用于 Sketchfab 等互联网实时 3D 可视化系统,以及更多其他场景。

在继续之前,准确地说,在介绍程序界面或将 3D 模型导入新的空白 Substance Painter 项目之前,我们首先需要解释什么是 Material。

Material 是一组信息。当它被应用到 3D 对象上时,它会定义该对象在虚拟场景中被照明和渲染时的表现方式。Rendering,也就是最终显示在屏幕上的图像,无论是静态还是实时,都是虚拟场景中光线与表面相互作用的结果。一方面,我们有各种类型的光源,从虚拟灯光到环境照明 Texture;另一方面,我们有对象的表面,在某些情况下也包括体积。之后还可以在这个初始结果基础上添加后期处理效果,但正如名字所示,这些实际上是在 Rendering 过程之后才应用的效果和滤镜。

好,那么 Material 是一组信息……但到底是什么样的信息呢?

根据用于创建 Rendering 的理论模型,也就是所谓的 “scheme”、“method” 或 “paradigm”,可以定义不同类型的信息,每种信息都有各自的特性。特别是,Substance Painter 允许我们定义遵循 Physically Based Rendering,也就是 PBR 模型的 Materials。有时候你也会看到 PBS 这个缩写,它代表 Physically Based Shading,指的是对象表面的着色方式。

在本教程中,我们不会过于深入地讲解 PBR 理论,因为这部分内容会在专门的教程中介绍。在这里,我们只会了解用于定义 Substance 中 PBR Material 的基础 Textures,以及更重要的,它们是如何协同工作的。理解这些概念对于我们自信地创建和自定义 Materials 至关重要,而不是在修改某个 Material 信息通道参数时靠猜测来操作。

为了避免让这个视频过于理论化,我会使用一个已经在该软件中创建好 Materials 和 Textures 的 3D 模型,来解释 PBR 的基本元素以及它们在 Substance 中的实现方式。

Physically Based Rendering paradigm,正如名字所暗示的,是基于一种物理化的方法,也就是说,它受到现实世界中物体行为方式的启发。

Materials 可以通过两种 workflow 来定义:Metallic 和 Specular。

在 Metallic workflow 中,表面会被划分为 metallic 和 non-metallic 材质,并且基于这种区分,所有其他通道都会以不同方式工作。

而在 Specular workflow 中,则是通过定义 specular reflections 的强度以及可能的颜色偏移,来决定光线与对象表面交互时的表现方式。

特别是在本示例使用的 PBR Metallic workflow 中,一个表面的外观由多个特性决定,其中最重要的包括:

它的材质属性,首先需要区分它是 metal 还是 non-metal,也就是所谓的 dielectric;

它的 Base Color。在 metallic 对象中,它定义的是光线反射的强度;而在 non-metallic 对象中,它则表示真实的表面颜色,不包含光照效果;

它在不同区域的平滑程度,也就是 Glossiness,或者反过来说,表面的 Roughness 程度。

除了这些来源于现实世界的特性之外,在虚拟世界中还会添加一些额外功能。例如,通过使用 Normal Maps 或 Height Maps 等特定 Texture 图像,可以在不真正对几何体进行建模的情况下模拟细节,从而节省 vertices、edges 和 faces,也就是节省渲染时的计算资源,特别是在电子游戏和其他实时应用程序中。

我在本视频中使用的木桶,可以让我们在同一个对象中观察这些基础信息是如何被转换为 Textures,并组合成一个 Substance Material 的。

为了在 3D View 中显示应用到对象上的完整 Material 预览,我按下键盘上的 M 键,也就是 Material 的快捷键,或者从 3D View 右上角的下拉菜单中选择 Material。

正如你所看到的,我们同时拥有 metallic 元素,也就是铁制部分,以及 non-metallic 元素,也就是木质部分。这将帮助我们理解在 PBR paradigm 中,这两类材质是如何被不同处理的,尤其是在 Base Color 定义以及 specular reflections 颜色方面。

为了显示各个独立的信息通道,也就是应用到对象表面的不同 Texture 图像,我们可以多次按下 C 键,或者从 3D View 右上角的下拉菜单中选择所需通道。

我们先从 Metallic channel 开始。它通过一张 grayscale 图像来定义 Material 的哪些部分应被视为 metallic,哪些部分不应被视为 metallic。其中,白色代表纯金属,黑色代表纯非金属。在这个木桶的案例中,我们还能看到灰色区域,因为用于 metallic 部分的 “Iron Old” 材质旨在表现陈旧磨损的铁,可能还覆盖着灰尘或锈迹,因此它的 “metallicity” 可以说被降低了。

而木质部分则完全显示为黑色,也就是说它们是 non-metallic,这正符合我们的预期。

接下来我们来看第二个基础 PBR 通道:Base Color。

正如你所看到的,这个信息通道使用 color Texture 来显示对象的基础颜色,不包含任何 lighting 或 shading 效果。可以说,这些是 “flat” Textures。metallic 部分和木质部分的颜色强度看起来相近。当然,它们的颜色不同,但从视觉上看并没有显得截然不同,即使它们实际上属于完全不同的材质。

原因在于,在 shading 和 rendering 过程中,Substance 会通过 Metallic channel 以及对应的 Texture 来区分处理方式。它告诉 Substance:根据表面是 metallic 还是 non-metallic,光线反射必须采用不同的计算方式。metallic 部分 Base Color 中的灰度值,则定义了光线反射的强度,以及是否会对这些反射施加颜色偏移。

“Iron Old” 是一种比较 “脏” 的材质,因此这个效果并不算特别明显。不过请看,如果我在木材材质和金属材质之间插入一个 Substance 的 “Aluminium Pure” Material,并禁用下面的 Iron Old 材质,各个通道以及最终结果会发生什么变化。

在最终结果中,也就是结合了所有信息通道的 Material 视图里,metallic 部分明显比之前反射更强了。

在 Metallic channel 中,metallic 部分变成了纯白色,这表示它们是完全纯净的金属。

在 Base Color channel 中,metallic 部分几乎也是白色,这意味着这些区域中的 specular reflections 强度会达到最大,并且不会带有任何颜色偏移。

现在看看,如果我把 Aluminium Pure 的 Metallic 参数设为 0,会发生什么:金属带会变成白色,它们不再像之前那样反射,看起来更像白色塑料对象。

现在我们把 Metallic 恢复为 1,但降低 Base Color 的值:这些金属带仍然保持典型的金属反射特性,但会逐渐变暗。

这正是关键点:在 Metallic workflow 中,也就是这里所使用的 workflow,仅仅依靠对象的 Base Color 并不足以定义表面的反射程度,因为我们还需要指定它是否为 metal。在 metal 中,Base Color 的强度同时也是光线和 specular reflections 的强度;而在 non-metal 中,Base Color 只定义真实的表面颜色,就像木桶的木质部分那样。

我会保持 Aluminium Pure 材质启用,同时关闭 Iron Old,以便向你展示第三个基础 Material 通道:Roughness。

Roughness,也就是平滑度的反面,与 Metallic map 一样,使用 grayscale 图像表示。其中白色代表最大粗糙度,黑色代表完全光滑、完全反射的表面。事实上,一个完美镜面在 PBR 中就是通过一个纯白色的 metallic Material,并将 Roughness 设为 0 来实现的,我现在正在屏幕上演示这一点。

随着 Roughness 值增加,表面会变得不那么平滑,因此它的 specular reflections 会变得更加扩散,或者说更加模糊。从某种意义上讲,这种效果同时适用于 metals 和 non-metals。

现在我会移除 Aluminium Pure Material,并重新启用 Iron Old,以回到项目原本的配置。接下来我们来看看一些额外的信息,这些信息在 Computer Graphics 中能够让我们在 rendering 时添加表面细节,而无需真正把这些细节建模到几何体中。

然后我从 3D View 右上角的选择器中选择 “Normal + Height + Mesh” 选项。

这个视图显示了多个信息通道的组合,它们共同影响对象表面细节的模拟。如果没有这些细节,对象表面会显得非常光滑,也缺乏真实感,尤其是在木质区域。

特别是在当前屏幕中的示例里,表面细节主要通过木质部分中的 “Fibers” layer 来实现。为了观察这些细节存在与否时表面外观的差异,只需在 Layers panel 中启用或禁用对应的 layers,同时在 3D View 的 “Normal + Height + Mesh” 模式和 “Material” 模式下观察变化即可。当对象使用侧面光照而不是正面光照时,这些差异会更加明显。

类似的效果也存在于 metallic 部分,它们通过两个 Iron Old layers,也就是 Iron 和 Edges 的 Height 与 Normal 信息通道来实现。正如你所看到的,这些 Textures 让某些表面变得更加有趣;如果没有它们,这些表面会显得不真实,因为它们看起来会过于光滑和平坦。

Material 是一组通过图像实现的信息,其中有些是 grayscale 图像,有些是 color 图像。这些图像会被映射到对象表面,并按照特定方法组合起来。在我们的案例中,这种方法就是 PBR Metallic paradigm。这些信息定义了对象表面与光源之间如何交互,从而生成最终图像。

PBR 基于现实世界中观察到的材质特性,并通过正确组合代表这些特性的 Textures,在 Computer Graphics 中实现这些效果。

PBR 方法包含两种 workflow:Metallic 和 Specular。在本教程中,我们分析的是使用 Metallic workflow 的示例。

在 PBR Metallic workflow 中,第一步是通过 grayscale Texture 来定义表面的哪些部分是 metallic,哪些部分不是。

在 metallic 区域中,Base Color 信息,也就是一张 color Texture,用于定义 specular reflections 的强度以及可能的颜色偏移。而在 non-metallic 区域中,Base Color 只表示真实的表面颜色,不包含 lighting 或 shading 效果。

Roughness 表示表面的粗糙程度。当 Roughness 值较低时,反射会非常锐利且清晰;在一个拥有白色 base color 的 metallic 表面中,材质会表现得像完美镜子一样。随着 Roughness 值增加,光线反射会逐渐变得更加扩散和模糊。Roughness 与 Glossiness 正好相反。

Normal Textures,也就是 color 图像,以及 Height Maps,也就是特定的 grayscale 图像,可以在对象显示与 rendering 过程中模拟表面细节。它们对于节省几何体数量以及计算资源非常有用,特别是在电子游戏或虚拟现实、增强现实等实时应用程序中。

好了,关于这期 Substance Painter 中 PBR、Materials 和 Textures 基础元素的入门视频教程,我们就在这里先停下。本次我们只介绍了前四个信息通道。之后我还会制作更多教程,分别单独分析各个通道,例如 Height 和 Ambient Occlusion,或者从整体角度分析一个 Material 的所有通道,看看它们是如何结合起来,根据不同情况产生特定效果的。

欢迎大家在 YouTube 视频评论区留下问题、评论和建议。我们下次见!

搜索教程

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

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


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