入力アニメーション ファイル形式

全体の構造

入力アニメーションのバイナリファイルは、64ビット整数のマジック数で始まります。 16進数表記でのこの数値の値はであり、 0x6a8faf6e0f9e42c6 有効な入力アニメーションファイルを識別するために使用できます。

次の8バイトは、ファイルのメジャーバージョン番号とマイナーバージョン番号を宣言する2つの Int32 値です。

ファイルの残りの部分は、アニメーションデータによって取得されます。これは、バージョン番号の間で変わる可能性があります。

Section
マジックナンバー Int64
メジャーバージョン番号 Int32
マイナーバージョン番号 Int32
アニメーションデータ バージョンセクションを参照

バージョン 1.1

入力アニメーションデータは3つのブール値で構成されます。アニメーションには、カメラ、ハンド、および視線データが含まれ、その後に一連のアニメーション曲線が続くかどうかを示します。 存在する曲線は、これらのブール値によって異なります。 各曲線には、異なる数のキーフレームを設定できます。

Section Type メモ
カメラがある Boolean
手持ちデータ Boolean
目を見つめます Boolean
カメラ ポーズ曲線 カメラのポーズが真の場合にのみ
手を左に追跡 ブール曲線 が手持ちデータを true にする場合のみ
手動で追跡 ブール曲線 が手持ちデータを true にする場合のみ
手ピンチ左 ブール曲線 が手持ちデータを true にする場合のみ
ハンドピンチ Right ブール曲線 が手持ちデータを true にする場合のみ
左揃え ジョイントポーズ曲線 が手持ちデータを true にする場合のみ
手の形を右に ジョイントポーズ曲線 が手持ちデータを true にする場合のみ
視線 射線曲線] の視線が真の場合にのみ

バージョン 1.0

入力アニメーションデータは、一連のアニメーション曲線で構成されます。 アニメーション曲線の数値と意味は固定されていますが、各曲線のキーフレーム数は異なる場合があります。

Section
カメラ ポーズ曲線
手を左に追跡 ブール曲線
手動で追跡 ブール曲線
手ピンチ左 ブール曲線
ハンドピンチ Right ブール曲線
左揃え ジョイントポーズ曲線
手の形を右に ジョイントポーズ曲線

ジョイントポーズ曲線

各ハンドでは、一連のジョイントアニメーション曲線が格納されます。 ジョイントの数は固定されており、各結合に対して一連のポーズ曲線が格納されます。

Section
なし ポーズ曲線
手首 ポーズ曲線
Palm ポーズ曲線
ThumbMetacarpalJoint ポーズ曲線
ThumbProximalJoint ポーズ曲線
ThumbDistalJoint ポーズ曲線
ThumbTip ポーズ曲線
IndexMetacarpal ポーズ曲線
IndexKnuckle ポーズ曲線
IndexMiddleJoint ポーズ曲線
IndexDistalJoint ポーズ曲線
IndexTip ポーズ曲線
MiddleMetacarpal ポーズ曲線
MiddleKnuckle ポーズ曲線
MiddleMiddleJoint ポーズ曲線
MiddleDistalJoint ポーズ曲線
MiddleTip ポーズ曲線
RingMetacarpal ポーズ曲線
RingKnuckle ポーズ曲線
RingMiddleJoint ポーズ曲線
RingDistalJoint ポーズ曲線
RingTip ポーズ曲線
PinkyMetacarpal ポーズ曲線
PinkyKnuckle ポーズ曲線
PinkyMiddleJoint ポーズ曲線
PinkyDistalJoint ポーズ曲線
PinkyTip ポーズ曲線

ポーズ曲線

ポーズ曲線は、位置ベクターの3つのアニメーション曲線のシーケンスであり、その後に、回転の四元数の4つのアニメーション曲線が続きます。

Section
位置 X 浮動曲線
位置 Y 浮動曲線
Z 位置 浮動曲線
回転 X 浮動曲線
Y 回転 浮動曲線
回転 Z 浮動曲線
回転 (W) 浮動曲線

射線曲線

射線曲線は、原点ベクターの3つのアニメーション曲線のシーケンスです。その後に、方向ベクターの3つのアニメーション曲線が続きます。

Section
Origin X 浮動曲線
Origin Y 浮動曲線
Origin Z 浮動曲線
方向 X 浮動曲線
方向 Y 浮動曲線
方向 Z 浮動曲線

浮動曲線

浮動小数点曲線は、さまざまな数のキーフレームを持つ完全なベジエ曲線です。 各キーフレームには、時間と曲線の値、および各キーフレームの左右にある接線と重みが格納されます。

Section
事前ラップモード Int32、 Wrap モード
折り返しモード Int32、 Wrap モード
キーフレームの数 Int32
キーフレーム 浮動キーフレーム

浮動キーフレーム

Float キーフレームは、基本時間と値と共にタンジェント値と重み値を格納します。

Section
Time Float32
Float32
InTangent Float32
OutTangent Float32
InWeight Float32
OutWeight Float32
WeightedMode Int32、 重み付けモード

ブール曲線

ブール曲線は、オン/オフ値の単純なシーケンスです。 すべてのキーフレームで、曲線の値がすぐに反転します。

Section
事前ラップモード Int32、 Wrap モード
折り返しモード Int32、 Wrap モード
キーフレームの数 Int32
キーフレーム ブールキーフレーム

ブールキーフレーム

ブールキーフレームには、時刻と値だけが格納されます。

Section
Time Float32
Float32

折り返しモード

プリラップモードとポストラップモードのセマンティクスは、 Unity WrapMode の定義に従います。 これらは、次のビットの組み合わせです。

意味
0 既定値: 既定の繰り返しモード設定を読み取ります。
1 1回: アニメーションクリップの最後に時間が経過すると、クリップの再生が自動的に停止し、時間がクリップの開始位置にリセットされます。
2 Loop: 時間がアニメーションクリップの最後に達すると、時間は先頭に続きます。
4 Ping: 時間がアニメーションクリップの最後に達すると、時刻は先頭と末尾の間を ping します。
8 ClampForever: アニメーションを再生します。 最後に達すると、最後のフレームの再生が継続され、再生は停止しません。

重み付けモード

重み付けモードのセマンティクスは、 Unity WeightedMode の定義に従います。

意味
0 None: 曲線セグメントを計算するときに、inWeight と outWeight の両方を除外します。
1 : 前の曲線セグメントを計算するときに、inWeight を含めます。
2 Out: 次の曲線セグメントを計算するときに、outWeight を含めます。
3 Both: 曲線セグメントを計算するときに、inWeight と outWeight を含めます。