材质实例的创建和使用

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

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

Tags
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback