インデックス配列には頂点位置配列の要素を参照するための整数が含まれます。これらの整数をインデックスと呼びます。
Unity はインデックスを使用して、頂点の位置を面に接続します。各面を作るインデックスの数は、メッシュのトポロジーに依存します。
Mesh クラスでは、このデータを Mesh.GetIndices で取得し、Mesh.SetIndices で設定します。また、Unity はこのデータを Mesh.triangles に保存しますが、この古いプロパティは効率性と使い勝手があまり良くありません。
注意Points トポロジーは面を作成しません。その代わり、Unity は各位置に 1 つの点を描画します。他のすべてのメッシュトポロジーは、面またはエッジ/辺を作成するために複数のインデックスを使用します。
例えば、以下の値を含むインデックス配列を持つメッシュの場合
0,1,2,3,4,5
メッシュが三角形のトポロジーの場合、最初の 3 つの要素 (0,1,2) が 1 つの三角形を示し、次の 3 つの要素 (3, 4, 5) が別の三角形を示します。1 つの頂点が寄与できる面の数に制限はありません。つまり、同じ頂点が 1 つのインデックス配列に複数回現れる可能性があります。例えば、インデックス配列は以下のような値を持つことができます。
0,1,2,1,2,3
メッシュが三角形のトポロジーの場合、最初の 3 つの要素 (0,1,2) が 1 つの三角形を示し、次の 3 つの要素 (1,2,3) は最初の三角形と一部の頂点を共有する別の三角形を示します。
インデックス配列における各グループの頂点の順序は、巻き順 (winding order) と呼ばれます。Unity は巻き順を使用して、面が表向きか裏向きかを判断し、その結果、面をレンダリングすべきかカリング (レンダリングから除外) すべきかを判断します。デフォルトでは、正面を向いたポリゴンをレンダリングし、背面を向いたポリゴンをカリングします。Unity は時計回りの巻き順で、インデックスが時計回りにつながっている面を表向きと見なします。
上の図は、Unity が巻き順を使用する方法を示しています。各面の頂点の順序によって、その面の法線の向きが決まり、Unity はこれを現在のカメラ視点の前方向と比較します。法線が現在のカメラの前方向から離れている場合は、後ろ向きになっています。近い方の三角形は (1, 2, 3) の順序で、現在の視点を基準にして右回りの向きになります。したがって、三角形は正面を向いています。さらに三角形は (4, 5, 6) の順序で、この視点では反右回りの向きになるため、三角形は後ろ向きになります。