Formát souboru vstupní animace – MRTK2

Celková struktura

Vstupní binární soubor animace začíná 64bitovým celočíselným číslem. Hodnota tohoto čísla v šestnáctkovém zápisu je 0x6a8faf6e0f9e42c6 a dá se použít k identifikaci platných vstupních animačních souborů.

Dalších osm bajtů jsou dvě hodnoty Int32 deklarující číslo hlavní a podverze souboru.

Zbytek souboru je převzat daty animace, která se mohou měnit mezi čísly verzí.

Sekce Typ
Kouzelné číslo Int64
Číslo hlavní verze Int32
Číslo podverze Int32
Data animace viz část verze.

Verze 1.1

Vstupní animační data se skládají ze tří logických hodnot, které označují, jestli animace obsahuje data Kamera, Ruka a Pohled zrakem, následovaná posloupností animačních křivek. Přítomné křivky závisí na hodnotách těchto logických hodnot. Každá křivka může mít jiný počet klíčových snímků.

Sekce Typ Poznámky
Má pózu fotoaparátu Logická hodnota
Obsahuje data rukou Logická hodnota
Má pohled z očí Logická hodnota
Camera Křivky pozice Pouze v případě, že má pózu z fotoaparátu pravdivou
Ručně sledované doleva Logická křivka Pouze v případě, že má údaje o rukou hodnotu true
Hand Tracked Right Logická křivka Pouze v případě, že má údaje o rukou hodnotu true
Stažení rukou doleva Logická křivka Pouze v případě, že má údaje o rukou hodnotu true
Stažení rukou doprava Logická křivka Pouze v případě, že má údaje o rukou hodnotu true
Levé klouby rukou Společné křivky pozice Pouze v případě, že má údaje o rukou hodnotu true
Pravé klouby Společné křivky pozice Pouze v případě, že má údaje o rukou hodnotu true
Pohled na oči Paprskové křivky] Pouze v případě, že Má pohled na oči je pravdivý

Verze 1.0

Vstupní animační data se skládají z posloupnosti animačních křivek. Počet a význam animačních křivek je pevný, ale každá křivka může mít jiný počet klíčových snímků.

Sekce Typ
Camera Křivky pozice
Ručně sledované doleva Logická křivka
Hand Tracked Right Logická křivka
Stažení rukou doleva Logická křivka
Stažení rukou doprava Logická křivka
Levé klouby rukou Společné křivky pozice
Pravé klouby Společné křivky pozice

Společné křivky pozice

Pro každou ruku je uložena posloupnost společných animačních křivek. Počet spojů je pevný a pro každý spoj je uložena sada křivek pozice.

Sekce Typ
Žádné Křivky pozice
Zápěstí Křivky pozice
Palm Křivky pozice
ThumbMetacarpalJoint Křivky pozice
ThumbProximalJoint Křivky pozice
ThumbDistalJoint Křivky pozice
Popis palce Křivky pozice
IndexMetacarpal Křivky pozice
IndexKnuckle Křivky pozice
IndexMiddleJoint Křivky pozice
IndexDistalJoint Křivky pozice
Tip indexu Křivky pozice
MiddleMetacarpal Křivky pozice
Střední kloub Křivky pozice
MiddleMiddleJoint Křivky pozice
MiddleDistalJoint Křivky pozice
Střední tip Křivky pozice
RingMetacarpal Křivky pozice
Prstencový kloub Křivky pozice
RingMiddleJoint Křivky pozice
RingDistalJoint Křivky pozice
Vyzváněcí tip Křivky pozice
PinkyMetacarpal Křivky pozice
PinkyKnuckle Křivky pozice
PinkyMiddleJoint Křivky pozice
PinkyDistalJoint Křivky pozice
PinkyTip Křivky pozice

Křivky pozice

Křivky pozice jsou posloupnosti 3 křivky animace pro vektor pozice, následované 4 animačními křivkami pro kvaternion otáčení.

Sekce Typ
Pozice X Plovoucí křivka
Pozice Y Plovoucí křivka
Pozice Z Plovoucí křivka
Otočení X Plovoucí křivka
Otočení Y Plovoucí křivka
Otočení Z Plovoucí křivka
Otočení W Plovoucí křivka

Paprskové křivky

Paprskové křivky jsou posloupnosti 3 animačních křivek pro původní vektor, následované 3 animačními křivkami pro směrový vektor.

Sekce Typ
Origin X Plovoucí křivka
Origin Y Plovoucí křivka
Původ Z Plovoucí křivka
Směr X Plovoucí křivka
Směr Y Plovoucí křivka
Směr Z Plovoucí křivka

Plováková křivka

Křivky s plovoucí desetinou čárkou jsou plnohodnotné Bézierovy křivky s proměnlivým počtem klíčových snímků. Každý klíčový snímek ukládá čas a hodnotu křivky a také tečny a váhy na levé a pravé straně každého klíčového snímku.

Sekce Typ
Režim předběžného zabalení Int32, Režim zabalení
Režim následného zabalení Int32, Režim zabalení
Počet klíčových snímků Int32
Klíčových snímků Plovoucí klíčový snímek

Plovoucí klíčový snímek

Plovoucí klíčový snímek ukládá hodnoty tangens a váhy spolu se základním časem a hodnotou.

Sekce Typ
Čas Plovoucí 32
Hodnota Plovoucí 32
Intangentní Plovoucí 32
Odsazení Plovoucí 32
Váha Plovoucí 32
Outweight Plovoucí 32
Vážený režim Int32, Vážený režim

Logická křivka

Logické křivky jsou jednoduché posloupnosti hodnot zapnutí/vypnutí. Na každém klíčovém snímku se hodnota křivky okamžitě překlopí.

Sekce Typ
Režim předběžného zabalení Int32, Režim zabalení
Režim následného zabalení Int32, Režim zabalení
Počet klíčových snímků Int32
Klíčových snímků Logický klíčový snímek

Logický klíčový snímek

Logický klíčový snímek ukládá pouze čas a hodnotu.

Sekce Typ
Čas Plovoucí 32
Hodnota Plovoucí 32

Režim obtékání

Sémantika režimů Před a Po zabalení se řídí definicí Unity WrapMode . Jedná se o kombinaci následujících bitů:

Hodnota Význam
0 Výchozí: Přečte výše nastavený výchozí režim opakování.
1 Jednou: Když čas dosáhne konce klipu animace, klip se automaticky přestane přehrávat a čas se obnoví na začátek klipu.
2 Smyčka: Když čas dosáhne konce animačního klipu, bude čas pokračovat na začátku.
4 PingPong: Když čas dosáhne konce animačního klipu, čas se vrátí zpět mezi začátkem a koncem.
8 ClampForever: Přehraje animaci. Když dosáhne konce, bude pokračovat v přehrávání posledního snímku a nikdy se nepřestane přehrávat.

Vážený režim

Sémantika váženého režimu se řídí definicí Unity WeightedMode .

Hodnota Význam
0 Žádné: Při výpočtu segmentů křivky vylučte jak váhou, tak i váhou.
1 V: Při výpočtu předchozího segmentu křivky uveďte váhou.
2 Out (Out): Při výpočtu dalšího segmentu křivky uveďte odlehčení.
3 Obojí: Při výpočtu segmentů křivky zahrňte hodnoty váhou a odlehčení.