Table of Contents

材质插槽

中级 美术人员 程序员

模型可以使用多个材质。你可以在模型的**材质插槽(Material slot)**中设置材质。

材质插槽

例如,此模型中的第二个材质插槽指定了面罩以及肩甲和胸甲条纹的材质。通过更改此插槽中的材质,我们就更换了模型这些部位使用的材质。

材质

材质插槽本身(数量和位置)是在模型源文件(如 .fbx、.obj 等)中定义的。你不能在 Game Studio 中编辑材质插槽,只能更改每个插槽中使用的材质。

在模型上设置材质

你可以在两个位置更改模型使用的材质:

  • 在模型本身的 Materials 属性下:

    模型材质

    Note

    这会影响该模型的每个实例。

  • 在实体或预制件的模型组件中:

    实体上的模型材质

    这只会影响这一个实例或预制件。

网格与材质插槽

从建模软件导入的模型可以包含网格(Mesh)。网格可以通过材质插槽共享材质。

网格

网格与材质插槽之间的关联是在模型源文件中定义的。你不能在 Game Studio 中更改这些关联,但可以在运行时通过代码更改。

要更改网格与材质之间的关联,请使用:

MyModelComponent.Model.Meshes[submeshIndex].MaterialIndex = materialIndex;

要更改材质列表中的材质或向列表中添加材质,请使用:

MyModelComponent.Materials[ExistingOrNewMaterialIndex] = myMaterial;

合并网格

Stride 绘制包含网格的模型时,会对每个网格执行一次 GPU 绘制调用。为了提高性能,默认情况下,Stride 在构建时会合并共享材质的网格。

网格

在上面的示例中,有五个网格和五次绘制调用。合并后,剩下三个网格和三次绘制调用。

Note

Stride 合并网格时,会合并顶点缓冲区和索引缓冲区。这意味着你不能在运行时分别绘制这些网格,也不能更改原始网格的变换(变换矩阵)。这些网格会变成一个具有单一材质和单一变换矩阵(相对于模型)的网格。

Note

Stride 合并网格时,会改变元素的绘制顺序。对于透明材质,这可能产生不同的结果。

Note

当你从模型创建物理碰撞体时,Stride 会为模型中的每个网格分别构建凸包。如果网格被合并,则每种材质只剩一个网格,因此凸包也是从合并后的网格构建的。

禁用网格合并

如果你想要执行以下操作,可能需要禁用网格合并:

  • 为网格制作动画

  • 在运行时更改网格的材质

要在模型上禁用网格合并:

  1. 选中要禁用网格合并的模型。

  2. 在属性网格中,禁用 Merge meshes。

    禁用合并网格

针对特定网格禁用合并

要只针对特定网格禁用合并,请启用其对应的节点。

  1. 选中包含这些网格的模型。

  2. 在属性网格的 Skeleton 下,确保该模型关联了骨骼。

    模型骨骼

    有关骨骼的更多信息,请参阅动画。

  3. 在资产视图中,选中该骨骼。

    选择模型骨骼

  4. 在属性网格的 Nodes 下,选择对应于不想合并的网格的节点。

    节点

    Tip

    要查看哪个节点对应哪个网格,可以在 Maya 等建模应用中打开模型源文件。

    Note

    请确保不要禁用在运行时会被制作动画的节点。

另请参阅