材质图层

编译利用材质实例化的复杂分层及混合材质。

Windows
MacOS
Linux

虚幻引擎中的材质系统拥有强大的功能,可项目材质的开发和编译带来许多选项。该系统有一项强大的功能,能将不同纹理分层并混合在一起,为关卡中放置的对象创建独特材质。材质图层 类似于使用材质函数分层材质 工作流,让用户能够在材质图表中使用自己的资产类型来组合并混合纹理。此可选工作流利用材质实例化 来简化材质分层和混合过程。

主要优点

使用材质图层的好处之一是能够创建非常复杂的材质,从未来可编辑的角度看也更易于管理。虽然可以使用分层材质 工作流或在传统材质(无图层和材质函数)中创建相同类型的材质,但材质图层工作流能提供更好的掌控性和灵活性,还可以减少使用此方法创建材质的复杂性。

举例而言,我们将使用分层材质图表的分层材质(左下)与使用材质图层的分层材质(右下)进行俯视对比。您会很快发现,该工作流减少了基础材质中所需的工作量,而让工作和功能交给资产本身处理。

MaterialFunctionsWorkflow.png

MaterialLayersWorkflow.png

使用材质函数工作流的基础材质

使用材质图层工作流的基础材质

材质函数 与实例化一同使用存在局限性,这意味着除非事先已在基础材质中复制,否则在材质函数中创建的参数都无法在材质实例中引用。相反,在材质图层资产中设置的参数都可自行实例化,基础材质只需引用基础材质图层来获得其将影响的输入。

打开 材质图层材质图层混合 资产时,节点图表与其他材质编辑器的节点图表类似。您将在此处设置用于材质的所有节点逻辑和参数化。逻辑的设置主要时在材质图层资产中进行,这意味着对材质做出或大或小的更改时能减少管理的复杂性。这也意味着可以在多个材质之间使用相似的材质图层而无需重复工作,这与材质函数的功能类似,但在应用和使用上更具灵活性。

点击查看大图。

此处设置的所有参数将在 图层 中引用,而这些图层已添加到使用材质图层的材质的材质实例中的堆栈。这意味着创建材质实例时无需在基础材质中复制此类参数。打开材质实例时,图层参数(Layer Parameters) 选项卡将保留已添加到此实例的所有材质图层。

点击查看大图。

材质图层混合资产用于控制此材质实例中引用图层的遮罩。每个图层都可有自己的材质图层混合,堆栈中的所有图层并不仅限于单一混合资产。若未为图层指定混合资产,最上面无混合资产的图层将始终覆盖其下的所有图层。与材质图层资产一样,材质图层混合也有自己的节点图表,可在其中为默认值和参数化设置自己的混合和遮罩逻辑,也可在多个材质之间实例化和重复使用。

点击查看大图。

用户可以利用该工作流将部分材质逻辑的复杂性包含到单个资产中,同时使其能重复用于创建的其他材质,从而保证灵活性。

启用材质图层

打开项目设置(Project Settings)窗口,前往 渲染(Rendering)> 材质(Materials) 类目,并启用 支持材质图层(Support Material Layers)

EnableMaterialLayers.png

重启编辑器使该功能生效。

使用

下列步骤是在项目中为材质创建并使用材质图层的高级方法:

  1. 创建材质图层资产。

  2. 创建材质图层混合资产。

  3. 创建传统材质资产。

  4. 添加 Material Attribute Layers 表达式来计算活跃材质图层堆栈并输出合并属性。

  5. 创建基础材质的材质实例。

  6. 利用 图层参数(Layer Parameters) 选项卡添加、编辑和管理材质图层。

材质图层资产类型

材质图层由两种资产组成:

  • 材质图层 资产用于创建可被材质中的其他图层遮罩或可与这些材质混合的图层。

  • 材质图层混合 资产用于创建将两个图层混合在一起的遮罩。

可在内容浏览器中点击 新增(Add New) 按钮或使用右键点击快捷菜单并从 材质和纹理(Materials & Textures) 类目选择资产,在项目中添加这两种资产。

AddNewMenu.png

材质图层资产

材质函数 一样,材质图层资产也拥有自身的图表,用户可在图表中设置和预览材质的节点图表逻辑。对于要创建的每种材质,可利用材质属性 表达式处理逻辑并输出结果。举例而言,若要创建铬或自发光材质,可像在普通基础材质图表中一样,在此图表中设置纹理和参数。

这是一个简单的材质图表范例,展示了在材质图层图表中设置的类似铬的材质。

点击查看大图。

材质图层混合资产

材质函数 一样,材质图层混合资产也有自己的图表,可在图表中设置和预览材质的节点图表逻辑。对于要创建的每种混合或图层,图表使用带 BlendMaterialAttributes 表达式的 输入底层(Input Bottom Layer)输入顶层(Input Top Layer) 设置。用户可为这些输入应用其他逻辑,也可简单使用 Alpha 输入来为材质实例图层堆栈中的图层驱动自己的遮罩和混合。

