とりあえず、メモ的な物なので、上手くいかない場合はミートホープのように創意工夫して下さい。
ポリゴンのテクスチャ座標を変更して、見た目を変える方法です。普通に XNA で遊ぶ分には、あんまし、使わないかな。
まず、model.Meshes[0].MeshParts[0].VertexDeclaration.GetVertexElements() みたいに、変更するモデルのメッシュのメッシュパーツの VertexElement の配列を取得。
VertexElement の配列をぐるぐる回して、VertexElementUsage が VertexElementUsage.TextureCoordinate になってる物を探します。
んで、テクスチャ座標を取得するための配列を確保するために、メッシュパーツの NumVertices 分だけ、Vector2 の配列を確保。
Vector2[] textureCoordinates = new Vector2[model.Meshes[0].MeshParts[0].NumVertices];
こんな感じね。
そして、textureCoordinates に書き換えすテクスチャ座標をセットしたら、変更するモデルのメッシュの VertexBuffer にそれをセットする。
model.Meshes[0].VertexBuffer.SetData<Vector2>(element.Offset, textureCoordinates, model.Meshes[0].MeshParts[0].StartIndex, model.Meshes[0].MeshParts[0].NumVertices, model.Meshes[0].MeshParts[0].VertexStride, SetDataOptions.None);
こんな感じ。SetDataOptions は None じゃない方が良いかも?
ちなみに、現在のテクスチャ座標の取得は、SetData の代わりに GetData でどうぞ。
ポリゴンのテクスチャ座標を変更して、見た目を変える方法です。普通に XNA で遊ぶ分には、あんまし、使わないかな。
まず、model.Meshes[0].MeshParts[0].VertexDeclaration.GetVertexElements() みたいに、変更するモデルのメッシュのメッシュパーツの VertexElement の配列を取得。
VertexElement の配列をぐるぐる回して、VertexElementUsage が VertexElementUsage.TextureCoordinate になってる物を探します。
んで、テクスチャ座標を取得するための配列を確保するために、メッシュパーツの NumVertices 分だけ、Vector2 の配列を確保。
Vector2[] textureCoordinates = new Vector2[model.Meshes[0].MeshParts[0].NumVertices];
こんな感じね。
そして、textureCoordinates に書き換えすテクスチャ座標をセットしたら、変更するモデルのメッシュの VertexBuffer にそれをセットする。
model.Meshes[0].VertexBuffer.SetData<Vector2>(element.Offset, textureCoordinates, model.Meshes[0].MeshParts[0].StartIndex, model.Meshes[0].MeshParts[0].NumVertices, model.Meshes[0].MeshParts[0].VertexStride, SetDataOptions.None);
こんな感じ。SetDataOptions は None じゃない方が良いかも?
ちなみに、現在のテクスチャ座標の取得は、SetData の代わりに GetData でどうぞ。