Filformat för indataanimering – MRTK2
Övergripande struktur
Binärfilen för indataanimering börjar med ett magiskt nummer på 64 bitar. Värdet för det här talet i hexadecimal notation är 0x6a8faf6e0f9e42c6
och kan användas för att identifiera giltiga indataanimeringsfiler.
De följande åtta byteen är två Int32-värden som deklarerar filens huvud- och delversionsnummer.
Resten av filen tas upp av animeringsdata, som kan ändras mellan versionsnummer.
Avsnitt | Typ |
---|---|
Magiskt nummer | Int64 |
Huvudversionsnummer | Int32 |
Delversionsnummer | Int32 |
Animeringsdata | se avsnittet version |
Version 1.1
Indata för animering består av tre booleska värden som anger om animeringen innehåller kamera-, hand- och Eye Gaze-data, följt av en sekvens med animeringskurvor. De kurvor som finns beror på värdena för dessa booleska värden. Varje kurva kan ha olika antal nyckelrutor.
Avsnitt | Typ | Kommentarer |
---|---|---|
Har kameraställning | Boolesk | |
Har handdata | Boolesk | |
Har ögonöga | Boolesk | |
Kamera | Posekurvor | Endast om har kameraställning är sant |
Handspårad vänster | Boolesk kurva | Endast om Har handdata är sant |
Handspårad höger | Boolesk kurva | Endast om Har handdata är sant |
Handknip vänster | Boolesk kurva | Endast om Har handdata är sant |
Hand som kläms åt höger | Boolesk kurva | Endast om Har handdata är sant |
Handfogar vänster | Gemensamma posekurvor | Endast om Har handdata är sant |
Handfogar höger | Gemensamma posekurvor | Endast om Har handdata är sant |
Ögonöga | Strålekurvor] | Endast om Has Eye Gaze är sant |
Version 1.0
Animeringsdata för indata består av en sekvens med animeringskurvor. Antalet och innebörden av animeringskurvor är fasta, men varje kurva kan ha olika antal nyckelrutor.
Avsnitt | Typ |
---|---|
Kamera | Posekurvor |
Handspårad vänster | Boolesk kurva |
Handspårad höger | Boolesk kurva |
Handknip vänster | Boolesk kurva |
Hand som kläms åt höger | Boolesk kurva |
Handfogar vänster | Gemensamma posekurvor |
Handfogar höger | Gemensamma posekurvor |
Gemensamma posekurvor
För varje hand lagras en sekvens med gemensamma animeringskurvor. Antalet leder är fast och en uppsättning posekurvor lagras för varje led.
Avsnitt | Typ |
---|---|
Ingen | Posekurvor |
Handled | Posekurvor |
Palm | Posekurvor |
ThumbMetacarpalJoint | Posekurvor |
ThumbProximalJoint | Posekurvor |
ThumbDistalJoint | Posekurvor |
Tumtopp | Posekurvor |
IndexMetacarpal | Posekurvor |
IndexKnuckle | Posekurvor |
IndexMiddleJoint | Posekurvor |
IndexDistalJoint | Posekurvor |
Indextips | Posekurvor |
MiddleMetacarpal | Posekurvor |
MiddleKnuckle | Posekurvor |
MiddleMiddleJoint | Posekurvor |
MiddleDistalJoint | Posekurvor |
Mellantips | Posekurvor |
RingMetacarpal | Posekurvor |
RingKnuckle | Posekurvor |
RingMiddleJoint | Posekurvor |
RingDistalJoint | Posekurvor |
Ringtips | Posekurvor |
PinkyMetacarpal | Posekurvor |
PinkyKnuckle | Posekurvor |
PinkyMiddleJoint | Posekurvor |
PinkyDistalJoint | Posekurvor |
PinkyTip | Posekurvor |
Posekurvor
Posekurvor är en sekvens med 3 animeringskurvor för positionsvektorn, följt av 4 animeringskurvor för rotationskvaternionen.
Avsnitt | Typ |
---|---|
Position X | Flyttalskurva |
Position Y | Flyttalskurva |
Position Z | Flyttalskurva |
Rotation X | Flyttalskurva |
Rotation Y | Flyttalskurva |
Rotation Z | Flyttalskurva |
Rotation W | Flyttalskurva |
Strålkurvor
Ray-kurvor är en sekvens med 3 animeringskurvor för ursprungsvektorn, följt av 3 animeringskurvor för riktningsvektorn.
Avsnitt | Typ |
---|---|
Ursprung X | Flyttalskurva |
Ursprung Y | Flyttalskurva |
Ursprung Z | Flyttalskurva |
Riktning X | Flyttalskurva |
Riktning Y | Flyttalskurva |
Riktning Z | Flyttalskurva |
Flytkurva
Flyttalskurvor är fullfjädrade Bézier-kurvor med ett variabelt antal nyckelrutor. Varje nyckelbildruta lagrar en tid och ett kurvvärde, samt tangenter och vikter till vänster och höger i varje nyckelbildruta.
Avsnitt | Typ |
---|---|
Förinställt radbytesläge | Int32, wrap-läge |
Läge efter radbyte | Int32, wrap-läge |
Antal nyckelrutor | Int32 |
Nyckelrutor | Flyttalsnyckelram |
Flyttalsnyckelram
En flyttalsnyckelram lagrar tangent- och viktvärden tillsammans med den grundläggande tiden och värdet.
Avsnitt | Typ |
---|---|
Tid | Float32 |
Värde | Float32 |
InTangent | Float32 |
OutTangent | Float32 |
InWeight | Float32 |
Utvikt | Float32 |
WeightedMode | Int32, viktat läge |
Boolesk kurva
Booleska kurvor är enkla sekvenser med on/off-värden. På varje nyckelbildruta vänds värdet för kurvan omedelbart.
Avsnitt | Typ |
---|---|
Förinställt radbytesläge | Int32, radbytesläge |
Efter radbrytningsläge | Int32, radbytesläge |
Antal nyckelramar | Int32 |
Nyckelrutor | Boolesk nyckelram |
Boolesk nyckelram
En boolesk nyckelram lagrar bara en tid och ett värde.
Avsnitt | Typ |
---|---|
Tid | Float32 |
Värde | Float32 |
Radbrytningsläge
Semantiken för pre- och post-wrap-lägen följer Unity WrapMode-definitionen . De är en kombination av följande bitar:
Värde | Innebörd |
---|---|
0 | Standard: Läser standardrepetitionsläget högre upp. |
1 | En gång: När tiden når slutet av animeringsklippet slutar klippet automatiskt att spelas upp och tiden återställs till början av klippet. |
2 | Loop: När tiden når slutet av animeringsklippet fortsätter tiden i början. |
4 | PingPong: När tiden når slutet av animeringsklippet pingar tiden pong tillbaka mellan början och slutet. |
8 | ClampForever: Spelar upp animeringen. När den når slutet fortsätter den att spela den sista ramen och slutar aldrig spela. |
Viktat läge
Semantiken i viktat läge följer Unity WeightedMode-definitionen .
Värde | Innebörd |
---|---|
0 | Ingen: Undanta både inWeight eller outWeight vid beräkning av kurvsegment. |
1 | I: Inkludera inWeight vid beräkning av föregående kurvsegment. |
2 | Ut: Inkludera outWeight vid beräkning av nästa kurvsegment. |
3 | Båda: Inkludera inWeight och outWeight vid beräkning av kurvsegment. |