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) 节点。然后可以将这些节点从控制板中拖入材质图表。
转换节点
在材质图表中,你可以右键单击某个节点,然后选择 转换为参数(Convert To Parameter):
并非每个材质节点都适用于上述操作。如果你在节点上 右键单击 时看到 转换为参数(Convert To Parameter) 选项,则表示该节点可以转换为参数节点。
创建材质实例
我们将使用上述方法创建一个材质实例。
我们首先要新建一个材质。右键点击 内容浏览器(Content Browser),然后选择 创建基本资源(Create Basic Assets) > 材质(Material)。
将材质命名为 Material_Master
既然材质现已命名,那么在 内容浏览器(Content Browser) 中找到它,然后双击打开它。打开后,在面板中搜索以下材质表达式节点,并添加到材质图表中。
常量3向量(Constant 3 Vector)
常量节点(Constant Node)
标量参数(Scalar Parameter)
放置好材质表达式后,需要将它们连到主材质的各个引脚上。在这个示例中,我们将用到以下引脚。
底色(Base Color)
金属感(Metallic)
粗糙度(Roughness)
连上所有节点后,需要接着将一些材质节点转换为参数节点(Parameter Node),以便它们可以在材质实例中使用。为此,右键单击要转换的材质节点,然后在快捷菜单钟选择 转换为参数(Convert to Parameter)。
我们已经将节点转换为参数节点,现在对它们进行标记,这样当我们在材质实例中使用它们时,就可以知道每个节点将执行什么功能。若要为参数节点指定名称,请使用 鼠标左键 在材质图表中选择该参数节点,然后在 参数名称(Parameter Name) 分段下键入要用作 参数名称(Parameter Name) 的名称。此例中,我们将使用以下名称。
底色(Base Color)
金属感(Metallic)
粗糙度(Roughness)
确保为节点选择的名称与节点的实际功能非常接近。通过这种方式,你不必在材质和材质实例之间来回切换,就可以看到节点的实际工作情况。
创建节点后,请确保通过按 应用(Apply) 按钮编译材质。如果编译正确,应用(Apply) 按钮应该呈现灰色,如下所示。
既然材质已经编译完毕,是时候用它创建一个材质实例了。在 内容浏览器(Content Browser) 中,右键单击该材质,然后选择 创建材质实例(Create Material Instance) 选项。
材质实例的名称派生自它所继承的材质。你可以在创建时重新命名材质实例,或者选择该材质并按下键盘上的 F2,然后输入你想要的名称。
在 内容浏览器(Content Browser) 中,双击新建的材质实例打开它。你应当会看到如下所示的内容。
一旦打开了 材质实例编辑器(Material Instance Editor),你就可以开始调整参数了。若要调整参数,你需要单击参数名称左侧的复选框来启用它。一旦启用了某个参数后,它的名称将不再呈现灰色,并且复选标记将被放置在名称左侧的框中。
由于参数现已启用,因此你可以调整其中任何一个参数并实时查看结果,而无需重新编译材质。
在材质内部为参数设置的名称反映了你在材质实例内部看到的名称。这就是为何选择与参数实际作用相对应的名称非常重要的原因。
材质实例操作
当你需要许多外观不同但仍然拥有相似控制选项的材质时,或者需要在游戏中以特定方式控制某种材质时,材质实例系统的重要性就显现出来了。 在下面的示例中,我们将根据在前面步骤中创建的父材质,创建三个不同的实例化材质。 我们将演示父材质的改动将如何影响子材质。
首先,我们将使用上文中创建的父材质 Material_Master,创建更多的材质实例。 在 内容浏览器(Content Browser) 中,鼠标右键单击 Material_Master,然后在菜单中选择 创建新的材质实例(Create New Material Instance)。 重复此操作,直到你总共有三个材质实例。
打开这三个额外创建的材质实例,开始调整它们的参数。 如要打开某个材质实例,请在 内容浏览器(Content Browser) 中双击它。 你现在可以设置 颜色(Color)、粗糙度(Roughness) 和 金属感(Metallic) 值来满足你的需要。 此例中,我们将使用 红色(Red)、绿色(Green) 和 蓝色(Blue) 作为颜色。 你可以在下面这张图中看到本示例中用到的所有参数。
我们现在可以把它们应用于世界场景中的对象。 此例中,我们将把材质实例应用于某些基本网格体,这些网格体位于 初学者内容包(Starter Content) 的 形状(Shapes) 文件夹中。
现在,为了查看材质实例系统的全部功能,请打开 Master_Material。 选中其中一个 标量参数节点(Scalar Parameter Nodes),按下键盘上的 CRTL+ W 键复制该节点。 复制该节点后,将其重命名为 高光(Specular),并将默认值设置为 0.5。 将标量参数节点的输出连接到 高光(Specular) 输入引脚,然后编译材质。
一旦材质编译完成,你可以关闭 Master_Material,然后打开 红色材质实例(Red Material Instance)。 打开后注意看,选项中现在多了一个 高光(Specular) 输入。 检查 蓝色(Blue) 和 绿色(Green) 材质实例。它们现在都多了一个 高光(Specular) 输入。 这就是材质实例的作用所在:你对父材质所做的任何改动,最终都会反映在它们的子材质中。
更改材质实例的父材质
你可以快速更改某个材质实例的父材质,只需在材质实例编辑器中更改父材质就行了。 打开材质实例,然后在 细节(Details) 面板的 常规(General) 分段下,将 父材质(Parent) 分类中的材质改为你希望用的新材质。 根据新材质所包含的选项,材质实例编辑器会相应更改,以反映新的父材质的选项。 下面这张图片展示了使用 父材质(Parent) 属性所创建的材质实例。
这里是同一材质实例,但这次更换了父材质。 注意纹理输入变少了,并且新增了一些数值输入。
结论
材质实例化(Material Instancing)是一项强大的功能,可以用于项目的方方面面。 例如,它可以用于为武器和道具增添一些变化,或者帮助美术师更好地挖掘现有材质的潜能。 材质实例有助于简化并统一材质在项目中的创建和使用方式。