这是一个简单的材质图表范例,显示使用遮罩来驱动材质图层混合图表中BlendMaterialAttributes表达式的透明度。

点击查看大图。

基础材质图表

在基础(或父)材质中将依赖材质图层资产和材质图层混合资产进行处理,而并非在图表放置所有节点逻辑。这减少了基础材质中所需的管理量。

使用材质图层时,必须选择主材质节点并在 细节(Details) 面板中进行设置,确保启用 使用材质属性(Use Material Attributes)

UseMaterialAttributes.png

最简单的方式就是使用 材质图层表达式,为基础材质的输出引用该材质图层的材质属性。举例而言,此铬材质正在使用铬材质图层,然后获取并设置其中引用的材质属性,用于输出。

BaseMaterial.png

材质图层表达式

使用 Material Attributes Layer 表达式来计算活跃的材质图层堆栈。选择Material Attribute Layers表达式时,可用 细节(Details) 面板设置默认图层,以便与创建的材质实例(例如背景材质图层或其他图层)一同使用。

MaterialAttributesLayersDefaults.png

创建材质实例或将此材质直接应用于项目中的对象时将使用默认材质图层。

若设置的材质更复杂,Get Material AttributesSet Material Attributes 表达式能添加和接收要在基础材质中设置的材质属性,而非在材质图层中专门设置。

MaterialLayerExpression_AttributesNodes.png

材质、图层和混合实例化

正如材质可实例化、根据指定参数创建独特参数,材质图层和材质图层混合也可实例化。这样便能够访问图表中已参数化的任何节点。

可在内容浏览器中选择材质图层或或材质图层混合来创建其实例。在快捷菜单中分别选择 创建图层实例(Create Layer Instance)创建混合实例(Create Blend Instance)

点击查看大图。

在基础材质图层图表中将节点参数化时,创建的子实例能够访问这些参数,这些子实例类似于正常创建的材质实例 。图层和混合将列于材质实例的 图层参数(Layer Parameters) 选项卡中,此处已设置给定图层的所有参数。

MaterialLayerParameters_MI.png

每个图层的参数皆是该图层所特有。因此,若堆栈中有多个图层使用相同的材质图层,在堆栈中的一个图层中设置一个覆盖参数值不会覆盖同一图层堆栈中同一图层的参数。

传递参数

将参数从材质图层和材质图层混合传递到材质和材质实例中有多种方式。多数建议适用于图层和混合。

  1. 在材质图层中创建参数的操作与在现有材质和材质函数中的操作相似。

    在材质图层和材质图层混合图表中添加的参数是该图层或混合所特有的。举例而言,下列材质图层使用了向量颜色、粗糙度贴图的纹理参数,以及金属度和颜色的两个标量参数。设置方式与标准材质或材质函数中的方式相同。

    Param_1.png

    使用材质图层的标准材质被实例化,且该图层已被添加到该材质实例的 图层参数(Layer Parameters) 选项卡时,所有参数都可以编辑。

    Param_1a.png

  1. 对基础材质中的Material Attributes Layers堆栈表达式使用输入引脚。

    在标准材质图表中,这将把另一个材质属性视为使用 Set Material Attributes 表达式的输入,该输入将被输送到 Material Attribute Layers 表达式堆栈中添加的每个图层。

    在此例中,我们按以下方式传递基础法线贴图纹理参数:

    layer_ma_output.png

    之后在材质图层资产中可使用 Set Material Attributes 表达式设置输入和混合。此外,每个图层都可使用或忽略基础堆栈材质属性输入

    layer_ma_input.png

图层堆栈

在材质实例中使用的材质图层可利用 图层参数(Layer Parameters) 选项卡切换其可视性、可指定新的材质图层混合资产,还可在堆栈中拖放图层实现自上而下的依赖性。

MaterialInstanceEd_ML.png

在"图层参数(Layer Parameters)"选项卡中,可覆盖和编辑为材质图层或材质图层混合公开的参数。这些参数是该图层所特有的。因此即使多次将相同的材质图层添加到该图层堆栈中,也会在面板中为该图层设置独特的参数。

MaterialInstanceEd_MLParameters.png

另外,用户可以切换堆栈中每个图层的可视性,而不会删除或丢失已创建的工作。点击 眼睛 图标来切换堆栈中图层的可视性。

MaterialInstanceEd_ToggleLayerVis.png

切换图层的可视性,将禁用该图层并根据堆栈中其他图层使用的图层混合和参数设置来显示堆栈中的下个图层。下例禁用了一个材质图层,该图层有自己的专属属性、胸甲两侧有混合遮罩。禁用后,下个图层将显示胸甲其他部分所使用的铬材质。

图层可视性:已启用

图层可视性:已禁用

最后,堆栈中的每个图层均可拖放,顶层图层优先于下方的图层。注意:在作为默认材质的基础父材质中,若没有其他材质图层,则不能移动和设置 背景 图层。

附加资源

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