创建和使用材质实例

建立和使用材质实例的指南。

Windows
MacOS
Linux

在UE4中,如果必须创建、设置和调整标准材质,那么这可能是一个非常耗时的过程。 为了帮助加速和简化这个过程,虚幻引擎4提供了一种特殊类型的材质,称为 材质实例(Material Instance)。 在下面的基础知识指南中,您将学习如何在项目中设置和使用材质实例。

材质实例化

材质实例化是一种创建单个材质(称为父级材质(Parent Material))的方法,该材质随后可以用作基础来制作各种不同外观的材质。 为了实现这种灵活性,材质实例化使用了一个名为继承的概念。 继承仅仅意味着父级材质拥有的属性被赋予该父级材质的子项。 以下是一个材质继承的运作示例。

Material_Instancing_Explanation.png

编号

说明

1:

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

2:

这是在材质实例中设置应用作父级材质之材料的位置。更改这里使用的材质可以完全改变材质实例的工作方式。

3:

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

材质参数

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

将节点添加到/转换为参数节点

您可以以两种完全不同的方式向材质图表(Material Graph)中添加 参数节点(Parameter Node)

  • 从材质面板添加(Adding from Material Palette) - 如果在 材质面板(Material Palette) 中使用 参数(Parameter) 一词进行搜索,您会找到所有可用的 参数(Parameter) 节点。然后可以将这些节点从该面板中拖放到材质图表中。

    Materails_Instances_Search_For_Pram_Nodes.png

  • 转换节点(Converting a Node) - 在 材质图表(Material Graph) 中时,您可以 右键单击 某个节点,并选择 转换为参数(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) x 1

    • 常量节点(Constant Node) x 1

    • 标量参数(Scalar Parameter) x 1

  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,然后从菜单中选择 创建新的材质实例。 再执行两次此流程,直到总共有三个实例。

    Materails_Instances_Create_3_New_MI.png

  2. 由于三个额外的材质实例现已创建,因此可以打开它们并开始调整它们的 参数(Parameters)。 若要打开其中一个材质实例,请在 内容浏览器(Content Browser) 中使用 鼠标左键 双击 该实例。 一旦打开,就可以设置颜色(Color)、粗糙度(Roughness)和金属感(Metallic)值来满足您的需要。 此例中,我们使用红色(Red)、绿色(Green)和蓝色(Blue)作为颜色,并使用不同数值作为其它输入。 您可以在下面的图像中看到本例中使用的所有数值。

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

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

  5. 一旦材质编译完成,您可以关闭 主材质(Master Material),然后打开 红色材质实例(Red Material Instance)。 打开后,注意 镜面反射(Specular) 现在如何获得一个新的输入。 现在选中 蓝色(Blue)绿色(Green) 材质实例,注意它们现在如何获得 镜面反射(Specular) 的新输入。 这就是材质实例的真正作用所在,您对父级材质所做的更改始终会传播到它们的子项。

更改材质实例的父级材质

通过在材质实例编辑器中设置一个新的父级材质,您可以快速更改用作材质实例父级材质的材质。 为此,您所要做的就是打开材质实例,然后在 细节(Details) 面板的 常规(General) 部分下,将 父项(Parent) 部分中的材质更改为您选择的新材质。 如此操作之后,根据新材质的选项,材质实例编辑器将更改,以反映该新父级材质的选项。 下面是一个以上述材质作为父级材质创建的材质实例。

Material_Instancing_Change_Parent.png

这里是同一材质实例,但是这次更改了父级材质。 请注意纹理输入是如何减少的,并请注意已添加了一些新的数值输入。

Material_Instancing_Change_Parent_Results.png

结尾

材质实例化(Material Instancing)是一个强大的工具,可以在项目的所有方面中使用。 从帮助向武器和道具增加一些变化,到帮助艺术家更好地利用可用材质, 材质实例能够真正帮助简化和统一在项目中创建和使用材质的方式。

标签
Select Skin
Light
Dark

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见