Delen via


Bestandsindeling voor invoeranimatie — MRTK2

Algemene structuur

Het binaire bestand met invoeranimatie begint met een magisch getal van 64 bits. De waarde van dit getal in de hexadecimale notatie is 0x6a8faf6e0f9e42c6 en kan worden gebruikt om geldige invoeranimatiebestanden te identificeren.

De volgende acht bytes zijn twee Int32-waarden die het primaire en secundaire versienummer van het bestand aangeven.

De rest van het bestand wordt opgenomen door animatiegegevens, die tussen versienummers kunnen veranderen.

Sectie Type
Magisch getal Int64
Primair versienummer Int32
Secundair versienummer Int32
Animatiegegevens zie versiesectie

Versie 1.1

De invoeranimatiegegevens bestaan uit drie booleaanse waarden die aangeven of de animatie Camera-, Hand- en Eye Gaze-gegevens bevat, gevolgd door een reeks animatiecurven. De aanwezige curven zijn afhankelijk van de waarden van deze booleaanse waarden. Elke curve kan een ander aantal hoofdframes hebben.

Sectie Type Opmerkingen
Heeft camerahouding Booleaans
Heeft handgegevens Booleaans
Heeft ogen kijken Booleaans
Camera Houdingscurven Alleen als heeft camerahouding waar is
Met de hand bijgehouden links Booleaanse curve Alleen als Heeft Handgegevens waar is
Hand bijgehouden rechts Booleaanse curve Alleen als Heeft Handgegevens waar is
Hand die naar links knijpt Booleaanse curve Alleen als Heeft Handgegevens waar is
Hand die rechts knijpt Booleaanse curve Alleen als Heeft Handgegevens waar is
Linkse handgewrichten Gemeenschappelijke houdingscurven Alleen als Heeft Handgegevens waar is
Handgewrichten rechts Gemeenschappelijke houdingscurven Alleen als Heeft Handgegevens waar is
Ogen staren Straalcurven] Alleen als Ogen kijken waar is

Versie 1.0

De invoeranimatiegegevens bestaan uit een reeks animatiecurven. Het aantal en de betekenis van animatiecurven zijn vast, maar elke curve kan een ander aantal hoofdframes hebben.

Sectie Type
Camera Houdingscurven
Met de hand bijgehouden links Booleaanse curve
Hand bijgehouden rechts Booleaanse curve
Hand die naar links knijpt Booleaanse curve
Hand die rechts knijpt Booleaanse curve
Linkse handgewrichten Gemeenschappelijke houdingscurven
Handgewrichten rechts Gemeenschappelijke houdingscurven

Gemeenschappelijke houdingscurven

Voor elke hand wordt een reeks gezamenlijke animatiecurven opgeslagen. Het aantal gewrichten is vast en er wordt een set houdingscurven opgeslagen voor elke verbinding.

Sectie Type
Geen Houdingscurven
Pols Houdingscurven
Palm Houdingscurven
ThumbMetacarpalJoint Houdingscurven
ThumbProximalJoint Houdingscurven
ThumbDistalJoint Houdingscurven
Duiminfo Houdingscurven
IndexMetacarpal Houdingscurven
IndexKnuckle Houdingscurven
IndexMiddleJoint Houdingscurven
IndexDistalJoint Houdingscurven
Indextip Houdingscurven
MiddleMetacarpal Houdingscurven
MiddleKnuckle Houdingscurven
MiddleMiddleJoint Houdingscurven
MiddleDistalJoint Houdingscurven
MiddleTip Houdingscurven
RingMetacarpal Houdingscurven
RingKnuckle Houdingscurven
RingMiddleJoint Houdingscurven
RingDistalJoint Houdingscurven
Ringtip Houdingscurven
PinkyMetacarpal Houdingscurven
PinkyKnuckle Houdingscurven
PinkyMiddleJoint Houdingscurven
PinkyDistalJoint Houdingscurven
PinkyTip Houdingscurven

Houdingscurven

Pose-curven zijn een reeks van 3 animatiecurven voor de positievector, gevolgd door 4 animatiecurven voor de rotatie-quarternion.

Sectie Type
Positie X Zwevende curve
Positie Y Zwevende curve
Positie Z Zwevende curve
Draaiing X Zwevende curve
Draaiing Y Zwevende curve
Draaiing Z Zwevende curve
Draaiing W Zwevende curve

Straalcurven

Ray-curven zijn een reeks van 3 animatiecurven voor de oorsprongvector, gevolgd door 3 animatiecurven voor de richtingsvector.

Sectie Type
Oorsprong X Zwevende curve
Oorsprong Y Zwevende curve
Oorsprong Z Zwevende curve
Richting X Zwevende curve
Richting Y Zwevende curve
Richting Z Zwevende curve

Float-curve

Drijvende-kommacurven zijn volwaardige Bézier-curven met een variabel aantal keyframes. Elk keyframe slaat een tijd- en curvewaarde op, evenals tangens en gewichten aan de linker- en rechterkant van elk sleutelframe.

Sectie Type
Modus Voorterugloop Int32, terugloopmodus
Modus na terugloop Int32, terugloopmodus
Aantal hoofdframes Int32
Hoofdframes Float Keyframe

Float-keyframe

Een float-keyframe slaat tangens- en gewichtswaarden op naast de basistijd en -waarde.

Sectie Type
Tijd Float32
Waarde Float32
InTangent Float32
OutTangent Float32
InWeight Float32
OutWeight Float32
WeightedMode Int32, Gewogen modus

Booleaanse curve

Booleaanse curven zijn eenvoudige reeksen van aan/uit-waarden. Op elk keyframe wordt de waarde van de curve onmiddellijk gespiegeld.

Sectie Type
Modus Voorterugloop Int32, terugloopmodus
Modus na terugloop Int32, terugloopmodus
Aantal hoofdframes Int32
Hoofdframes Booleaanse sleutelframe

Booleaanse sleutelframe

In een Booleaanse sleutelframe worden alleen een tijd en waarde opgeslagen.

Sectie Type
Tijd Float32
Waarde Float32

Terugloopmodus

De semantiek van de modi Pre- en Post-Wrap volgt de Unity WrapMode-definitie . Ze zijn een combinatie van de volgende bits:

Waarde Betekenis
0 Standaard: leest de standaard herhaalmodus die hoger is ingesteld.
1 Eenmaal: wanneer de tijd het einde van de animatieclip bereikt, stopt de clip automatisch met afspelen en wordt de tijd opnieuw ingesteld op het begin van de clip.
2 Lus: wanneer de tijd het einde van de animatieclip bereikt, gaat de tijd verder aan het begin.
4 PingPong: Wanneer de tijd het einde van de animatieclip bereikt, pingt de tijd terug tussen begin en einde.
8 ClampForever: hiermee wordt de animatie afgespeeld. Wanneer het einde is bereikt, blijft het laatste frame afspelen en stopt het nooit met afspelen.

Gewogen modus

De semantiek van de gewogen modus volgt de Unity WeightedMode-definitie .

Waarde Betekenis
0 Geen: sluit zowel inWeight als outWeight uit bij het berekenen van curvesegmenten.
1 In: Neem inWeight op bij het berekenen van het vorige curvesegment.
2 Out: neem outWeight op bij het berekenen van het volgende curvesegment.
3 Beide: neem inWeight en outWeight op bij het berekenen van curvesegmenten.