Table of Contents

マテリアルスロット

中級 アーティスト プログラマー

モデルは、複数のマテリアルを持つことができます。マテリアルは、モデルのマテリアルスロットに設定します。

Material slots

例えば、このモデルの 2 番目のマテリアルスロットは、バイザーならびに肩と胸のプレートのストライプ部分のマテリアルを指定する場所です。このスロットのマテリアルを変更することで、モデルのこれらの部分で使用されるマテリアルを変更することができます。

Materials

マテリアルスロット自体(の数と位置)は、モデルのソースファイル(.fbx.obj など)で定義されています。Game Studio でマテリアルスロット自体を編集することはできません。変更できるのは各スロットで使用するマテリアルだけです。

モデルにマテリアルを設定する

モデルが使うマテリアルは、次の 2 ヶ所で変更することが可能です。

  • モデル自体の Materials プロパティ:

    Model materials

    Note

    この設定は、このモデルのすべてのインスタンスに影響します。

  • エンティティのモデルコンポーネントまたはプレハブMaterials プロパティ:

    Model materials on entity

    この設定は、設定したインスタンスまたはプレハブだけに適用されます。

メッシュとマテリアルスロット

モデリングソフトから取り込んだモデルにはメッシュが含まれています。このとき、マテリアルスロットを介して、メッシュ間でマテリアルを共有することができます。

Mesh

メッシュとマテリアルスロットの関連付けは、モデルのソースファイルで定義します。これらの関連付けは Game Studio では変更できませんが、実行時にコードから変更することができます。

メッシュとマテリアルの関連付けを変更する方法:

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

マテリアルのリストにマテリアルを追加または変更する方法:

MyModelComponent.Materials[ExistingOrNewMaterialIndex] = myMaterial;

メッシュをマージする

Stride は、メッシュを持つモデルを描画するとき、各メッシュに対して 1 回ずつ GPU の描画呼び出しを行います。既定では、パフォーマンスを上げるために、ビルド時にマテリアルを共有しているメッシュをマージします。

Mesh

上の例では、5 つのメッシュと 5 回の描画呼び出しがあります。マージ後は、3 つのメッシュと 3 回の描画呼び出しになります。

Note

Stride は、メッシュをマージする際に、頂点バッファとインデックスバッファをマージします。つまり、実行時にマージ済みメッシュをバラバラに描画することはできず、元のメッシュの位置(変換行列)を変更することもできません。メッシュは、単一のマテリアルと単一の(モデルに対する相対的な)変換行列を持つ単一のメッシュになります。

Note

Stride は、メッシュをマージする際に、マテリアルの描画順序を変更します。透明なマテリアルがあると、これにより異なった結果になることがあります。

Note

モデルから物理コライダーを作成すると、Stride は、モデルの各メッシュに対して別々の凸開包を構築します。メッシュがマージされた場合はマテリアルごとに 1 つのメッシュしか残らないので、凸開包もマージ後のメッシュに対して構築されます。

メッシュのマージを無効化する

場合によっては、メッシュのマージを無効にした方がいいかもしれません。

  • メッシュをアニメーションする場合

  • 実行時にメッシュのマテリアルを変更する場合

モデル上でメッシュのマージを無効化する方法は、次の通りです。

  1. メッシュのマージを無効にしたいモデルを選択します。

  2. プロパティグリッドで、Merge meshes を無効化します。

    Disable merge meshes

特定のメッシュのマージを無効化する

特定のメッシュに対してのみマージを無効化するには、それに対応するノードプロパティを指定します。

  1. 無効化したいメッシュを持つモデルを選択します。

  2. プロパティグリッドSkeleton プロパティで、モデルに関連付けられているスケルトンを確認します。

    Model skeleton

    スケルトンに関する詳細については、アニメーションを参照してください。

  3. アセットビューで、そのスケルトンを選択します。

    Select model skeleton

  4. プロパティグリッドNodes プロパティで、マージしたくないメッシュに対応するノードを選択します。

    Nodes

    Tip

    どのノードがどのメッシュに対応しているかを確認するには、Maya などのモデリングアプリケーションで、モデルのソースファイルを開いてください。

    Note

    実行時にアニメーションする予定のノードを無効にしないようにしてください。

関連項目