Choose your operating system:
Windows
macOS
Linux
材质参数集合(MaterialParameterCollection) 是一个用于存储任意 标量参数和矢量参数集合的资源。 这些参数可以在任意材质中引用。这是一个强大的工具,美术借助这个工具可以一次性 将全局数据导入到多个材质。它还有助于设置每个关卡的效果,如雪量、破坏程度、湿度等。 如果不使用此工具,这些按关卡效果需要对关卡中的许多不同材质实例设置单独的参数值。
在上述示例中,使用了全局参数来控制场景的以下方面:
花朵随着风速和风力而变形的状态受到了控制。
玩家位置被跟踪并提供给植物叶子。该位置信息用于在玩家走到花和草附近时移动花草。
太阳角度和颜色也被跟踪,并用于正确地给水波着色,并将该效果限制为仅在光线直接射入水波时显示(玩家看向太阳时)。
水在一天的着色效果和总体漫反射光线颜色也受到控制。
创建和编辑材质参数集合
要创建材质参数集合,可以使用内容浏览器中的 新建(New) 菜单, 或 右键单击 快捷菜单,并可以向任何其他资源一样编辑和保存。
要创建材质参数集合,首先必须 右键单击 内容浏览器 以显示创建菜单。从该菜单,选择 材质和纹理(Materials & Textures) 部分, 然后选择 材质参数集合(Material Parameter Collection)。选择后,将在 内容浏览器 中创建新的材质参数集合。
该材质参数集合将会添加并保存到 内容浏览器,就像任何其他资源一样。
要编辑材质参数集合,必须先用 鼠标左键 双击 它,以打开它的属性窗口。
单击"标量参数(Scalar Parameters)"或"矢量参数(Vector Parameters)"旁边的 ,以创建想要在材质中访问的新参数。
对于您输入的任何标量或矢量参数,不要忘记为它们输入名称和默认值。
在材质中使用材质参数集合
向任何材质添加材质集合参数节点都是几步即可完成的过程。 在下面一节中,我们将介绍如何向非常简单的材质添加材质集合节点,游戏运行后,按下鼠标左键时,它将使材质呈现去饱和效果。
首先需要创建材质集合参数节点并填充数据。 为此,在 内容浏览器 中 单击右键,然后选择 材质和纹理(Materials & Textures) 部分,再选择 材质参数集合(Material Parameter Collection)。 这样将在 内容浏览器 中创建材质参数集合。创建后,需要为它命名。在本示例中,我们将使用 MPC_Global_Material_Prams 作为名称。 完成后,内容浏览器 中应该会显示类似下图的内容。
材质集合参数现已创建完毕,请通过 鼠标左键 双击 将其打开。 打开材质集合参数后,添加一个标量参数并命名为 Global_Desaturation。 保留Global_Desaturation的默认值0.0。完成之后,您的材质集合参数应该类似于下图。
现在,材质集合参数已经创建完毕,我们需要创建一个要与它一起使用的简单材质。 在本示例中,我们将创建以下材质。
对于该材质,我们需要两个 标量参数 材质表达式节点和一个 矢量参数 材质表达式节点。 这些节点应该命名为 Base_Color、Metallic 和 Roughness,各个节点应当与对应的输入连接起来。
节点与主材质节点已经连接完毕,现在需要向材质添加去饱和度材质表达式节点和材质表达式参数节点。 要添加去饱和度材质表达式节点,在 选用板(Palette) 中搜索Desaturation,然后将它从选用板拖到材质图表。 放置到位后,在 内容浏览器 中找到材质参数集合,并将它从 内容浏览器 拖到材质图表。 完成后,您的材质应该如下所示。
所有节点现已添加完成,接下来需要将它们连接起来。 首先,需要将基础色(Base Color)输出连接到去饱和度(Desaturation)节点的第一个输入。 接下来,需要将材质集合参数的输出连接到去饱和度(Desaturation)节点的 小数(Fraction) 输入。 完成后,将去饱和度(Desaturation)节点的输出连接到主材质节点的基础色(Base Color)输入。 最后,确保按 应用(Apply) 按钮来编译材质。 完成之后,您的材质图应该类似于下图。
要查材质集合参数的运行情况,必须先将使用该材质集合参数的材质应用于场景中的某些对象。 材质应用后,在 内容浏览器 中,用 鼠标左键 双击 材质集合参数将其打开。 打开后,可以将Global_Desaturation的 默认值(Default Value) 从0更改为1,并观察应用了该材质的对象的颜色变化,在本例中,从蓝色变为白色,如下示例所示。
通过蓝图更新材质参数集合
另一种操纵材质集合参数的方法是使用蓝图。 这是一种非常强大的操纵材质集合参数的方法,因为您可以在游戏运行期间,随时根据需要调整材质集合参数。
在开始之前,需要先完成几个操作。 首先,需要创建材质的一些材质实例。 在本示例中,需要根据上文创建的材质,创建三个材质实例。 在材质实例创建完成后,务必调节颜色,以便于您区分。 在本例中,选择了红色、绿色和蓝色作为材质实例的颜色。 完成后,您的 内容浏览器 应该如下所示。
现在,材质实例已经创建完毕,接下来将它们应用于场景中的不同对象,方法是在 内容浏览器 中用 鼠标左键 单击材质实例,然后将它拖到场景中的对象上。 将材质实例拖到目标对象上面后,松开 鼠标左键 以将该材质实例应用于该对象。 完成后,您应该看到类似下图的内容。
现在,材质实例已经应用于关卡中的对象,接下来打开关卡蓝图。 要打开关卡蓝图,单击主工具栏上的 蓝图(Blueprints) 图标,然后从下拉菜单中选择 关卡蓝图(Level Blueprint)。
关卡蓝图打开后,开始放置一些节点。在本示例中,我们需要以下节点和变量。
按下鼠标左键
时间轴
设置标量参数值
浮点变量:Des
完成之后,您的蓝图图表应该类似于下图。
将正确节点添加到蓝图图表后,接下来需要设置它们。 首先要设置的是 设置标量参数值(Set Scalar Parameter Value)。 为此,需要先定义要使用的材质参数集合。 要进行定义,使用 鼠标左键 单击 集合(Collection) 输入,然后选择想要使用的材质参数集合。 接下来,选择想要操控的 参数名称(Parameter Name),在本例中为 Global_Desaturation。完成之后,您的**设置标量参数值(Set Scalar Parameter Value)**应该类似于下图。
接下来,我们需要设置时间轴,以便在按下 鼠标左键 时,颜色会随着时间而变化,然后松开鼠标左键时恢复原状。 要设置时间轴,首先使用 鼠标左键 并 双击 时间轴以将其打开。 执行此操作后,您应该会看到类似于下图的内容。
现在,时间轴已经打开,需要在其中填充一些数据,以使其在激活时执行一些操作。 首先需要单击 添加浮点型轨迹(Add Float Track) 图标,向时间轴添加 浮点型轨迹(Float Track)。 然后需要使用 鼠标右键 单击右侧灰色区域中的任意位置,然后从菜单中选择 添加键(Add Key) 来添加两个键轨迹。 我们需要添加两个键,一个在时间0处,值为0,一个在时间1处,值为1。 添加两个键点后,不要忘记为轨迹命名,以便于区分轨迹功能。在本示例中,我们将使用 Des_Amount 作为其名称。 完成后,您应该看到类似下图的内容。
现在已正确设置 时间轴,您可以选择"时间轴(Timeline)"菜单,返回到 关卡蓝图 的 事件图表。 关卡蓝图可用后,您可以开始将所有节点连接起来。 完成之后,您的蓝图应该类似于下图。
现在已经全部连接妥当,确保按 编译(Compile) 按钮来 编译 关卡蓝图,然后关闭蓝图编辑器。 蓝图编辑器关闭后,接下来测试以查看游戏中的变化。为此,只需按主工具栏上的 播放(Play) 图标即可。 按播放后,会显示一个新窗口,其中正在运行关卡。 要查看材质集合参数的运行效果,按住 鼠标左键, 场景中的材质颜色会从初始色变为灰色。 松开 鼠标左键,材质会恢复为原始色。
限制和性能特征
材质最多可以引用两个不同的材质参数集合。一个通常用于表示游戏范围的值, 另一个可以用于表示特定于关卡的参数。一个集合最多可以包含1024个标量参数和1024个矢量 参数。
修改集合中的参数数量会导致引用该集合的所有材质重新编译。 如果需要添加大量参数,提前在空贴图中添加大量参数会更加快速。
如果重命名参数,引用该参数的任何材质都会继续按预期工作。但是,引用该参数的任何蓝图 现已破坏。您必须重新分配作用于该集合的蓝图函数的参数名称 来解决这个问题。
更新材质参数集合中的值比设置各个材质实例 上的许多不同参数更加高效。