复制材质实例
复制材质实例(Material Instance,简称 MI)适用于游戏不接受自定义普通材质,或 Mod 作者希望保留原有材质效果并调整参数的情况。本文介绍查找基础材质、复制参数和创建新实例的方法。
什么时候使用材质实例
有些游戏(例如 High On Life)不接受普通材质,需要寻找参数与目标网格匹配的现有 MI。其他用途包括:保留全息材质的故障或平移效果,同时替换其中的图像和文字;或者保留角色材质实例中的描边等特殊效果,同时使用自己的纹理。
查找基础材质
在 FModel 中找到并打开需要复制的 MI,其类型应为 MaterialInstanceConstant。查看并点击 Parent 材质;如果父级仍是另一个 MI,就继续沿继承链查找,直到找到类型为 Material 的基础材质。
在 UE 项目的内容浏览器中创建与 FModel 一致的文件夹结构,新建材质并将其命名为与基础材质相同的名称。原文示例使用 M_Master_Computer_Display。
复制材质参数
在新建的基础材质中,添加需要使用的参数。本例只需要一个纹理参数,也可以根据原始基础材质添加数值、颜色或其他纹理参数。确保每个参数都连接到 Material 节点;连接方式不必具有实际意义,但需要连接。
原始 MI 中本例要使用的参数名为 Base_TEX:打开新材质,创建与 FModel 中名称完全一致的参数,并连接到 Material 节点。
创建并使用实例
右键新基础材质,选择创建 Material Instance,并将它移动到目标 MI 所在的文件夹。
接着右键该 MI,再从它创建另一个 MI。把新实例移到 Mod 文件夹并自行命名,然后打开它,勾选要覆盖的参数,设置纹理、颜色或数值。完成后,可以将该实例分配给静态网格或骨骼网格。
含静态参数的实例示例
某些 MI 即使复制了基础材质,仍无法显示自定义纹理。对于这种情况,原文建议直接针对同类型 MI 创建实例,而不是沿上述继承链回溯到基础材质;普通自定义材质和复制出的基础材质均无效时,可能遇到这种情况。
原文以 UE4.27 游戏《Alone in the Dark》中的角色为例:
- 在 FModel 中查看骨骼网格使用的默认材质实例,选择参数最接近需求的 MI,例如包含 BaseColor、ORM 或 Normal 贴图的实例。
- 示例选择帽子使用的
MI_Fleece_GraceHat。在 UE 编辑器中,按 FModel 中相同的路径创建一个同名材质。 - 在该普通材质中创建所需参数,保留原名
MI_Fleece_GraceHat。不要将这个材质打包进 Mod。 - 从该材质创建 MI,并在实例参数中应用自己的纹理。
如果替换的是 MI,就把新实例命名并放在目标 MI 的位置;如果替换的是骨骼网格,可以自行命名,但要记得打包该实例。