Spécification de format de fichier binaire d’animation d’entrée

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 qui déclarent le numéro de version principale et secondaire du fichier.

Le reste du fichier est pris en considération par les données d’animation, qui peuvent changer entre les numéros de version.

Section Type
Nombre magique Int64
Numéro de version principale Int32
Numéro de version mineure 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 de pointage d’appareil photo, de main et oculaire, suivies d’une séquence de courbes d’animation. Les courbes présentes dépendent des valeurs de ces valeurs booléennes. Chaque courbe peut avoir un nombre différent d’images clés.

Section Type Notes
A une photo Boolean
Contient des données de la main Boolean
A un regard oculaire Boolean
Appareil photo Créer des courbes Uniquement en cas de pose de l’appareil photo
Suivi de la main à gauche Courbe booléenne Uniquement si les données de la main ont la valeur true
Suivi à droite Courbe booléenne Uniquement si les données de la main ont la valeur true
Pincer la main à gauche Courbe booléenne Uniquement si les données de la main ont la valeur true
Pincement manuel Courbe booléenne Uniquement si les données de la main ont la valeur true
Jointures à gauche Courbes de pose conjointe Uniquement si les données de la main ont la valeur true
Jointures manuelles droite Courbes de pose conjointe Uniquement si les données de la main ont la valeur true
Point de regard Courbes de rayon] Uniquement si a un point de regard visuel 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 Créer des courbes
Suivi de la main à gauche Courbe booléenne
Suivi à droite Courbe booléenne
Pincer la main à gauche Courbe booléenne
Pincement manuel Courbe booléenne
Jointures à gauche Courbes de pose conjointe
Jointures manuelles droite Courbes de pose conjointe

Courbes de pose conjointe

Pour chaque main, une séquence de courbes d’animation communes est stockée. Le nombre de jointures est fixe et un ensemble de courbes de pose est stocké pour chaque jointure.

Section Type
None Créer des courbes
Du poignet Créer des courbes
Palm Créer des courbes
ThumbMetacarpalJoint Créer des courbes
ThumbProximalJoint Créer des courbes
ThumbDistalJoint Créer des courbes
ThumbTip Créer des courbes
IndexMetacarpal Créer des courbes
IndexKnuckle Créer des courbes
IndexMiddleJoint Créer des courbes
IndexDistalJoint Créer des courbes
IndexTip Créer des courbes
MiddleMetacarpal Créer des courbes
MiddleKnuckle Créer des courbes
MiddleMiddleJoint Créer des courbes
MiddleDistalJoint Créer des courbes
MiddleTip Créer des courbes
RingMetacarpal Créer des courbes
RingKnuckle Créer des courbes
RingMiddleJoint Créer des courbes
RingDistalJoint Créer des courbes
RingTip Créer des courbes
PinkyMetacarpal Créer des courbes
PinkyKnuckle Créer des courbes
PinkyMiddleJoint Créer des courbes
PinkyDistalJoint Créer des courbes
PinkyTip Créer des courbes

Créer des courbes

Les courbes de pose sont une séquence de 3 courbes d’animation pour le vecteur de position, suivie de 4 courbes d’animation pour le Quaternion de rotation.

Section Type
Position X Courbe flottante
Position Y Courbe flottante
Position Z Courbe flottante
Rotation X Courbe flottante
Rotation Y Courbe flottante
Rotation Z Courbe flottante
Rotation W Courbe flottante

Courbes de rayon

Les courbes de rayon sont une séquence de 3 courbes d’animation pour le vecteur d’origine, suivie de 3 courbes d’animation pour le vecteur de direction.

Section Type
Origine X Courbe flottante
Origine Y Courbe flottante
Origine Z Courbe flottante
Direction X Courbe flottante
Direction Y Courbe flottante
Direction Z Courbe flottante

Courbe flottante

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 un temps et une valeur de courbe, ainsi que des tangentes et des poids à gauche et à droite de chaque image clé.

Section Type
Mode de pré-habillage Int32, mode habillage
Mode après retour à la ligne Int32, mode habillage
Nombre d’images clés Int32
Images clés Image clé à virgule flottante

Image clé à virgule flottante

Une image clé en virgule flottante stocke les valeurs de tangente et de poids en même temps que la valeur et l’heure de base.

Section Type
Heure Float32
Valeur Float32
Intangente Float32
En tangente Float32
Inpoids Float32
Poids Float32
WeightedMode 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 est retournée immédiatement.

Section Type
Mode de pré-habillage Int32, mode habillage
Mode après retour à la ligne Int32, mode habillage
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
Heure Float32
Valeur Float32

Mode habillage

La sémantique des modes pré-et après retour à la ligne suit la définition Unity WrapMode . Il s’agit d’une combinaison des bits suivants :

Valeur Signification
0 Default : lit le mode de répétition par défaut défini à un niveau supérieur.
1 Une fois : lorsque le temps atteint la fin du clip d’animation, le clip s’arrête automatiquement et l’heure est réinitialisée au début du clip.
2 Boucle : quand le temps atteint la fin du clip d’animation, l’heure se poursuit au début.
4 Essai pingpong : lorsque le temps atteint la fin du clip d’animation, l’heure effectue un test ping de la minuterie entre le début et la fin.
8 ClampForever : lit l’animation. Lorsqu’il atteint la fin, il continue de reproduire la dernière image et ne s’arrête jamais.

Mode pondéré

La sémantique du mode pondéré suit la définition WeightedMode Unity .

Valeur Signification
0 None : exclure les deux types d’inpoids ou de poids lors du calcul des segments de courbe.
1 Dans : inclure inpoids lors du calcul du segment de courbe précédent.
2 Out : inclure le poids pour le calcul du segment de courbe suivant.
3 Les deux : incluent l’inpoids et le poids pour le calcul des segments de courbe.