Choose your operating system:
Windows
macOS
Linux
在虚幻引擎4.26中,所有项目都会默认启用材质图层功能。
虚幻引擎(UE) 中的材质系统是一套功能强大、灵活多变的解决方案,适合在项目中开发和构建材质。该系统允许你将不同纹理分层并混合在一起,为关卡中的对象创建独特的材质。材质图层 类似于 材质函数 的 分层材质 工作流,你可以在材质图表中使用 材质图层 资产类型来组合并混合纹理。此可选工作流利用 材质实例化 来简化材质分层和混合过程。
主要优点
使用材质图层的好处之一是能够创建非常复杂的材质,从未来可编辑的角度看也更易于管理。虽然可以使用分层材质工作流或在传统材质(无图层和材质函数)中创建相同类型的材质,但材质图层工作流能提供更好的掌控性和灵活性,还可以减少创建材质的复杂程度。
举例而言,让我们使用分层材质图表的分层材质(左下)与使用材质图层的分层材质(右下)进行俯视对比。你会很快发现,使用材质图层后,基础材质中所需的工作量减少了,工作和功能都能交给资产本身处理。
|
|
---|---|
使用材质函数工作流的基础材质 |
使用材质图层工作流的基础材质 |
考虑到材质函数在创建材质实例时存在一定局限性,除非事先已在基类材质中复制,否则在材质函数中创建的参数都无法在实例化材质中被引用。相反,在材质图层资产中设置的参数都可自行实例化,基础材质只需引用基础材质图层来获得其将影响的输入。
打开材质图层或 材质图层混合资产(Material Layer Blend Asset) 时,节点图表与其他材质编辑器的节点图表类似。你可以在此处设置并编写该材质的所有逻辑,包括属性的参数化。这里允许你控制纹理输入、向量、常量值等内容。在材质图层资产中完成逻辑的大部分设置意味着对材质做出或大或小的更改时能减少管理的复杂性。这也意味着可以在多个材质之间使用相似的材质图层而无需重复工作,这与材质函数的功能类似,但在应用和使用上更具灵活性。
此处设置的所有参数将在 图层 中引用,而这些图层已添加到使用材质图层的材质的材质实例中的堆栈。这意味着创建材质实例时无需在基础材质中复制此类参数。打开材质实例时,图层参数(Layer Parameters) 选项卡将保留已添加到此实例的所有材质图层。
材质图层混合资产用于控制此材质实例中引用图层的遮罩。每个图层都可有自己的材质图层混合,堆栈中的所有图层并不仅限于单一混合资产。若未为图层指定混合资产,最上面无混合资产的图层将始终覆盖其下的所有图层。与材质图层资产一样,材质图层混合也有自己的节点图表,可在其中为默认值和参数化设置自己的混合和遮罩逻辑,也可在多个材质之间实例化和重复使用。
此工作流程允许你将材质的部分逻辑简化成单个资产,让你将它重复用于你创建的其他材质中,从而保证灵活性。
启用材质图层
从虚幻引擎4.26开始,材质图层功能将默认启用。你可以参照下列步骤,在4.26之前的老版本中启用材质图层。
打开项目设置(Project Settings)窗口,前往 渲染(Rendering)> 材质(Materials) 类目,并启用 支持材质图层(Support Material Layers)。
重启编辑器使该功能生效。
使用
下列步骤是在项目中为材质创建并使用材质图层的高级方法:
创建材质图层资产。
创建材质图层混合资产。
创建传统材质资产。
添加 Material Attribute Layers 表达式来计算活跃材质图层堆栈并输出合并属性。
创建基础材质的材质实例。
利用 图层参数(Layer Parameters) 选项卡添加、编辑和管理材质图层。
材质图层资产类型
材质图层由两种资产组成:
材质图层 资产用于创建可被材质中的其他图层遮罩或可与这些材质混合的图层。
材质图层混合 资产用于创建将两个图层混合在一起的遮罩。
可在内容浏览器中点击 新增(Add New)/导入(Import) 按钮,或使用右键点击快捷菜单并从 材质和纹理(Materials & Textures) 类目选择资产,在项目中添加这两种资产。
材质图层资产
与材质函数一样,材质图层资产也拥有自身的图表,用户可在图表中设置和预览材质的节点图表逻辑。对于要创建的每种材质,可利用材质属性表达式处理逻辑并输出结果。举例而言,若要创建铬或自发光材质,可像在普通基础材质图表中一样,在此图表中设置纹理和参数。
材质图层混合资产
与材质函数一样,材质图层混合资产也有自己的图表,可在图表中设置和预览材质的节点图表逻辑。对于要创建的每种混合或图层,图表使用带 BlendMaterialAttributes 表达式的 输入底层(Input Bottom Layer) 和 输入顶层(Input Top Layer) 设置。用户可为这些输入应用其他逻辑,也可简单使用 Alpha 输入来为材质实例图层堆栈中的图层驱动自己的遮罩和混合。
基础材质图表
在基础(或父)材质中将依赖材质图层资产和材质图层混合资产进行处理,而并非在图表放置所有节点逻辑。这减少了基础材质中所需的管理量。
使用材质图层时,必须选择主材质节点并在 细节(Details) 面板中进行设置,确保启用 使用材质属性(Use Material Attributes)。
材质属性图层表达式用于引用能与特定材质图层关联的众多材质属性。它们然后回用于你的基类材质的输出。举例而言,在使用材质属性图层表达式时,你可以让一个铬材质获取并设置材质属性。
材质图层表达式
使用 Material Attributes Layer 表达式来计算活跃的材质图层堆栈。选择Material Attribute Layers表达式时,可用 细节(Details) 面板设置默认图层,以便与创建的材质实例(例如背景材质图层或其他图层)一同使用。
创建材质实例或将此材质直接应用于项目中的对象时将使用默认材质图层。
若设置的材质更复杂,Get Material Attributes 和 Set Material Attributes 表达式能添加和接收要在基础材质中设置的材质属性,而非在材质图层中专门设置。
材质、图层和混合实例化
正如材质可实例化、根据指定参数创建独特参数,材质图层和材质图层混合也可实例化。这样便能够访问图表中已参数化的任何节点。
可在内容浏览器中选择材质图层或或材质图层混合来创建其实例。在快捷菜单中分别选择 创建图层实例(Create Layer Instance) 或 创建混合实例(Create Blend Instance)。
在基础材质图层图表中将节点参数化时,创建的子实例能够访问这些参数,这些子实例类似于正常创建的材质实例。图层和混合将列于材质实例的 图层参数(Layer Parameters) 选项卡中,此处已设置给定图层的所有参数。
每个图层的参数皆是该图层所特有。因此,若堆栈中有多个图层使用相同的材质图层,在堆栈中的一个图层中设置一个覆盖参数值不会覆盖同一图层堆栈中同一图层的参数。
传递参数
将参数从材质图层和材质图层混合传递到材质和材质实例中有多种方式。多数建议适用于图层和混合。
在材质图层中创建参数的操作与在现有材质和材质函数中的操作相似。
在材质图层和材质图层混合图表中添加的参数是该图层或混合所特有的。举例而言,下列材质图层使用了向量颜色、粗糙度贴图的纹理参数,以及金属度和颜色的两个标量参数。设置方式与标准材质或材质函数中的方式相同。
使用材质图层的标准材质被实例化,且该图层已被添加到该材质实例的 图层参数(Layer Parameters) 选项卡时,所有参数都可以编辑。
对基础材质中的材质属性图层(Material Attributes Layers)堆栈表达式使用输入引脚。
在标准材质图表中,这将把另一个材质属性视为使用 Set Material Attributes 表达式的输入,该输入将被输送到 Material Attribute Layers 表达式堆栈中添加的每个图层。
在此示例中,我们按以下方式传递基础法线贴图纹理参数:
之后在材质图层资产中可使用 Set Material Attributes 表达式设置输入和混合。此外,每个图层都可使用或忽略基础堆栈材质属性输入
图层堆栈
在材质实例中使用的材质图层可利用 图层参数(Layer Parameters) 选项卡切换其可视性、可指定新的材质图层混合资产,还可在堆栈中拖放图层实现自上而下的依赖性。
在"图层参数(Layer Parameters)"选项卡中,可覆盖和编辑为材质图层或材质图层混合公开的参数。这些参数是该图层所特有的。因此即使多次将相同的材质图层添加到该图层堆栈中,也会在面板中为该图层设置独特的参数。
另外,用户可以切换堆栈中每个图层的可视性,而不会删除或丢失已创建的工作。点击 眼睛 图标来切换堆栈中图层的可视性。
切换图层的可视性,将禁用该图层并根据堆栈中其他图层使用的图层混合和参数设置来显示堆栈中的下个图层。下例禁用了一个材质图层,该图层有自己的专属属性、胸甲两侧有混合遮罩。禁用后,下个图层将显示胸甲其他部分所使用的铬材质。
最后,堆栈中的每个图层均可拖放,顶层图层优先于下方的图层。注意:在作为默认材质的基础父材质中,若没有其他材质图层,则不能移动和设置 背景 图层。