私がこれを行う場合:
Model test1 = content.Load<Model>(@"Models/floorTile");
Model test2 = content.Load<Model>(@"Models/floorTile");
Model test3 = content.Load<Model>(@"Models/floorTile");
foreach (ModelMesh mesh in test1.Meshes)
foreach (Effect effect in mesh.Effects)
((BasicEffect)effect).DiffuseColor = Color.Red.ToVector3();
test1 だけでなく、3 つのモデルすべてに赤色が割り当てられます。
これは私の問題の単純化されたバージョンです。実際のバージョンでは、実際の HLSL エフェクトを使用しています。単一のエフェクトを複製して複数の一意の fbx で動作させる方法は知っていますが、複数のインスタンスを作成する方法はわかりません。すべてが 1 つのテクスチャ/効果を参照するのではなく、それぞれに独自のテクスチャを割り当てます。したがって、シーン内のすべての「床タイル」は常に同じように見えます。
考えられる唯一の回避策は、モデルごとに異なるフロアタイル fbx モデルを作成することですが、多くのタイルがあるため、理想とはほど遠いものです。