Formato di file di animazione di input - MRTK2
Struttura complessiva
Il file binario dell'animazione di input inizia con un numero magic intero a 64 bit. Il valore di questo numero nella notazione esadecimale è 0x6a8faf6e0f9e42c6
e può essere usato per identificare i file di animazione di input validi.
Gli otto byte successivi sono due valori Int32 che dichiarano il numero di versione principale e secondario del file.
Il resto del file viene occupato dai dati di animazione, che possono cambiare tra i numeri di versione.
Sezione | Tipo |
---|---|
Numero magico | Int64 |
Numero di versione principale | Int32 |
Numero di versione secondaria | Int32 |
Dati animazione | vedere la sezione version |
Versione 1.1
I dati di animazione di input sono costituiti da tre valori booleani che indicano se l'animazione contiene dati fotocamera, mano e sguardo fisso, seguiti da una sequenza di curve di animazione. Le curve presenti dipendono dai valori di questi valori booleani. Ogni curva può avere un numero diverso di fotogrammi chiave.
Sezione | Type | Note |
---|---|---|
Ha la posa della fotocamera | Boolean | |
Contiene i dati della mano | Boolean | |
Ha sguardo fisso | Boolean | |
Fotocamera | Curve pose | Solo se has camera pose is true |
Mano tracciata a sinistra | Curva booleana | Solo se i dati della mano sono true |
Mano tracciata a destra | Curva booleana | Solo se i dati della mano sono true |
Avvicinamento delle mani a sinistra | Curva booleana | Solo se i dati della mano sono true |
Avvicinamento delle mani a destra | Curva booleana | Solo se i dati della mano sono true |
Articolazioni a mano sinistra | Curve di posa congiunta | Solo se i dati della mano sono true |
Articolazioni della mano destra | Curve di posa congiunta | Solo se i dati della mano sono true |
Sguardo fisso | Curve di raggio] | Solo se ha sguardo fisso è true |
Versione 1.0
I dati di animazione di input sono costituiti da una sequenza di curve di animazione. Il numero e il significato delle curve di animazione sono fissi, ma ogni curva può avere un numero diverso di fotogrammi chiave.
Sezione | Tipo |
---|---|
Fotocamera | Curve pose |
Mano tracciata a sinistra | Curva booleana |
Mano tracciata a destra | Curva booleana |
Avvicinamento delle mani a sinistra | Curva booleana |
Avvicinamento delle mani a destra | Curva booleana |
Articolazioni a mano sinistra | Curve di posa congiunta |
Articolazioni della mano destra | Curve di posa congiunta |
Curve di posa congiunta
Per ogni mano viene archiviata una sequenza di curve di animazione congiunta. Il numero di articolazioni è fisso e un set di curve di posa viene archiviato per ogni articolazione.
Sezione | Tipo |
---|---|
Nessuno | Curve pose |
Polso | Curve pose |
Palm | Curve pose |
ThumbMetacarpalJoint | Curve pose |
ThumbProximalJoint | Curve pose |
ThumbDistalJoint | Curve pose |
Descrizione personale | Curve pose |
IndexMetacarpal | Curve pose |
IndexKnuckle | Curve pose |
IndexMiddleJoint | Curve pose |
IndexDistalJoint | Curve pose |
Descrizione indice | Curve pose |
MiddleMetacarpal | Curve pose |
MiddleKnuckle | Curve pose |
MiddleMiddleJoint | Curve pose |
MiddleDistalJoint | Curve pose |
Descrizione centrale | Curve pose |
RingMetacarpal | Curve pose |
RingKnuckle | Curve pose |
RingMiddleJoint | Curve pose |
RingDistalJoint | Curve pose |
Descrizione circolare | Curve pose |
PinkyMetacarpal | Curve pose |
PinkyKnuckle | Curve pose |
PinkyMiddleJoint | Curve pose |
PinkyDistalJoint | Curve pose |
PinkyTip | Curve pose |
Curve di posa
Le curve di posa sono una sequenza di 3 curve di animazione per il vettore di posizione, seguite da 4 curve di animazione per il quaternione di rotazione.
Sezione | Tipo |
---|---|
Posizione X | Curva float |
Posizione Y | Curva float |
Posizione Z | Curva float |
Rotazione X | Curva float |
Rotazione Y | Curva float |
Rotazione Z | Curva float |
Rotazione W | Curva float |
Curve di raggio
Le curve di raggio sono una sequenza di 3 curve di animazione per il vettore di origine, seguite da 3 curve di animazione per il vettore di direzione.
Sezione | Tipo |
---|---|
Origine X | Curva float |
Origine Y | Curva float |
Origine Z | Curva float |
Direzione X | Curva float |
Direzione Y | Curva float |
Direzione Z | Curva float |
Curva float
Le curve a virgola mobile sono curve bézier completamente complete con un numero variabile di fotogrammi chiave. Ogni fotogramma chiave archivia un valore di ora e una curva, nonché tangenti e pesi sul lato sinistro e destro di ogni fotogramma chiave.
Sezione | Tipo |
---|---|
Modalità pre-wrapping | Int32, modalità a capo |
Modalità post-wrapping | Int32, modalità a capo |
Numero di fotogrammi chiave | Int32 |
Fotogrammi chiave | Fotogramma chiave float |
Fotogramma chiave float
Un fotogramma chiave float archivia i valori di tangente e peso insieme al tempo e al valore di base.
Sezione | Tipo |
---|---|
Ora | Float32 |
Valore | Float32 |
InTangent | Float32 |
OutTangent | Float32 |
InWeight | Float32 |
OutWeight | Float32 |
WeightedMode | Int32, modalità ponderata |
Curva booleana
Le curve booleane sono sequenze semplici di valori on/off. In ogni fotogramma chiave il valore della curva si capovolge immediatamente.
Sezione | Tipo |
---|---|
Modalità pre-wrapping | Int32, modalità a capo |
Modalità post-wrapping | Int32, modalità a capo |
Numero di fotogrammi chiave | Int32 |
Fotogrammi chiave | Fotogramma chiave booleano |
Fotogramma chiave booleano
Un fotogramma chiave booleano archivia solo un valore e un'ora.
Sezione | Tipo |
---|---|
Ora | Float32 |
Valore | Float32 |
Modalità di wrapping
La semantica delle modalità Pre-e Post-Wrap segue la definizione WrapMode di Unity . Sono una combinazione dei bit seguenti:
Valore | Significato |
---|---|
0 | Impostazione predefinita: legge la modalità di ripetizione predefinita impostata più in alto. |
1 | Una volta: quando l'ora raggiunge la fine della clip di animazione, il clip smetterà automaticamente di riprodurre e il tempo verrà reimpostato all'inizio della clip. |
2 | Ciclo: quando l'ora raggiunge la fine della clip di animazione, l'ora continuerà all'inizio. |
4 | PingPong: quando l'ora raggiunge la fine della clip di animazione, il tempo ping pong tra l'inizio e la fine. |
8 | ClampForever: riproduce l'animazione. Quando raggiunge la fine, continuerà a riprodurre l'ultimo fotogramma e non smetterà mai di giocare. |
Modalità ponderata
La semantica della modalità ponderata segue la definizione WeightedMode di Unity .
Valore | Significato |
---|---|
0 | Nessuno: escludere sia inWeight che outWeight durante il calcolo dei segmenti della curva. |
1 | In: includere inWeight durante il calcolo del segmento di curva precedente. |
2 | Out: includere outWeight durante il calcolo del segmento di curva successivo. |
3 | Entrambi: includere inWeight e outWeight durante il calcolo dei segmenti della curva. |