全体的な構造
入力アニメーション バイナリ ファイルは、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 を含めます。 |