輸入動畫二進位檔案格式規格

整體結構

輸入動畫二進位檔案的開頭為64位整數魔術數位。 這個數位的十六進位標記法值是 0x6a8faf6e0f9e42c6 ,而且可以用來識別有效的輸入動畫檔案。

接下來八個位元組是兩個 Int32 值,用來宣告檔案的主要和次要版本號碼。

檔案的其餘部分是由動畫資料所佔用,可能會在版本號碼之間變更。

區段 類型
魔術數位 Int64
主要版本號碼 Int32
次要版本號碼 Int32
動畫資料 請參閱版本區段

1.1 版

輸入動畫資料包含三個布林值,指出動畫是否包含相機、手和眼睛等資料,後面接著一連串的動畫曲線。 出現的曲線取決於這些布林值的值。 每個曲線都可以有不同的主要畫面格數目。

區段 類型 注意
有相機姿勢 布林值
有手資料 布林值
具有眼睛 布林值
相機 姿勢曲線 只有當攝影機姿勢為 true 時
靠右追蹤 布林曲線 只有在有手資料為 true 時
右側追蹤 布林曲線 只有在有手資料為 true 時
向左捏合手 布林曲線 只有在有手資料為 true 時
右手捏合 Right 布林曲線 只有在有手資料為 true 時
左邊的接點 聯合姿勢曲線 只有在有手資料為 true 時
右邊 聯合姿勢曲線 只有在有手資料為 true 時
眼睛 光線曲線] 只有當眼睛為 true 時

版本 1.0

輸入動畫資料包含一連串的動畫曲線。 動畫曲線的數目和意義是固定的,但每個曲線都可以有不同的主要畫面格數目。

區段 類型
相機 姿勢曲線
靠右追蹤 布林曲線
右側追蹤 布林曲線
向左捏合手 布林曲線
右手捏合 Right 布林曲線
左邊的接點 聯合姿勢曲線
右邊 聯合姿勢曲線

聯合姿勢曲線

每次都會儲存一連串的聯合動畫曲線。 接點的數目是固定的,而且會針對每個聯合儲存一組姿勢曲線。

區段 類型
姿勢曲線
手腕 姿勢曲線
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 姿勢曲線

姿勢曲線

姿勢曲線是位置向量的三個動畫曲線序列,後面接著4個旋轉四元數的動畫曲線。

區段 類型
位置 X 浮點數曲線
位置 Y 浮點數曲線
位置 Z 浮點數曲線
旋轉 X 浮點數曲線
旋轉 Y 浮點數曲線
旋轉 Z 浮點數曲線
旋轉 W 浮點數曲線

光線曲線

光線曲線是原點向量的三個動畫曲線序列,後面接著三個方向向量的動畫曲線。

區段 類型
原始 X 浮點數曲線
原點 Y 浮點數曲線
原點 Z 浮點數曲線
方向 X 浮點數曲線
方向 Y 浮點數曲線
方向 Z 浮點數曲線

浮點數曲線

浮點數曲線是具有不定數目之主要畫面格的完備貝茲曲線。 每個主要畫面格都會儲存時間和曲線值,以及每個主要畫面格左右側邊的正切和加權。

區段 類型
預先換行模式 Int32、 Wrap 模式
後置換行模式 Int32、 Wrap 模式
關鍵畫面數 Int32
關鍵 幀 Float 主要畫面格

Float 主要畫面格

Float 主要畫面格會在基本時間和值的旁邊儲存正切值和加權值。

區段 類型
時間 Float32
Float32
InTangent Float32
OutTangent Float32
InWeight Float32
OutWeight Float32
WeightedMode Int32、 加權模式

布林曲線

布林曲線是開啟/關閉值的簡單序列。 在每個主要畫面上,曲線的值會立即翻轉。

區段 類型
預先換行模式 Int32、 Wrap 模式
後置換行模式 Int32、 Wrap 模式
關鍵畫面數 Int32
關鍵 幀 布林主要畫面格

布林主要畫面格

布林值主要畫面格只會儲存時間和值。

區段 類型
時間 Float32
Float32

Wrap 模式

前置和後置換行模式的語法遵循 Unity WrapMode 定義。 它們是下列位的組合:

意義
0 預設值:讀取設定為較高的預設重複模式。
1 一次:當時間到達動畫剪輯的結尾時,剪輯將會自動停止播放,而時間將會重設為剪輯的開頭。
2 Loop:當時間達到動畫剪輯的結尾時,時間會在一開始就繼續進行。
4 PingPong:當時間達到動畫剪輯的結尾時,時間會在開始與結束時 ping 一次。
8 ClampForever:播放動畫。 到達結束時,它會繼續播放最後一個畫面格,而且永遠不會停止播放。

加權模式

加權模式的語義遵循 Unity WeightedMode 定義。

意義
0 None:在計算曲線區段時排除 inWeight 或 outWeight。
1 在中:在計算上一個曲線區段時包含 inWeight。
2 Out:在計算下一個曲線區段時包含 outWeight。
3 兩者:在計算曲線區段時包含 inWeight 和 outWeight。