Bemeneti animáció fájlformátuma

Általános struktúra

A bemeneti animáció bináris fájlja egy 64 bites egész számmal kezdődik. Ennek a számnak a hexadecimális ékesetben megadott értéke, és használható érvényes bemeneti animációs 0x6a8faf6e0f9e42c6 fájlok azonosítására.

A következő nyolc bájt két Int32 érték, amelyek a fájl fő- és alverziószámát deklarják.

A fájl többi részét animációs adatok veszik fel, amelyek a verziószámok között változhatnak.

Section Típus
Magic Number Int64
Főverziószám Int32
Alverziószám Int32
Animációs adatok lásd a verzió szakaszt

1.1-es verzió

A bemeneti animációs adatok három logikai értékből áll, amelyek jelzik, hogy az animáció tartalmaz-e Kamera,Kéz és Szem tekintet adatokat, majd egy animációs görbét. A görbe ezen logikai értékektől függ. Minden görbének eltérő számú kulcsképkockája lehet.

Section Típus Jegyzetek
Kamera-pozíciója van Logikai
Kézadatokkal rendelkezik Logikai
Tekintete van a szemre Logikai
Kamera Testgörbék Csak akkor, ha a Kamera pozíciója igaz
Hand Tracked Left Logikai görbe Csak akkor, ha a Kézadatok igazak
Kéz által nyomon követhető jobbra Logikai görbe Csak akkor, ha a Kézadatok igazak
Kézzel csippentés balra Logikai görbe Csak akkor, ha a Kézadatok igazak
Csippentés jobbra Logikai görbe Csak akkor, ha a Kézadatok igazak
Hand Left (Bal kéz) Közös testgörbék Csak akkor, ha a Kézadatok igazak
Kéz jobbra Közös testgörbék Csak akkor, ha a Kézadatok igazak
Szem tekintete Ray Curves] Csak akkor, ha a Has Eye Gaze igaz

1.0-s verzió

A bemeneti animációs adatok animációs görbe sorozatból állnak. Az animációs görbék száma és jelentése rögzített, de minden görbének eltérő számú kulcsképkockája lehet.

Section Típus
Kamera Testgörbék
Hand Tracked Left Logikai görbe
Kéz által nyomon követhető jobbra Logikai görbe
Kézzel csippentés balra Logikai görbe
Csippentés jobbra Logikai görbe
Hand Left (Bal kéz) Közös testgörbék
Kéz jobbra Közös testgörbék

Közös testgörbék

Minden egyes kézhez egy közös animációs görbét tárolunk. A lebenyek száma rögzített, és minden egyes ízülethez testkívívek egy halmaza van tárolva.

Section Típus
None Testgörbék
Csukló Testgörbék
Palm Testgörbék
ThumbMetacarpalJoint Testgörbék
ThumbProximalJoint Testgörbék
ThumbDistalJoint Testgörbék
ThumbTip (Ujjlenyomat-elem) Testgörbék
IndexMetacarpal Testgörbék
IndexKnuckle Testgörbék
IndexMiddleJoint Testgörbék
IndexDistalJoint Testgörbék
Indextip (Indexleírás) Testgörbék
MiddleMetacarpal Testgörbék
MiddleKnuckle Testgörbék
MiddleMiddleJoint Testgörbék
MiddleDistalJoint Testgörbék
MiddleTip (Középső elem) Testgörbék
RingMetacarpal Testgörbék
RingKnuckle Testgörbék
RingMiddleJoint Testgörbék
RingDistalJoint Testgörbék
RingTip (Gyűrűleírás) Testgörbék
RózsaszínMetacarpal Testgörbék
RózsaszínKnuckle Testgörbék
RózsaszínMiddleJoint Testgörbék
RózsaszínDistalJoint Testgörbék
Rózsaszín színű tippek Testgörbék

Testgörbék

A testhelyzet-görbe egy 3 animációs görbe sorozata a pozícióvektorhoz, amelyet 4 animációs görbe követ a forgó kvaternionhoz.

Section Típus
X pozíció Lebegő görbe
Y pozíció Lebegő görbe
A Z pozíciója Lebegő görbe
X rotációja Lebegő görbe
Y rotáció Lebegő görbe
A Z rotációja Lebegő görbe
Rotáció W Lebegő görbe

Sugárgörbék

A sugárgörbék a forrásvektorhoz 3 animációs görbét, az irányvektorhoz pedig 3 animációs görbét követnek.

Section Típus
Origin X Lebegő görbe
Y forrás Lebegő görbe
Z forrás Lebegő görbe
Direction X Lebegő görbe
Y irány Lebegő görbe
Z irány Lebegő görbe

Lebegő görbe

A lebegőpontos görbe teljes értékű Bézier-görbe, változó számú kulcskockával. Minden kulcskeret egy-egy időt és egy görbét, valamint tangenseket és súlyokat tárol az egyes kulcskeretek bal és jobb oldalán.

Section Típus
Előre tördelt mód Int32, Wrap Mode
Sortörés utáni mód Int32, Wrap Mode
Kulcskeretek száma Int32
Kulcsképek Lebegőkulcsos keret

Lebegőkeretes kulcskeret

A lebegőkulcs-keret az alapidő és az érték mellett tárolja az tangens- és súlyértékeket.

Section Típus
Idő Float32
Érték Float32
InTangent (InTangent) Float32
OutTangent (Ki-kig) Float32
InWeight (Nehéz) Float32
OutWeight (Túlsúly) Float32
WeightedMode (Súlyozott mód) Int32, Súlyozott mód

Logikai görbe

A logikai görbe egyszerű be- és kikapcsolt értékek sorozata. A görbe értéke minden kulcsképen azonnal áttűn.

Section Típus
Előre tördelt mód Int32, Wrap mode
Sortörés utáni mód Int32, Wrap mode
Kulcskeretek száma Int32
Kulcsképek Logikai kulcskeret

Logikai kulcsképkockák

A logikai kulcskeretek csak egy időt és egy értéket tárolnak.

Section Típus
Idő Float32
Érték Float32

Sortörés mód

A Burk előtti és utáni módok szemantikája a Unity WrapMode definícióját követi. Ezek a következő bitek kombinációjai:

Érték Értelmezés
0 Alapértelmezett: Magasabb szinten beolvassa az alapértelmezett ismétlési módot.
1 Egyszer: Amikor az idő eléri az animációs klip végét, a klip lejátszása automatikusan leáll, és az idő visszaáll a klip elejére.
2 Hurok: Amikor az idő eléri az animációs klip végét, az idő az elejétől folytatódik.
4 PingPong: Amikor az idő eléri az animációs klip végét, az idő az elejétől a végéig pingelni fog.
8 Az animációt visszajátssza. Amikor elér a véghez, az utolsó képkockát fogja játszani, és soha nem fog leállni.

Súlyozott mód

A Súlyozott mód szemantikája a Unity WeightedMode definíciót követi.

Érték Értelmezés
0 Nincs: A görbeszegmensek kiszámításakor ne számítsa ki mind az inWeight, mind az OutWeight görbét.
1 In: Include inWeight when calculating the previous curve segment.
2 Ki: A következő görbeszegmens kiszámításakor foglalja bele az outWeight (túlsúly) képletet.
3 Mindkettő: A görbeszegmensek kiszámításakor az inWeight és az outWeight is bele van foglalva.