Format de fichier d’animation d’entrée — MRTK2
Structure globale
Le fichier binaire d’animation d’entrée commence par un nombre magique entier 64 bits. La valeur de ce nombre en notation hexadécimale est 0x6a8faf6e0f9e42c6
et peut être utilisée pour identifier les fichiers d’animation d’entrée valides.
Les huit octets suivants sont deux valeurs Int32 déclarant le numéro de version principale et secondaire du fichier.
Le reste du fichier est occupé par les données d’animation, qui peuvent changer d’un numéro de version à l’autre.
Section | Type |
---|---|
Nombre magique | Int64 |
Numéro de version principale | Int32 |
Numéro de version secondaire | Int32 |
Données d’animation | voir la section version |
Version 1.1
Les données d’animation d’entrée se composent de trois valeurs booléennes qui indiquent si l’animation contient des données Caméra, Main et Regard, suivies d’une séquence de courbes d’animation. Les courbes présentes dépendent des valeurs de ces booléens. Chaque courbe peut avoir un nombre différent d’images clés.
Section | Type | Notes |
---|---|---|
A la pose de la caméra | Boolean | |
A des données manuelles | Boolean | |
A le regard | Boolean | |
Appareil photo | Courbes de pose | Uniquement si la pose de l’appareil photo est vraie |
Suivi à la main gauche | Courbe booléenne | Uniquement si les données de la main ont la valeur true |
Suivi à la main droite | Courbe booléenne | Uniquement si les données de la main ont la valeur true |
Pincement à gauche de la main | Courbe booléenne | Uniquement si les données de la main ont la valeur true |
Pincement de la main vers la droite | Courbe booléenne | Uniquement si les données de la main ont la valeur true |
Articulations de la main gauche | Courbes de pose conjointes | Uniquement si les données de la main ont la valeur true |
Articulations de la main vers la droite | Courbes de pose conjointes | Uniquement si les données de la main ont la valeur true |
Regard | Courbes de rayon] | Seulement si a le regard est vrai |
Version 1.0
Les données d’animation d’entrée se composent d’une séquence de courbes d’animation. Le nombre et la signification des courbes d’animation sont fixes, mais chaque courbe peut avoir un nombre différent d’images clés.
Section | Type |
---|---|
Appareil photo | Courbes de pose |
Suivi à la main gauche | Courbe booléenne |
Suivi à la main droite | Courbe booléenne |
Pincement à gauche de la main | Courbe booléenne |
Pincement de la main vers la droite | Courbe booléenne |
Articulations de la main gauche | Courbes de pose conjointes |
Articulations de la main vers la droite | Courbes de pose conjointes |
Courbes de pose conjointes
Pour chaque main, une séquence de courbes d’animation conjointes est stockée. Le nombre d’articulations est fixe et un ensemble de courbes de pose est stocké pour chaque joint.
Section | Type |
---|---|
Aucune | Courbes de pose |
Poignet | Courbes de pose |
Palm | Courbes de pose |
ThumbMetacarpalJoint | Courbes de pose |
ThumbProximalJoint | Courbes de pose |
ThumbDistalJoint | Courbes de pose |
Info-bulle | Courbes de pose |
IndexMetacarpal | Courbes de pose |
IndexKnuckle | Courbes de pose |
IndexMiddleJoint | Courbes de pose |
IndexDistalJoint | Courbes de pose |
IndexTip | Courbes de pose |
MiddleMetacarpal | Courbes de pose |
MiddleKnuckle | Courbes de pose |
MiddleMiddleJoint | Courbes de pose |
MiddleDistalJoint | Courbes de pose |
MiddleTip | Courbes de pose |
RingMetacarpal | Courbes de pose |
RingKnuckle | Courbes de pose |
RingMiddleJoint | Courbes de pose |
RingDistalJoint | Courbes de pose |
RingTip | Courbes de pose |
PinkyMetacarpal | Courbes de pose |
PinkyKnuckle | Courbes de pose |
PinkyMiddleJoint | Courbes de pose |
PinkyDistalJoint | Courbes de pose |
PinkyTip | Courbes de pose |
Courbes de pose
Les courbes de pose sont une séquence de 3 courbes d’animation pour le vecteur de position, suivies de 4 courbes d’animation pour le quaternion de rotation.
Section | Type |
---|---|
Position X | Courbe float |
Position Y | Courbe float |
Position Z | Courbe float |
Rotation X | Courbe float |
Rotation Y | Courbe float |
Rotation Z | Courbe float |
Rotation W | Courbe float |
Courbes de rayon
Les courbes de rayon sont une séquence de 3 courbes d’animation pour le vecteur d’origine, suivies de 3 courbes d’animation pour le vecteur directionnel.
Section | Type |
---|---|
Origine X | Courbe float |
Origine Y | Courbe float |
Origine Z | Courbe float |
Direction X | Courbe float |
Direction Y | Courbe float |
Direction Z | Courbe float |
Courbe float
Les courbes à virgule flottante sont des courbes de Bézier à part entière avec un nombre variable d’images clés. Chaque image clé stocke une heure et une valeur de courbe, ainsi que des tangentes et des pondérations sur les côtés gauche et droit de chaque image clé.
Section | Type |
---|---|
Mode Pré-habillage | Int32, mode Wrap |
Mode post-habillage | Int32, mode Wrap |
Nombre d’images clés | Int32 |
Images clés | Image clé float |
Image clé float
Une image clé float stocke les valeurs de tangente et de pondération, ainsi que l’heure et la valeur de base.
Section | Type |
---|---|
Temps | Float32 |
Valeur | Float32 |
InTangent | Float32 |
OutTangent | Float32 |
InWeight | Float32 |
Poids hors poids | Float32 |
Mode pondéré | Int32, mode pondéré |
Courbe booléenne
Les courbes booléennes sont des séquences simples de valeurs on/off. Sur chaque image clé, la valeur de la courbe bascule immédiatement.
Section | Type |
---|---|
Mode Pré-habillage | Int32, mode Wrap |
Mode post-habillage | Int32, mode Wrap |
Nombre d’images clés | Int32 |
Images clés | Image clé booléenne |
Image clé booléenne
Une image clé booléenne stocke uniquement une heure et une valeur.
Section | Type |
---|---|
Temps | Float32 |
Valeur | Float32 |
Mode Wrap
La sémantique des modes Pré et Post-Wrap suit la définition Unity WrapMode . Il s’agit d’une combinaison des bits suivants :
Valeur | Signification |
---|---|
0 | Par défaut : lit le mode de répétition par défaut défini plus haut. |
1 | Une fois : lorsque l’heure atteint la fin du clip d’animation, la lecture du clip s’arrête automatiquement et l’heure est réinitialisée au début du clip. |
2 | Boucle : lorsque l’heure atteint la fin du clip d’animation, l’heure continue au début. |
4 | PingPong : lorsque l’heure atteint la fin du clip d’animation, le temps de ping pong est de retour entre le début et la fin. |
8 | ClampForever : lit l’animation. Lorsqu’il atteint la fin, il continuera à jouer le dernier cadre et ne cessera jamais de jouer. |
Mode pondéré
La sémantique du mode pondéré suit la définition Unity WeightedMode .
Valeur | Signification |
---|---|
0 | Aucun : excluez inWeight ou outWeight lors du calcul des segments de courbe. |
1 | Dans : incluez inWeight lors du calcul du segment de courbe précédent. |
2 | Out : incluez outWeight lors du calcul du segment de courbe suivant. |
3 | Les deux : incluez inWeight et outWeight lors du calcul des segments de courbe. |