【Unity5】スキンメッシュを裏返す方法

需要があるかどうかはわからないけれども、調べものしていて見つけたのでメモしておく。

Unityでは、スクリプトからメッシュの頂点やポリゴンのインデックスに直接アクセスできる。

スキンメッシュのモデルならSkinnedMeshRendererから、それ以外ならMeshFilterからメッシュの参照を取り出すことが出来る。

スキンメッシュなら、こんな感じ。

SkinnedMeshRenderer renderer = GetComponent<SkinnedMeshRenderer>();
Mesh mesh = renderer.sharedMesh;

メッシュフィルターなら、こんな感じ。

MeshFilter filter = GetComponent<MeshFilter>();
Mesh mesh = filter.mesh;

このメッシュの中にポリゴンのインデックス(三角形の頂点順序)があってそれも取り出せる。


//サブメッシュの数だけループ
for (int m=0; m < mesh.subMeshCount; m++) { //ポリゴンのインデックスを取得する int[] triangles = mesh.GetTriangles(m); //ポリゴンなので3つずつインクリメントしてループ for (int i = 0; i < triangles.Length; i += 3) { //2番目と3番目の頂点インデックスを入れ替えて三角形を反転する int index = triangles[i+1]; triangles[i+1] = triangles[i+2]; triangles[i+2] = index; } //ポリゴンのインデックスをメッシュに戻す mesh.SetTriangles(triangles, m); } //法線を再計算する mesh.RecalculateNormals(); [/csharp] とこんな感じでメッシュを反転させることができる。 プリミティブのキューブを反転させれば部屋の中のような空間をつくれるし、球を反転させれば天球を作ることができる。

About dezakinian 809 Articles

Miiverseで使用しているMiiのアカウント。

先日、思いきってMiiverseでこのサイトのことをこっそり告知したので作りました。

Miiverseからきてくれた方、ありがとう。

このサイトの中の人です。

こちらのサイトもよろしくお願いします。

1 Trackback / Pingback

  1. 群衆表現 | Tears of Devil

Leave a Reply

Your email address will not be published.