NIFF2.0ではEnvelope System用のデータ領域があります。Envelope Systemとは複数のノードから影響を受ける1 Skinのアニメーションを実現するためのシステムです。
NIFF2.0ではEnvelopeをおこなうジオメトリを下図のように3種類のパートに分けて登録します。
Full Weightedパートは、そのパート内のすべての頂点は100%の影響を一つのノードから受けます。例えば上図で青い線で囲まれている部分の頂点の移動は一つのJointによって決定します。 図 Envelopeのパート
すべての頂点をFull Weightedで作成したとすると、下図のようになります。
ここで、赤い頂点は赤いjointから100%の影響を受け、青い頂点は青いJointから100%の影響を受けます。
Morphパートは、上図で赤い線で囲まれている部分のように2つのノードが1方向の回転のみでリンクされている場合にそれら2つのノードによってのみ変形の影響を受けるという場合に適用します。この場合、そのrotationから与えられるノード間のangle値を0から180度までで等分し、その場合の頂点の位置を出力することで、angle値をパラメータとする頂点アニメーションとして実現します。 図 Full Weightedパート2つで構成されたスキン
angle = 0からangle = 180までの角度に応じて、下記のようにtableを作成し、table#0から順にデータを格納していきます。 図 Morphパートのangle
Weightedパートは複数のノードから受ける影響を各weight値によって算出する方法です。上図では緑の線で囲まれている部分がそれに該当します。この場合、同一ノードから受けるweight値が同じ頂点をまとめて一つのパートとして出力します。 図 Morphパートのデータ作成