材质实例的创建和使用

关于如何设置并使用材质实例的指南

Choose your operating system:

Windows

macOS

Linux

在虚幻引擎4中,标准材质的创建、设置和调整过程往往十分耗时。 为了加速并简化这个过程,虚幻引擎4提供了一种特殊类型的材质,称之为 材质实例(Material Instance) 。 在下述指南中,你将学习如何在项目中设置和使用材质实例。

材质实例化

材质实例化是指创建一个 父材质 ,然后将它作为基类,派生出效果各异的 子材质 。为了实现这种灵活性,材质实例化使用了名为 继承 的概念:这意味着父材质的属性会被赋予子材质。此处有一个材质继承的具体示例。

点击查看大图。

编号

说明

1:

此为父材质,你在右边看到的两个材质实例从它继承了属性。注意,父材质中使用了四种纹理。

2:

这是材质实例中设置父材质的位置。更改此处的材质会导致材质实例的工作方式发生改变。

3:

通过更改这些纹理,你可以更改材质实例的整个外观效果。注意,这里有四个纹理输入,而这四个输入之所以在此处,是因为材质实例从左边的父材质继承了该功能。

材质参数

如果要更改材质实例的参数,你必须在材质图表(Material Graph)中使用另一种名为 参数节点(Parameter Node) 的不同节点。 参数节点(Parameter Node) 在外观和工作方式上都与普通的材质表达式(Material Expression)节点相似,但是两者的关键区别在于,参数节点(Parameter Node)用于告诉材质实例如何工作。 使用材质参数是让材质与材质实例交互的唯一方法。

有两种方法可以在 材质图表 中添加材质节点。

在材质控制版中添加参数节点

如果你在 材质控制板 中搜索"参数(parameter)",你会找到所有可用的 参数(Parameter) 节点。然后可以将这些节点从控制板中拖入材质图表。

Materails_Instances_Search_For_Pram_Nodes.png

转换节点

在材质图表中,你可以右键单击某个节点,然后选择 转换为参数(Convert To Parameter)

并非每个材质节点都适用于上述操作。如果你在节点上 右键单击 时看到 转换为参数(Convert To Parameter) 选项,则表示该节点可以转换为参数节点。

创建材质实例

我们将使用上述方法创建一个材质实例。

  1. 我们首先要新建一个材质。右键点击 内容浏览器(Content Browser) ,然后选择 创建基本资源(Create Basic Assets) > 材质(Material)

    Materails_Instances_Creat_New_Material.png

  2. 将材质命名为 Material_Master

    Materails_Instances_Named_Material.png

  3. 既然材质现已命名,那么在 内容浏览器(Content Browser) 中找到它,然后双击打开它。打开后,在面板中搜索以下材质表达式节点,并添加到材质图表中。

    • 常量3向量(Constant 3 Vector)

    • 常量节点(Constant Node)

    • 标量参数(Scalar Parameter)

  4. 放置好材质表达式后,需要将它们连到主材质的各个引脚上。在这个示例中,我们将用到以下引脚。

    • 底色(Base Color)

    • 金属感(Metallic)

    • 粗糙度(Roughness)

  5. 连上所有节点后,需要接着将一些材质节点转换为参数节点(Parameter Node),以便它们可以在材质实例中使用。为此,右键单击要转换的材质节点,然后在快捷菜单钟选择 转换为参数(Convert to Parameter)

  6. 我们已经将节点转换为参数节点,现在对它们进行标记,这样当我们在材质实例中使用它们时,就可以知道每个节点将执行什么功能。若要为参数节点指定名称,请使用 鼠标左键 在材质图表中选择该参数节点,然后在 参数名称(Parameter Name) 分段下键入要用作 参数名称(Parameter Name) 的名称。此例中,我们将使用以下名称。

    • 底色(Base Color)

    • 金属感(Metallic)

    • 粗糙度(Roughness)

    确保为节点选择的名称与节点的实际功能非常接近。通过这种方式,你不必在材质和材质实例之间来回切换,就可以看到节点的实际工作情况。

  7. 创建节点后,请确保通过按 应用(Apply) 按钮编译材质。如果编译正确, 应用(Apply) 按钮应该呈现灰色,如下所示。

    Materails_Instances_Complied.png

  8. 既然材质已经编译完毕,是时候用它创建一个材质实例了。在 内容浏览器(Content Browser) 中,右键单击该材质,然后选择 创建材质实例(Create Material Instance) 选项。

    材质实例的名称派生自它所继承的材质。你可以在创建时重新命名材质实例,或者选择该材质并按下键盘上的 F2 ,然后输入你想要的名称。

  9. 内容浏览器(Content Browser) 中,双击新建的材质实例打开它。你应当会看到如下所示的内容。

    Materails_Instances_Instance_Editor.png

  10. 一旦打开了 材质实例编辑器(Material Instance Editor) ,你就可以开始调整参数了。若要调整参数,你需要单击参数名称左侧的复选框来启用它。一旦启用了某个参数后,它的名称将不再呈现灰色,并且复选标记将被放置在名称左侧的框中。

  11. 由于参数现已启用,因此你可以调整其中任何一个参数并实时查看结果,而无需重新编译材质。

