輸入動畫檔案格式 - MRTK2
整體結構
輸入動畫二進位檔的開頭為 64 位整數魔術編號。 這個數位以十六進位標記法標記法的值是 0x6a8faf6e0f9e42c6
,可用來識別有效的輸入動畫檔案。
接下來八個位元組是兩個 Int32 值,宣告檔案的主要和次要版本號碼。
其餘的檔案是由動畫資料所佔用,這可能會在版本號碼之間變更。
區段 | 類型 |
---|---|
魔術數位 | Int64 |
主要版本號碼 | Int32 |
次要版本號碼 | Int32 |
動畫資料 | 請參閱版本一節 |
1.1 版
輸入動畫資料包含三個布林值,指出動畫是否包含相機、手部和眼睛注視資料,後面接著一連串動畫曲線。 曲線存在取決於這些布林值的值。 每個曲線可以有不同的主要畫面格數目。
區段 | 類型 | 注意 |
---|---|---|
具有相機姿勢 | 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 | 浮點曲線 |
原始 Y | 浮點曲線 |
原始 Z | 浮點曲線 |
方向 X | 浮點曲線 |
方向 Y | 浮點曲線 |
方向 Z | 浮點曲線 |
浮點曲線
浮點曲線是具有可變主要畫面格數目的完整 Bézier 曲線。 每個主要畫面格都會儲存時間與曲線值,以及每個主要畫面格左邊和右邊的正切和權數。
區段 | 類型 |
---|---|
預先包裝模式 | Int32、 包裝模式 |
後置換行模式 | Int32、 包裝模式 |
主要畫面格數目 | Int32 |
Keyframes | 浮點數主要畫面格 |
浮點數主要畫面格
浮點數主要畫面格會與基本時間和值一起儲存正切值和加權值。
區段 | 類型 |
---|---|
時間 | Float32 |
值 | Float32 |
InTangent | Float32 |
OutTangent | Float32 |
InWeight | Float32 |
OutWeight | Float32 |
WeightedMode | Int32, 加權模式 |
布林曲線
布林曲線是開啟/關閉值的簡單序列。 在每個主要畫面格上,曲線的值會立即翻轉。
區段 | 類型 |
---|---|
預先包裝模式 | Int32、 包裝模式 |
後置換行模式 | Int32、 包裝模式 |
主要畫面格數目 | Int32 |
Keyframes | 布林主要畫面格 |
布林主要畫面格
布林主要畫面格只會儲存時間和值。
區段 | 類型 |
---|---|
時間 | Float32 |
值 | Float32 |
包裝模式
Pre-and Post-Wrap 模式的語意遵循 Unity WrapMode 定義。 它們是下列位的組合:
值 | 意義 |
---|---|
0 | 預設值:讀取預設的重複模式設定較高。 |
1 | 一次:當時間到達動畫剪輯的結尾時,剪輯會自動停止播放,並將時間重設為剪輯的開頭。 |
2 | 迴圈:當時間到達動畫剪輯的結尾時,時間會繼續在開頭。 |
4 | PingPong:當時間到達動畫剪輯的結尾時,時間會在開始和結束之間 ping pong。 |
8 | ClampForever:播放動畫。 到達結尾時,它會持續播放最後一個畫面,永遠不會停止播放。 |
加權模式
加權模式的語意遵循 Unity WeightedMode 定義。
值 | 意義 |
---|---|
0 | 無:計算曲線區段時排除 inWeight 或 outWeight。 |
1 | 在:計算前一個曲線線段時,包含 inWeight。 |
2 | Out:計算下一個曲線線段時包含 outWeight。 |
3 | 兩者:在計算曲線區段時包含 inWeight 和 outWeight。 |