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. |