Formát souboru animace vstupu

Celková struktura

Binární soubor vstupní animace začíná 64bitovým celým číslem magic. Hodnota tohoto čísla v šestnáctkové notaci je a lze ji použít k identifikaci platných vstupních 0x6a8faf6e0f9e42c6 souborů animace.

Následujících 8 bajtů jsou dvě hodnoty Int32, které deklarují hlavní a podvergní číslo souboru.

Zbytek souboru se zachycuje daty animace, která se mohou měnit mezi čísly verzí.

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

Verze 1.1

Vstupní data animace se skládají ze tří logických hodnot, které indikují, jestli animace obsahuje data fotoaparátu, ruky a pohledu do očí, následovaných posloupností křivek animace. 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á pozici kamery Logická hodnota
Has Hand Data Logická hodnota
Has Eye Gaze Logická hodnota
Camera Křivka pozice Jenom v případě, že má pozice fotoaparátu hodnotu true
Hand Tracked Left Logická křivka Jenom v případě, že jsou data Has Hand Data pravdivá
Hand Tracked Right Logická křivka Jenom v případě, že jsou data Has Hand Data pravdivá
Ruční přisouvání doleva Logická křivka Jenom v případě, že jsou data Has Hand Data pravdivá
Pravé přisouvání rukou Logická křivka Jenom v případě, že jsou data Has Hand Data pravdivá
Hand Zachycovat doleva Křivky společné pozice Jenom v případě, že jsou data Has Hand Data pravdivá
Hand Nespravovat Křivky společné pozice Jenom v případě, že jsou data Has Hand Data pravdivá
Pohled do oka Ray Curves] Pouze v případě, že má pohled na oko hodnotu true

Verze 1.0

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

Sekce Typ
Camera Křivka pozice
Hand Tracked Left Logická křivka
Hand Tracked Right Logická křivka
Ruční přisouvání doleva Logická křivka
Pravé přisouvání rukou Logická křivka
Hand Zachycovat doleva Křivky společné pozice
Hand Nespravovat Křivky společné pozice

Křivky společné pozice

Pro každou rukou je uložena sekvence společných křivek animace. Počet sekcí je pevný a pro každou spojnice je uložena sada křivek pozice.

Sekce Typ
Žádné Křivka pozice
Zápěstí Křivka pozice
Palm Křivka pozice
ThumbMetacarpalJoint Křivka pozice
ThumbProximalJoint Křivka pozice
ThumbDistalJoint Křivka pozice
ThumbTip Křivka pozice
IndexMetacarpal Křivka pozice
IndexKnuckle Křivka pozice
IndexMiddleJoint Křivka pozice
IndexDistalJoint Křivka pozice
IndexTip Křivka pozice
MiddleMetacarpal Křivka pozice
MiddleKnuckle Křivka pozice
MiddleMiddleJoint Křivka pozice
MiddleDistalJoint Křivka pozice
MiddleTip Křivka pozice
RingMetacarpal Křivka pozice
RingKnuckle Křivka pozice
RingMiddleJoint Křivka pozice
RingDistalJoint Křivka pozice
Popis tlačítka Křivka pozice
PinkyMetacarpal Křivka pozice
PinkyKnuckle Křivka pozice
PinkyMiddleJoint Křivka pozice
PinkyDistalJoint Křivka pozice
PinkyTip Křivka pozice

Křivka pozice

Křivky pozice jsou sekvence 3 animací křivek pro vektor pozice, následovaná 4 křivkami animace pro kvaternion otočení.

Sekce Typ
Pozice X Křivka s plovoucí desetinnou čárkou
Pozice Y Křivka s plovoucí desetinnou čárkou
Pozice Z Křivka s plovoucí desetinnou čárkou
Otočení X Křivka s plovoucí desetinnou čárkou
Rotace Y Křivka s plovoucí desetinnou čárkou
Rotace Z Křivka s plovoucí desetinnou čárkou
Rotation W Křivka s plovoucí desetinnou čárkou

Paprskové křivky

Paprskové křivky jsou sekvence 3 animací křivek pro vektor počátku, následovaná 3 křivkami animace pro směrový vektor.

Sekce Typ
Origin X Křivka s plovoucí desetinnou čárkou
Origin Y Křivka s plovoucí desetinnou čárkou
Origin Z Křivka s plovoucí desetinnou čárkou
Směr X Křivka s plovoucí desetinnou čárkou
Směr Y Křivka s plovoucí desetinnou čárkou
Směr Z Křivka s plovoucí desetinnou čárkou

Křivka s plovoucí desetinnou čárkou

Křivky s plovoucí desetinnou čá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á hodnotu času a křivky a také tangens a váhy na levé a pravé straně každého klíčového rámce.

Sekce Typ
Režim předběžného zabalení Int32, režim zalamování
Režim po zalamování Int32, režim zalamování
Počet klíčových snímků Int32
Klíčových snímků Datový rámec s plovoucí desetinnou čárkou

Klíčový snímek s plovoucí desetinnou čárkou

Datový rámec s plovoucí desetinnou čárkou ukládá hodnoty tangensu a váhy společně se základním časem a hodnotou.

Sekce Typ
Čas Float32
Hodnota Float32
Kotangens Float32
OutTangent Float32
InWeight Float32
OutWeight Float32
WeightedMode (Režim váhy) Int32, vážený režim

Logická křivka

Logické křivky jsou jednoduché posloupnosti hodnot zapnuto/vypnuto. U každého klíčového snímku se hodnota křivky okamžitě Překlopí.

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

Logický klíčový snímek

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

Sekce Typ
Čas Float32
Hodnota Float32

Režim zalamování

Sémantika režimů předběžného a následného 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ýchozí režim opakování nastavený výše.
1 Jednou: když čas dosáhne konce animace klipu, klip se zastaví automaticky a čas se obnoví na začátek klipu.
2 Loop: když čas dosáhne konce animačního klipu, bude čas pokračovat na začátku.
4 PingPong: Pokud čas dosáhne konce animačního klipu, čas se otestuje z pong back-endu na začátku a na konci.
8 ClampForever: přehrává zpětnou animaci. Když dosáhne konce, zůstane přehrávání posledního snímku a nikdy nezastaví přehrávání.

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 inhmotnostní, tak i hmotnost.
1 V: při výpočtu předchozího segmentu křivky zahrňte neváhu.
2 Out: při výpočtu dalšího segmentu křivky uveďte váhu.
3 Obojí: při výpočtu segmentů křivky zahrňte inhmotnostní a hmotnostní hmotnost.