材质参数集合

本页面的内容:

images/GlobalParams1.jpg

名称为 MaterialParameterCollection 的资源存储了可以在任何材质中被引用的任意标量参数和向量参数 。 这是一个强有力的工具,美工可以用来得到全局数据并一次输入到多种材质中。 同时可被用来驱动每个关卡的特效,例如雪量,销毁量,湿度等,否则需要在您的关卡中对许多不同的Material Instances(材质实例)设置单独的参数值。

GlobalParams1.png GlobalParams2.png

在以上实例中,全局变量被用来控制场景的以下内容:

创建 & 编辑材质参数集合

MaterialParameterCollections通过 新建 菜单或 右键点击 关联菜单的内容浏览器 进行创建,并且可以像任意其它资源一样进行编辑和保存。

  1. 如需创建材质参数集合,您必须首先在 内容浏览器右键点击 来显示创建菜单。 在该菜单中,选择 材质和贴图 部分并选择 材质参数集合 。 选择后,它会在 内容浏览器 中创建新建材质参数集。

    MPC_Create_New_Collection.png

  2. 材质参数集将会像任意其它Actor一样被添加和保存到 内容浏览器 中。

    MPC_Saved_In_CB.png

  3. 如需编辑材质参数集合,您必须首先使用 鼠标左键双击 它,以打开其属性窗口。

    properties.png

  4. 点击标量参数或向量参数旁的Plus Button来创建您想要在材质中访问的新参数。 不要忘记对您输入的任意标量参数或向量参数输入名称和默认值。

    properties_add.png

使用材质中的材质参数集

您可以通过几步来添加材质集参数节点到任意材质。 在以下部分中,我们会查看如何添加材质集节点到非常简单的材质中,这样会在玩游戏时,在按下鼠标左键的时候对材质去饱和。

  1. 首先我们需要创建材质集参数节点并使用数据来填充它。 我们可以在 内容浏览器右键点击 ,然后选择 材质和贴图 部分,并随后选择 材质参数集 。 这样就可以在 内容浏览器 中创建材质参数集。 创建完后,您需要对其命名。 在这个示例中,我们会把 MPC_Global_Material_Prams 作为名称。 在完成时,在您的 Content Browser(内容浏览器) 中应该有一些看起来如下图的内容。

    MPC_Create_New_MPC.png

  2. 在材质集参数创建后,通过 鼠标左键双击 来打开它。 在材质集参数打开后,添加一个标量参数到其中,并将其命名为 Global_Desaturation 。 将默认的Global_Desaturation值保留为0.0。 完成后,您的材质集看起来如下图所示。 MPC_Setup_MPC.png

  3. 现在我们创建了材质集参数,我们需要创建简单的材质来共同使用。 对这个示例,我们将会创建以下材质。

    MPC_Simple_Material.png

    对这个材质,我们需要两个 标量参数 材质表达式节点以及一个 向量参数 材质表达式节点。 该节点应被命名为 Base_Color(底色)Metallic(金属色) 以及 Roughness(粗糙度) ,而且每个节点都应被关联到与其相关的输入。

  4. 在节点被关联到主材质节点后,现在可以添加Desaturation Material Expression(去饱和度材质表达式)节点和Material Expression Parameter(材质表达式参数)节点到材质中了。 如需添加Desaturation Material Expression(去饱和度材质表达式)节点,您可以在 Palette(调色板) 中搜索Desaturation(去饱和度),然后从Palette(调色板)中将其拖曳到Material Graph(材质图表)中。 在放置完成后,找到 内容浏览器 中的材质参数集并随后将其从 内容浏览器 拖曳到材质图表中。 当完成后,您的材质应该如下图所示。

    MPC_Added_New_Nodes.png

  5. 现在所有的节点都添加完成了,我们可以把所有内容连接到一起了。 首先我们要连接的是把底色输出连接到Desaturation(去饱和度)节点的首个输入。 接下来,我们要连接材质集参数的输出到去饱和度节点的 Fraction 输入。 完成后,把Desaturation(去饱和度)节点的输出连接到主材质节点的底色输入。 最后,确认按下 应用 按钮来编译您的材质。 完成后,您的材质图表看起来如下图所示。

    MPC_Completed_Material.png

  6. 如需查看实际的材质集参数,我们必须首先应用使用材质集参数的材质到世界中的一些对象上。 在应用材质后,通过在 内容浏览器双击 鼠标左键 来打开材质集的参数。 打开后,我们可以随后把Global_Desaturation的 默认值 从0变更到1,然后查看按如下示例来从蓝到白应用的材质的对象。

通过蓝图更新材质参数集

