创建和使用材质实例

关于设置和使用材质实例的指南。

Choose your operating system:

Windows

macOS

Linux

在虚幻引擎中创建和编辑标准材质可能是一个很耗时的过程。为了加快和简化材质创建工作流程,虚幻引擎提供了一种特殊类型的材质,其被称为 材质实例(Material instance)。本教程演示了如何在你的项目中设置和使用材质实例。

材质实例化

材质实例化用于创建一种父材质,你可以将其用作基础,生成各种各样不同外观的子项(材质实例)。

为了实现这种灵活性,材质实例化使用了一种称为 继承(inheritance) 的概念:父材质的属性会传递给其子项。 父材质中指定为 参数(parameters) 的属性在 材质实例编辑器(Material Instance Editor) 中公开给美术师。

材质实例编辑器

使用材质实例,你可以从单个基础材质创建许多变体。

三个材质实例

创建材质实例是包含两个步骤的过程

  1. 首先创建一种 参数化(parameterized) 材质,以用作实例的父材质。

  2. 在内容浏览器中创建 材质实例常量(Material Instance Constant) 。 然后你可以在材质实例编辑器中自定义该材质。

如需进一步了解关于材质实例化的背景信息,请阅读此处的概述

创建参数化材质

材质实例继承其父材质的所有属性,但默认情况下并非所有这些属性都可以在材质实例编辑器中自定义。

要使材质属性在材质实例中可编辑,你必须使用参数节点而不是常规材质表达式来将特定属性指定为 参数(parameters)

有两种方法可将参数节点添加到材质图表。

从材质控制板添加参数节点

如果你在 材质控制板(Material Palette) 中或从材质编辑器中的右键菜单搜索"parameter"一词,可以找到所有可用的参数节点。

你可以从控制板拖放这些参数节点,或在右键菜单中选择它们,以将其添加到材质图表。

材质表达式控制板和上下文菜单

右键菜单(左侧)和材质控制板(右侧)中的参数。

参数快捷键

两个最常用的材质参数在材质编辑器中有键盘快捷键。

  1. 标量参数(Scalar Parameter) - 按住 S键 并在材质图表中 左键点击 以放置标量参数。 标量参数是常量的参数化版本,并且包含单个数字值。

  2. 矢量参数(Vector Parameter) - 按住 V键 并在材质图表中 左键点击 以放置矢量参数。矢量参数是Constant 4 Vector的参数化版本,并且包含四个浮点值。

使用快捷键或控制板将标量参数放置在材质图表中。

粗糙度标量参数

将该参数命名为 粗糙度(Roughness) 并将其连接到对应的材质输入

默认值和值范围

如果你想设置参数的默认值或限制值范围,可以在细节(Details)面板中这样做。

默认值粗糙度

例如,粗糙度输入接受从0到1的值。要确保粗糙度参数始终保持在这个预期的范围内,请将 滑块最小值(Slider Min)滑块最大值(Slider Max) 分别设置为0和1。

如果你需要0之外的默认粗糙度值,请在 默认值(Default Value) 字段中输入该值。

选择粗糙度参数并按 Ctrl+D 以复制该节点。 将第二个标量参数重命名为 金属感(Metallic) 并将其连接到相应的输入。 你的图表现在应该如下所示:

金属感和粗糙度参数

将节点转换为参数

你还可以将标准材质表达式转换为现有材质图表中的参数。

出于演示目的,请将 Constant3Vector 节点放置在材质图表中。这是标准(非参数化)材质表达式,常用于定义材质的基础颜色。

插入Constant3 Vector

要将此节点转换为参数,请 右键点击 该节点,然后从上下文菜单中选择 转换为参数(Convert to Parameter)

转换为参数

请务必为参数提供唯一的描述性名称,如BaseColor。 在你转换节点时,将自动选择命名字段。

重命名细节面板中的参数

你可以在如上所示的 默认值(Default Value) 字段中更改颜色,也可以双击BaseColor节点以打开取色器。

取色器界面

你无法在虚幻引擎中参数化每个材质节点,但对于可以参数化的所有材质表达式,右键菜单中都提供了 转换为参数(Convert To Parameter) 选项。

参数化材质示例

你的材质图表现在应该包含一个插入到BaseColor的矢量参数和两个分别插入到金属感(Metallic)和粗糙度(Roughness)输入的标量参数:

参数化材质示例

这三个参数将允许你在创建材质实例后更改材质的颜色、粗糙度和金属感属性。

点击材质编辑器左上角的 应用(Apply) 以编译材质,然后点击 保存(Save)

编译材质

创建材质实例

现在你有了简单的参数化材质,可以创建材质实例并在材质实例编辑器中进行自定义。

要创建材质实例,请在内容浏览器中右键点击你的材质,然后从菜单选择 创建材质实例(Create Material Instance)

