テクスチャ座標の変更

テーマ:
 とりあえず、メモ的な物なので、上手くいかない場合はミートホープのように創意工夫して下さい。

 ポリゴンのテクスチャ座標を変更して、見た目を変える方法です。普通に 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 でどうぞ。

AD