设置材质集参数的另一个方法是通过蓝图。 用这个方法来设置材质集参数超劲,因为这表示,您可以随时在游戏中调整材质集参数。

  1. 在开始之前,我们需要先进行一些操作。 首先是把一些材质实例 拉到材质外。 在这个示例中,我们需要基于上述创建的材质来创建3个材质实例。 在创建了材质实例后,确认并调整颜色,这样您可以分辨它们。 对于这个示例,我们把红色、绿色和蓝色选择为材质实例的颜色。 在完成后,您的 Content Browser (内容浏览器)看起来应该和下图一样。

    MPC_Create_New_Material_Instances.png

  2. 现在材质实例已经创建完成,可以通过 鼠标左键 点击 内容浏览器 中的材质实例来应用它们到场景中的不同对象,并随后将其拖曳到场景中的对象中。 当您悬停在想要使用材质实例的对象上,您可以松开 鼠标左键 来应用该材质实例到对象上。 完成后您应该可以获得类似于下图的内容:

    MPC_Applied_Materials.png

  3. 材质实例现在应用到了关卡中的对象,现在可以打开关卡蓝图了。 如需打开关卡蓝图,请点击主工具条的 蓝图 按钮并随后从下拉菜单中选择 关卡蓝图

    MPC_Open_Level_Blueprint.png

  4. 在打开关卡蓝图后,现在可以开始放置一些节点了。 对这个示例,我们需要以下节点和变量。

    • 按下鼠标左键按钮

    • 时间轴

    • 设置标量参数值

    • 命名的浮点变量: Des

    当完成后,您的蓝图图表应该如下图所示。 MPC_Added_Nodes_To_BP.png

  5. 在把合适的节点连接到蓝图图表后,现在可以进行设置了。 首先我们要设置 Set Scalar Parameter Value(设置标量参数值) 。 我们首先要定义准备使用的材质参数集。 如需完成此操作,请使用您的 鼠标左键 来点击 Collection(集合) 输入,然后选择您想要使用的材质参数集。 接下来,选择您想要设置的 参数名称 ,本例中为 Global_Desaturation 。 在完成后,您的 Set Scalar Parameter Value(设置标量参数值) 节点看起来应如下图所示。

    MPC_SSPV_Node.png

  6. 接下来我们需要设置时间轴 ,这样在按下 鼠标左键 时,颜色会随着时间而变更,在松开鼠标左键时,颜色会回复到从前。 如需设置时间轴,首先使用 鼠标左键双击 时间轴来打开它。 完成后,您会看到如下图的内容。 MPC_Timeline_Editor.png

  7. 在时间轴打开后,我们需要填入一些数据,这样它会在激活后进行一些操作。 首先我们要通过点击 Add Float Track(添加浮点轨迹) 图标来添加 Float Track(浮点轨迹) 到时间轴。 然后我们通过 Right Mouse Button(鼠标右键) 并在亮灰色区域随意点击,然后从菜单中选择 Add Key(添加关键帧) 来添加两条关键帧轨迹。 我们要添加两条关键帧,一条在时间为0处,值为0,一条在时间为1处,值为1。一旦添加了关键点,不要忘记命名轨迹,这样可以更方便地了解其作用。 在这个示例中,我们使用 Des_Amount 作为名称。 完成后您应该可以获得类似于下图的内容。

  8. Timeline(时间轴) 现在进行了正确设置,您可以关闭时间轴菜单并返回 Level Blueprint(关卡蓝图)Event Graph(事件图表) 。 当您具有可用的关卡蓝图时,您可以开始把所有的节点连接到一起。 当完成后,您的蓝图应该如下图所示。 MPC_Connecting_Nodes.png

  9. 现在所有内容都连接起来了,您可以通过按下 Compile(编译) 按钮并随后关闭蓝图编辑器来 Compile(编译) 您的关卡蓝图。 在蓝图编辑器被关闭后,现在可以测试游戏中的变更了。 如需完成此操作,您只需要按下位于主工具条的 Play(运行) 按钮。 在您按下play后,会出现一个新窗口,其中有运行的关卡。 如需看到实际的材质集参数,请按下 鼠标左键 ,场景中材质的颜色会从初始颜色转换为灰色。 松开 鼠标左键 ,材质会返回初始颜色。

限制及性能特征

同一材质可以引用最多2种不同的MaterialParameterCollections(材质参数集合)。 一种主要用来作为游戏范围内的值,另一种作为关卡特定参数。 一个集合最多可以有1024个标量参数和1024个向量参数。

在集合中修改参数的数字将会导致所有引用此集合的材质进行重新编译。 如果您需要添加多个参数,则可以在空白的地图中添加许多参数,这样更快一些。

如果您重命名一个参数,任何引用该参数的材质会继续按预期运作。 但是,任何引用该参数的蓝图会被销毁。 您必须重新分配集合中的蓝图函数的ParameterName(参数名称)来修复这个问题。

在MaterialParameterCollection(材质参数集合)中更新值是非常有效的,比起在诸多材质实例中设置许多不同的参数要高效多了。