Skip to content

复制材质实例

主要用于那些不接受自定义/普通材质的游戏,或者模组制作者希望继承材质行为而不破坏它并调整其参数。

使用材质实例(MI)的几个例子

  • 当游戏不接受普通材质时,比如HighOnLife
    要让自定义材质在这类游戏中工作,你必须找到一个已经存在的、与你目标网格体具有相同参数的MI。
  • 有一个全息图材质,你想在你的模组中使用,但希望它看起来相同,只是使用你自己的图像/文本。
    如果有闪烁效果或平移效果,你希望保留这些效果,同时使用你自己的纹理。
  • 角色使用带有特定效果(如内置轮廓线)的特殊材质实例,因此你可以设置自己的纹理,同时保持原始结构。

识别基础材质

使用FModel:

  • 找到并打开你想复制的MI,它应该是MaterialInstanceConstant类型。
  • 查看父材质,并点击它以导航至该材质。

取决于材质继承的层级,它可能不是直接链接到父级,所以你必须沿着继承关系向下查找,直到找到基础材质。
在这个例子中,MI继承自另一个MI - 继续查看该父级,直到到达基础材质。

这是基础材质,因为它的类型不再是MaterialInstanceConstant而是简单的Material类型。

  1. 打开你的UE项目。
  2. 在内容浏览器中创建与FModel中显示的相同的文件夹结构。
  3. 创建一个新材质并将其命名为匹配基础材质,在我的例子中是M_Master_Computer_Display

复制材质参数

一旦创建了基础材质,我们就可以开始复制所有我们需要的参数。
对于这个例子,它只是一个单一的纹理参数,但你可以添加更多属于基础材质的参数,如值、颜色和纹理。
当你添加更多参数时 - 确保将它们连接到材质节点上,它不必有意义..只需连接即可。

在原始MI中,我感兴趣的参数是Base_TEX

  • 打开新创建的基础材质。
  • 创建参数,名称与FModel中完全一致,并将其连接到材质节点。

实例化材质

  1. 右键单击新创建的基础材质。
  2. 创建材质实例。

将新的材质实例(MI)移动到目标MI的文件夹中。

使用MI

现在我们完成了复制部分,让我们开始使用它。

  1. 右键单击MI并从中创建另一个MI。

  1. 将新创建的MI移动到你的模组文件夹。
  2. 随意命名。
  3. 打开MI。
  4. 检查你想要覆盖的任何参数,与继承中的前一个MI相比。
  5. 为参数设置覆盖值,如纹理、颜色和数值_(这个例子中只有单个纹理)_。

你可以将它分配给你的静态网格体和骨骼网格体。


带静态参数的MI复制示例

即使进行MI复制/创建替身,仍有一些材质实例无法渲染自定义纹理。
对于这种情况,你需要实例化同一类型的另一个MI,而不用按照上面所示的方法沿着MI继承线向下查找。

  • 通常在自定义普通材质和复制的基础材质都不起作用时可以发现这种情况。

例如,在一个叫"Alone in the Dark"(UE4.27)的游戏中,角色不接受自定义材质。

  1. 使用FModel,查看SK使用的默认材质实例。
  2. 在使用的材质实例中找到一个接近你材质需求的MI,如基本颜色、ORM和/或法线贴图。
  3. 在这个例子中,我选择的MI是用于帽子的MI,名为MI_Fleece_GraceHat,它是最基本的,适合这个需求。
  4. 在UE编辑器中,在与FModel相同的文件夹内创建一个同名材质。
  5. 在该普通材质中创建所需参数,但保持名称与原始的一致,即MI_Fleece_GraceHat
    不要在你的模组中打包此材质

  1. 从该材质创建一个MI,并在MI参数中应用你的纹理。

如果你正在替换MI - 命名并放置在另一个MI的位置。
如果你正在替换骨骼网格体 - 随意命名,只是不要忘记打包它。