创建材质实例

你的材质实例将从你用于创建它的材质继承其名称。要重命名材质实例,你可以选择它并按 F2单击 名称字段。

重命名实例

编辑材质实例

在内容浏览器中 双击 材质实例以打开 材质实例编辑器(Material Instance Editor)

打开材质实例

材质实例编辑器是一种界面,你可以在其中自定义材质参数以生成父材质的不同外观的变体。

材质实例编辑器中的材质实例。

调整材质参数

材质参数位于材质实例编辑器右侧的细节(Details)面板中。 请注意,这些参数的名称取自原始材质图表中的参数节点。

使用以下步骤可编辑参数:

覆盖材质参数

  1. 勾选参数旁边的框以启用编辑。

  2. 在字段中输入新值,或左键点击并拖动以上下滑动值。 对于矢量参数,左键点击色条以激活取色器。

  3. 要将参数重置为默认值,请点击此处图中的箭头图标。

随着你调整参数,材质预览将在材质实例编辑器中实时更新,如果材质当前应用于Actor,还会在关卡中更新。

使用参数组

你可以将参数分类为 参数组(Parameter Groups) ,以改善材质实例的组织和可读性。

上述例子只有三个参数,较易于阅读,而对于大量参数化的主材质,如果你不使用参数组,与之交互的效率就会比较低下。

下面的滑块显示了使用和不使用组的材质实例。 在没有参数组的例子中,标量参数显示在单个无组织的列表中。 使用参数组的实例按材质属性整齐地进行组织。

没有参数组的材质实例

使用参数组的材质实例

如何使用参数组

参数组在父材质中配置,而不是在材质实例中配置。 这在材质编辑器的细节(Details)面板中完成。

在材质图表中选择一个材质参数节点。

色调Vector 3参数

在细节(Details)面板的 组(Group) 字段中输入名称。 你可以随意命名各个组,但建议按参数所控制的材质属性对参数分组。

基础颜色参数组

将参数组名称分配给一个材质参数表达式后,该名称将显示在组(Group)字段旁边的下拉菜单中。

对于其余参数,你可以输入新组名,或从下拉菜单选择某个现有参数组。

选择现有参数组

在组中对参数排序

你可以使用 排序优先级(Sort Priority) 字段来更改组中列出参数的顺序。 默认情况下,所有参数都按字母顺序列出,这样一来,材质实例编辑器中的排序会比较笨拙或低效。 在下面的滑块中,UV平铺和偏移功能按钮在按字母顺序列出时会分散,但通过向每个参数分配排序优先级值,可以让体验得到改善。

字母顺序参数

重新排序的参数

要更改参数的顺序,请选择节点并在细节(Details)面板中的 排序优先级(Sort Priority) 字段中输入新值。

参数组排序优先级

对参数组排序

默认情况下,参数组按字母顺序在材质实例编辑器中显示。

有两种方法可更改参数组的顺序。 一种解决方案是直接向组名添加数字。

Megascans父材质使用此方法,参数组的编号从 00 - 07

Megascans参数组

这样一来,参数组可以按它们在主材质节点中的显示顺序显示。

组排序优先级

你还可以使用细节(Details)面板中的 组排序优先级(Group Sort Priority) 属性来更改参数组的顺序。 此属性位于父材质中,而不是在材质实例中。

  1. 取消选择材质图表中的所有节点以访问其材质属性。

  2. 在细节(Details)面板中,展开 组排序(Group Sorting) ,然后展开 参数组数据(Parameter Group Data)

  3. 此分段中的数组列出你的材质中的所有参数。展开每个索引并更改 组排序优先级(Group Sort Priority) 以修改各个组的顺序。

    组排序优先级

更改材质实例的父材质

你可以在材质实例编辑器中轻松更改材质实例所使用的父材质。

要更改父材质,请在材质实例编辑器中打开材质实例。 在细节(Details)面板中的 通用(General) 分段下,找到 父项(Parent) 属性。

父材质字段

使用下拉菜单搜索并选择不同的父材质。你还可以在内容浏览器中选择材质,然后点击 使用内容浏览器中的选定资产(Use Selected Asset in Content Browser)按钮 (朝左箭头)。

请注意,如果你更改父材质,可能会完全更改材质实例的外观和属性。 你之前在使用的参数可能在新的父材质中不再可用。

更改父材质

例如,如果你从下拉列表中选择 M_Metal_Gold 材质,M_Parameterized 示例中存在的三个参数(粗糙度、金属感、基础颜色)在gold实例中不再可用。

新的父材质

结论

材质实例化是一种强大的工具,你可以在项目的所有方面中加以使用。 从为武器和道具添加一些变量,到帮助美术师更好地利用可用材质, 材质实例有助于简化和统一在项目中创建和使用材质的方式。