Filformat för animering av indata

Övergripande struktur

Den binära filen för animering av indata börjar med ett 64-bitars heltal magic number. Värdet för det här talet i hexadecimal notation är och kan 0x6a8faf6e0f9e42c6 användas för att identifiera giltiga indataanimeringsfiler.

Nästa åtta byte är två Int32-värden som deklarerar filens högre och lägre versionsnummer.

Resten av filen tas upp av animeringsdata, som kan ändras mellan versionsnummer.

Avsnitt Typ
Magiskt tal Int64
Huvudversionsnummer Int32
Lägre versionsnummer Int32
Animeringsdata se avsnittet version

Version 1.1

Indata för animeringen består av tre booleska värden som anger om animeringen innehåller data för Kamera, Hand och Ögon blick, följt av en sekvens med animeringskurvor. Vilka kurvor som finns beror på värdena för dessa booleska värden. Varje kurva kan ha olika antal nyckelbildrutor.

Avsnitt Typ Kommentarer
Har kameraställning Boolesk
Has Hand Data Boolesk
Has Eye Gaze Boolesk
Kamera Attitydkurvor Endast om Har kameraställning är sant
Handspårad vänster Boolesk kurva Endast om Has Hand Data (Har handdata) är sant
Handspårad höger Boolesk kurva Endast om Has Hand Data (Har handdata) är sant
Dra ihop vänster hand Boolesk kurva Endast om Has Hand Data (Har handdata) är sant
Dra ihop höger hand Boolesk kurva Endast om Has Hand Data (Har handdata) är sant
Handledande vänster Gemensam poseringskurva Endast om Has Hand Data (Har handdata) är sant
Handförseningar till höger Gemensam poseringskurva Endast om Has Hand Data (Har handdata) är sant
Ögonögon Ray Curves] Endast om Has Eye Gaze är sant

Version 1.0

Indata för animering består av en sekvens med animeringskurvor. Talet och innebörden av animeringskurvor är fasta, men varje kurva kan ha olika antal nyckelbildrutor.

Avsnitt Typ
Kamera Attitydkurvor
Handspårad vänster Boolesk kurva
Handspårad höger Boolesk kurva
Dra ihop vänster hand Boolesk kurva
Dra ihop höger hand Boolesk kurva
Handledande vänster Gemensam poseringskurva
Handförseningar till höger Gemensam poseringskurva

Gemensam poseringskurva

För varje hand lagras en sekvens med gemensamma animeringskurvor. Antalet isar är fast och en uppsättning attitydkurvor lagras för varje gemensam.

Avsnitt Typ
Ingen Attitydkurvor
Handled Attitydkurvor
Palm Attitydkurvor
ThumbMetacarpalJoint Attitydkurvor
ThumbProximalJoint Attitydkurvor
ThumbDistalJoint Attitydkurvor
Tumtips Attitydkurvor
IndexMetacarpal Attitydkurvor
IndexKnuckle Attitydkurvor
IndexMiddleJoint Attitydkurvor
IndexDistalJoint Poseringskurva
IndexTips Poseringskurva
MiddleMetacarpal Poseringskurva
MiddleKnuckle Poseringskurva
MiddleMiddleJoint Poseringskurva
MiddleDistalJoint Poseringskurva
MiddleTip Poseringskurva
RingMetacarpal Poseringskurva
RingKnuckle Poseringskurva
RingMiddleJoint Poseringskurva
RingDistalJoint Poseringskurva
RingTip Poseringskurva
PinkyMetacarpal Poseringskurva
PinkyKnuckle Poseringskurva
PinkyMiddleJoint Poseringskurva
PinkyDistalJoint Poseringskurva
PinkyTip Poseringskurva

Attitydkurvan

Attitydkurvan är en sekvens med 3 animeringskurvor för positionsvektorn, följt av 4 animeringskurvor för rotationsvektorn.

Avsnitt Typ
Position X Flyttalkurva
Position Y Flyttalkurva
Position Z Flyttalkurva
Rotation X Flyttalkurva
Rotation Y Flyttalkurva
Rotation Z Flyttalkurva
Rotation W Flyttalkurva

Ray-kurvor

Ray-kurvor är en sekvens med 3 animeringskurvor för ursprungsvektorn, följt av 3 animeringskurvan för riktningsvektorn.

Avsnitt Typ
Ursprung X Flyttalkurva
Ursprung Y Flyttalkurva
Ursprung Z Flyttalkurva
Riktning X Flyttalkurva
Riktning Y Flyttalkurva
Riktning Z Flyttalkurva

Flyttalkurva

Flyttalskurvor är fullständigt fledged Bézier-kurvor med ett variabelt antal nyckelbildrutor. Varje nyckelbildruta lagrar en tid och ett kurvavärde, samt tangenter och vikter på vänster och höger sida av varje nyckelbildruta.

Avsnitt Typ
Förinslutningsläge Int32, Wrap Mode
Efter omslutningsläge Int32, Wrap Mode
Antal nyckeldatorer Int32
Nyckelrutor Flyttal – nyckelram

Flyttal – nyckelram

En flyttalsnyckelram lagrar tangent- och viktvärden tillsammans med grundläggande tid och värde.

Avsnitt Typ
Tid Float32
Värde Float32
InTangent Float32
OutTangent Float32
InWeight Float32
OutWeight Float32
WeightedMode Int32, viktat läge

Boolesk kurva

Booleska kurvor är enkla sekvenser av på/av-värden. På varje nyckelbild vänder kurvans värde omedelbart.

Avsnitt Typ
Förinslutningsläge Int32, Wrap Mode
Efter omslutningsläge Int32, Wrap Mode
Antal nyckeldatorer Int32
Nyckelrutor Boolesk nyckelbild

Boolesk nyckelbild

En boolesk nyckelbild lagrar bara en tid och ett värde.

Avsnitt Typ
Tid Float32
Värde Float32

Wrap-läge

Semantiken för lägena Pre- och Post-Wrap följer Unity WrapMode-definitionen. De är en kombination av följande bitar:

Värde Innebörd
0 Standard: Läser det standardinställda upprepningslä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 tillbaka mellan början och slutet.
8 På så vis: Spelar upp animeringen. När den når slutet fortsätter den att spela upp den sista bildrutan och slutar aldrig spela upp.

Viktat läge

Semantiken för viktat läge följer Unity WeightedMode-definitionen.

Värde Innebörd
0 Ingen: Exkludera både inWeight och outWeight vid beräkning av kurvasegment.
1 I: Inkludera inWeight vid beräkning av föregående kurva.
2 Out: Ta med outWeight vid beräkning av nästa kurva.
3 Båda: Inkludera inWeight och outWeight vid beräkning av kurvasegment.