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

全体の構造

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

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

ファイルの残りの部分はアニメーション データに使用され、バージョン番号が変わる場合があります。

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

バージョン 1.1

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

セクション Type メモ
カメラポーズがある Boolean
手のデータがある Boolean
目の視線入力がある Boolean
カメラ ポーズ曲線 [カメラポーズがある] が true の場合のみ
手を左にトラック ブール型曲線 [手のデータがある] が true の場合のみ
手を右にトラック ブール型曲線 [手のデータがある] が true の場合のみ
手を左にピンチ ブール型曲線 [手のデータがある] が true の場合のみ
手を右にピンチ ブール型曲線 [手のデータがある] が true の場合のみ
手の左ジョイント ジョイントポーズ曲線 [手のデータがある] が true の場合のみ
手の右ジョイント ジョイントポーズ曲線 [手のデータがある] が true の場合のみ
目の視線入力 射線曲線] [目の視線入力がある] が true の場合のみ

バージョン 1.0

入力アニメーション データは、一連のアニメーション曲線で構成されます。 アニメーション曲線の数と意味は固定ですが、各曲線は異なる数のキーフレームを含められます。

セクション
カメラ ポーズ曲線
手を左にトラック ブール型曲線
手を右にトラック ブール型曲線
手を左にピンチ ブール型曲線
手を右にピンチ ブール型曲線
手の左ジョイント ジョイントポーズ曲線
手の右ジョイント ジョイントポーズ曲線

ジョイントポーズ曲線

手ごとに、ジョイントアニメーション曲線のシーケンスが格納されます。 ジョイントの数は固定され、各ジョイントにポーズ曲線のセットが格納されます。

セクション
なし ポーズ曲線
手首 ポーズ曲線
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 つのアニメーション曲線のシーケンスです。

セクション
位置 X 浮動曲線
位置 Y 浮動曲線
位置 Z 浮動曲線
回転 X 浮動曲線
回転 Y 浮動曲線
回転 Z 浮動曲線
回転 W 浮動曲線

射線曲線

放射線曲線は、原点ベクトル用の 3 つのアニメーション曲線と、それに続く方向ベクトル用の 3 つのアニメーション曲線のシーケンスです。

セクション
Origin X 浮動曲線
Origin Y 浮動曲線
Origin Z 浮動曲線
方向 X 浮動曲線
方向 Y 浮動曲線
方向 Z 浮動曲線

浮動曲線

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

セクション
事前ラップ モード Int32、ラップ モード
POSTラップ モード Int32、ラップ モード
キーフレームの数 Int32
キーフレーム 浮動キーフレーム

浮動キーフレーム

浮動キーフレームには、接線値と重み値が基本的な時間と値とともに格納されます。

セクション
Time Float32
Float32
InTangent Float32
OutTangent Float32
InWeight Float32
OutWeight Float32
WeightedMode Int32、重み付けモード

ブール型曲線

ブール型曲線は、オン/オフ値の単純なシーケンスです。 キーフレームごとに、曲線の値が即座にフリップします。

セクション
事前ラップ モード Int32、ラップ モード
POSTラップ モード Int32、ラップ モード
キーフレームの数 Int32
キーフレーム ブール型キーフレーム

ブール型キーフレーム

ブール型キーフレームには、時間と値のみが格納されます。

セクション
Time Float32
Float32

ラップ モード

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

説明
0 既定値:既定値のリピートモードのより高い設定を読み取ります。
1 1 回: 時間がアニメーション クリップの最後に達すると、クリップの再生が自動的に停止し、時間がクリップの先頭にリセットされます。
2 ループ: 時間がアニメーション クリップの最後に達すると、時間は先頭から続行します。
4 ピンポン:時間がアニメーションクリップの最後に達すると、開始と終了の間でピンポンのように繰り返されます。
8 ClampForever: アニメーションを再生します。 最後に達すると、最後のフレームの再生を維持し、再生が停止されません。

重み付けモード

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

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