在材质内部为参数设置的名称反映了你在材质实例内部看到的名称。这就是为何选择与参数实际作用相对应的名称非常重要的原因。 Materails_Instances_Names_Relation.png

材质实例操作

当你需要许多外观不同但仍然拥有相似控制选项的材质时,或者需要在游戏中以特定方式控制某种材质时,材质实例系统的重要性就显现出来了。 在下面的示例中,我们将根据在前面步骤中创建的父材质,创建三个不同的实例化材质。 我们将演示父材质的改动将如何影响子材质。

  1. 首先,我们将使用上文中创建的父材质 Material_Master ,创建更多的材质实例。 在 内容浏览器(Content Browser) 中,鼠标右键单击 Material_Master ,然后在菜单中选择 创建新的材质实例(Create New Material Instance) 。 重复此操作,直到你总共有三个材质实例。

    Materails_Instances_Create_3_New_MI.png

  2. 打开这三个额外创建的材质实例,开始调整它们的参数。 如要打开某个材质实例,请在 内容浏览器(Content Browser) 中双击它。 你现在可以设置 颜色(Color) 粗糙度(Roughness) 金属感(Metallic) 值来满足你的需要。 此例中,我们将使用 红色(Red) 绿色(Green) 蓝色(Blue) 作为颜色。 你可以在下面这张图中看到本示例中用到的所有参数。

    点击查看大图。

  3. 我们现在可以把它们应用于世界场景中的对象。 此例中,我们将把材质实例应用于某些基本网格体,这些网格体位于 初学者内容包(Starter Content) 形状(Shapes) 文件夹中。

    点击查看大图。

  4. 现在,为了查看材质实例系统的全部功能,请打开 Master_Material 。 选中其中一个 标量参数节点(Scalar Parameter Nodes) ,按下键盘上的 CRTL+ W 键复制该节点。 复制该节点后,将其重命名为 高光(Specular) ,并将默认值设置为 0.5 。 将标量参数节点的输出连接到 高光(Specular) 输入引脚,然后编译材质。

    点击查看大图。

  5. 一旦材质编译完成,你可以关闭 Master_Material ,然后打开 红色材质实例(Red Material Instance) 。 打开后注意看,选项中现在多了一个 高光(Specular) 输入。 检查 蓝色(Blue) 绿色(Green) 材质实例。它们现在都多了一个 高光(Specular) 输入。 这就是材质实例的作用所在:你对父材质所做的任何改动,最终都会反映在它们的子材质中。

    点击查看大图。

更改材质实例的父材质

你可以快速更改某个材质实例的父材质,只需在材质实例编辑器中更改父材质就行了。 打开材质实例,然后在 细节(Details) 面板的 常规(General) 分段下,将 父材质(Parent) 分类中的材质改为你希望用的新材质。 根据新材质所包含的选项,材质实例编辑器会相应更改,以反映新的父材质的选项。 下面这张图片展示了使用 父材质(Parent) 属性所创建的材质实例。

Material_Instancing_Change_Parent.png

这里是同一材质实例,但这次更换了父材质。 注意纹理输入变少了,并且新增了一些数值输入。

Material_Instancing_Change_Parent_Results.png

结论

材质实例化(Material Instancing)是一项强大的功能,可以用于项目的方方面面。 例如,它可以用于为武器和道具增添一些变化,或者帮助美术师更好地挖掘现有材质的潜能。 材质实例有助于简化并统一材质在项目中的创建和使用方式。

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消