Formato de archivo de animación de entrada: MRTK2
Estructura general
El archivo binario de animación de entrada comienza con un número mágico entero de 64 bits. El valor de este número en notación hexadecimal es 0x6a8faf6e0f9e42c6
y se puede usar para identificar archivos de animación de entrada válidos.
Los ocho bytes siguientes son dos valores int32 que declaran el número de versión principal y secundaria del archivo.
El resto del archivo se ocupa de los datos de animación, que pueden cambiar entre números de versión.
Sección | Tipo |
---|---|
Número mágico | Int64 |
Número de versión principal | Int32 |
Número de versión secundaria | Int32 |
Datos de animación | consulte la sección de versión |
Versión 1.1
Los datos de animación de entrada constan de tres valores booleanos que indican si la animación contiene datos camera, Hand y Eye Gaze, seguidos de una secuencia de curvas de animación. Las curvas presentes dependen de los valores de estos booleanos. Cada curva puede tener un número diferente de fotogramas clave.
Sección | Tipo | Notas |
---|---|---|
Tiene posición de cámara | Boolean | |
Tiene datos de mano | Boolean | |
Tiene mirada con los ojos | Boolean | |
Cámara | Curvas de posición | Solo si Tiene posición de cámara es true |
Hand Tracked Left | Curva booleana | Solo si tiene datos de mano es true |
Mano a la derecha con seguimiento | Curva booleana | Solo si tiene datos de mano es true |
Desprendiendo mano a la izquierda | Curva booleana | Solo si tiene datos de mano es true |
Pellizcar a la derecha | Curva booleana | Solo si tiene datos de mano es true |
Articulaciones de mano izquierda | Curvas de posición conjunta | Solo si tiene datos de mano es true |
Articulaciones de la mano derecha | Curvas de posición conjunta | Solo si tiene datos de mano es true |
Control ocular | Curvas ray] | Solo si la mirada con los ojos es verdadera |
Versión 1.0
Los datos de animación de entrada constan de una secuencia de curvas de animación. El número y el significado de las curvas de animación son fijos, pero cada curva puede tener un número diferente de fotogramas clave.
Sección | Tipo |
---|---|
Cámara | Curvas de posición |
Hand Tracked Left | Curva booleana |
Mano a la derecha con seguimiento | Curva booleana |
Desprendiendo mano a la izquierda | Curva booleana |
Pellizcar a la derecha | Curva booleana |
Articulaciones de mano izquierda | Curvas de posición conjunta |
Articulaciones de la mano derecha | Curvas de posición conjunta |
Curvas de posición de articulación
Para cada mano se almacena una secuencia de curvas de animación conjunta. El número de articulaciones es fijo y se almacena un conjunto de curvas de posición para cada articulación.
Sección | Tipo |
---|---|
None | Curvas de posición |
Muñeca | Curvas de posición |
Palm | Curvas de posición |
ThumbMetacarpalJoint | Curvas de posición |
ThumbProximalJoint | Curvas de posición |
ThumbDistalJoint | Curvas de posición |
Información sobre pulgar | Curvas de posición |
IndexMetacarpal | Curvas de posición |
IndexKnuckle | Curvas de posición |
IndexMiddleJoint | Curvas de posición |
IndexDistalJoint | Posar curvas |
IndexTip | Posar curvas |
MiddleMetacarpal | Posar curvas |
MiddleKnuckle | Posar curvas |
MiddleMiddleJoint | Posar curvas |
MiddleDistalJoint | Posar curvas |
Información intermedia | Posar curvas |
RingMetacarpal | Posar curvas |
RingKnuckle | Posar curvas |
RingMiddleJoint | Posar curvas |
RingDistalJoint | Posar curvas |
Información sobre anillos | Posar curvas |
PinkyMetacarpal | Posar curvas |
PinkyKnuckle | Posar curvas |
PinkyMiddleJoint | Posar curvas |
PinkyDistalJoint | Posar curvas |
PinkyTip | Posar curvas |
Curvas de posición
Las curvas de posición son una secuencia de 3 curvas de animación para el vector de posición, seguidas de 4 curvas de animación para el cuaternión de rotación.
Sección | Tipo |
---|---|
Posición X | Curva float |
Posición Y | Curva float |
Posición Z | Curva float |
Rotación X | Curva float |
Rotación Y | Curva float |
Rotación Z | Curva float |
Rotación W | Curva float |
Curvas ray
Las curvas ray son una secuencia de 3 curvas de animación para el vector de origen, seguidas de 3 curvas de animación para el vector de dirección.
Sección | Tipo |
---|---|
Origen X | Curva float |
Origen Y | Curva float |
Origen Z | Curva float |
Dirección X | Curva float |
Dirección Y | Curva float |
Dirección Z | Curva float |
Curva float
Las curvas de punto flotante son curvas Bézier totalmente con un número variable de fotogramas clave. Cada fotograma clave almacena una hora y un valor de curva, así como tangentes y pesos en el lado izquierdo y derecho de cada fotograma clave.
Sección | Tipo |
---|---|
Modo de ajuste previo | Int32, Modo de ajuste |
Modo posterior al ajuste | Int32, Modo de ajuste |
Número de fotogramas clave | Int32 |
Fotogramas clave | Fotograma clave float |
Fotograma clave float
Un fotograma clave float almacena valores tangentes y de peso junto con la hora y el valor básicos.
Sección | Tipo |
---|---|
Time | Float32 |
Valor | Float32 |
InTangent | Float32 |
OutTangent | Float32 |
InWeight | Float32 |
OutWeight | Float32 |
WeightedMode | Int32, modo ponderado |
Curva booleana
Las curvas booleanas son secuencias simples de valores on/off. En cada fotograma clave, el valor de la curva se voltea inmediatamente.
Sección | Tipo |
---|---|
Modo de ajuste previo | Int32, Modo de ajuste |
Modo posterior al ajuste | Int32, Modo de ajuste |
Número de fotogramas clave | Int32 |
Fotogramas clave | Fotograma clave booleano |
Fotograma clave booleano
Un fotograma clave booleano solo almacena una hora y un valor.
Sección | Tipo |
---|---|
Time | Float32 |
Valor | Float32 |
Modo de ajuste
La semántica de los modos de ajuste previo y posterior sigue la definición wrapMode de Unity . Son una combinación de los bits siguientes:
Valor | Significado |
---|---|
0 | Valor predeterminado: lee el modo de repetición predeterminado configurado más arriba. |
1 | Una vez: cuando el tiempo llega al final del clip de animación, el clip detendrá automáticamente la reproducción y el tiempo se restablecerá al principio del clip. |
2 | Bucle: cuando el tiempo llegue al final del clip de animación, el tiempo continuará al principio. |
4 | PingPong: cuando el tiempo llegue al final del clip de animación, el tiempo hará ping pong entre el principio y el final. |
8 | ClampForever: reproduce la animación. Cuando llegue al final, seguirá jugando el último fotograma y nunca dejará de jugar. |
Modo ponderado
La semántica del modo Ponderado sigue la definición de Unity WeightedMode .
Valor | Significado |
---|---|
0 | Ninguno: excluya tanto inWeight como outWeight al calcular segmentos de curva. |
1 | In: Incluya inWeight al calcular el segmento de curva anterior. |
2 | Out: incluya outWeight al calcular el siguiente segmento de curva. |
3 | Ambos: incluya inWeight y outWeight al calcular segmentos de curva. |