次の方法で共有


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

全体的な構造

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

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

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

Section
マジックナンバー Int64
メジャー バージョン番号 Int32
マイナー バージョン番号 Int32
アニメーション データ 「バージョン」セクションを参照してください

バージョン 1.1

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

Section Notes
カメラ ポーズがある ブール型
手のデータがある ブール型
目の視線入力を持つ ブール型
カメラ ポーズ カーブ カメラ ポーズが true の場合のみ
左手追跡 ブール曲線 ハンド データが true の場合のみ
右に追跡された手 ブール曲線 ハンド データが true の場合のみ
左に手をつまむ ブール曲線 ハンド データが true の場合のみ
右に手をつまむ ブール曲線 ハンド データが true の場合のみ
左手ジョイント ジョイント ポーズ カーブ ハンド データが true の場合のみ
ハンド ジョイント右 ジョイント ポーズ カーブ ハンド データが true の場合のみ
視線入力 [レイ カーブ] 目の視線入力が true の場合のみ

Version 1.0

入力アニメーション データは、アニメーション カーブのシーケンスで構成されます。 アニメーション カーブの数と意味は固定されていますが、各カーブには異なる数のキーフレームを設定できます。

Section
カメラ ポーズ カーブ
左手追跡 ブール曲線
右に追跡された手 ブール曲線
左に手をつまむ ブール曲線
右に手をつまむ ブール曲線
左手ジョイント ジョイント ポーズ カーブ
ハンド ジョイント右 ジョイント ポーズ カーブ

ジョイント ポーズ カーブ

各ハンドに対して、一連のジョイント アニメーション カーブが格納されます。 ジョイントの数は固定され、ジョイントごとにポーズ カーブのセットが格納されます。

Section
なし ポーズ カーブ
手首 ポーズ カーブ
手のひら ポーズ カーブ
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
配信元 X 浮動小数点曲線
配信元 Y 浮動小数点曲線
配信元 Z 浮動小数点曲線
方向 X 浮動小数点曲線
方向 Y 浮動小数点曲線
方向 Z 浮動小数点曲線

浮動小数点曲線

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

Section
プリラップ モード Int32、 ラップ モード
ラップ後モード Int32、 ラップ モード
キーフレームの数 Int32
キーフレーム Float キーフレーム

Float キーフレーム

浮動小数点キーフレームは、タンジェント値とウェイト値を基本的な時間と値と共に格納します。

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

ブール曲線

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

Section
プリラップ モード Int32、 ラップ モード
ラップ後モード Int32、 ラップ モード
キーフレームの数 Int32
キーフレーム ブール値キーフレーム

ブール型キーフレーム

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

Section
Time Float32
Float32

折り返しモード

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

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

重み付けモード

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

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