Formato de arquivo de animação de entrada — MRTK2
Estrutura geral
O arquivo binário de animação de entrada começa com um número mágico inteiro de 64 bits. O valor desse número na notação hexadecimal é 0x6a8faf6e0f9e42c6
e pode ser usado para identificar arquivos de animação de entrada válidos.
Os próximos oito bytes são dois valores Int32 declarando o número de versão principal e secundária do arquivo.
O restante do arquivo é usado por dados de animação, que podem ser alterados entre os números de versão.
Seção | Type |
---|---|
Número Mágico | Int64 |
Número da versão principal | Int32 |
Número de versão secundária | Int32 |
Dados de animação | consulte a seção de versão |
Versão 1.1
Os dados de animação de entrada consistem em três valores boolianos que indicam se a animação contém dados de Câmera, Mão e Foco Ocular, seguidos por uma sequência de curvas de animação. As curvas presentes dependem dos valores desses boolianos. Cada curva pode ter um número diferente de quadros-chave.
Seção | Type | Observações |
---|---|---|
Tem pose de câmera | Boolean | |
Tem dados de mão | Boolean | |
Tem foco nos olhos | Boolean | |
Câmera | Curvas de Pose | Somente se a Pose da Câmera for verdadeira |
Mão rastreada à esquerda | Curva booliana | Somente se Has Hand Data for true |
Acompanhamento manual à direita | Curva booliana | Somente se Has Hand Data for true |
Pinçando a mão para a esquerda | Curva booliana | Somente se Has Hand Data for true |
Pinçando a mão para a direita | Curva booliana | Somente se Has Hand Data for true |
Articulações de mão à esquerda | Curvas de Pose Conjunta | Somente se Has Hand Data for true |
Articulações das Mãos à Direita | Curvas de Pose Conjunta | Somente se Has Hand Data for true |
Olhar fixo | Curvas de Raio] | Somente se Has Eye Gaze for true |
Versão 1.0
Os dados de animação de entrada consistem em uma sequência de curvas de animação. O número e o significado das curvas de animação são fixos, mas cada curva pode ter um número diferente de quadros-chave.
Seção | Type |
---|---|
Câmera | Curvas de Pose |
Mão rastreada à esquerda | Curva booliana |
Acompanhamento manual à direita | Curva booliana |
Pinçando a mão para a esquerda | Curva booliana |
Pinçando a mão para a direita | Curva booliana |
Articulações de mão à esquerda | Curvas de Pose Conjunta |
Articulações das Mãos à Direita | Curvas de Pose Conjunta |
Curvas de pose conjunta
Para cada mão, uma sequência de curvas de animação conjunta é armazenada. O número de articulações é fixo e um conjunto de curvas de pose é armazenado para cada articulação.
Seção | Type |
---|---|
Nenhum | Curvas de Pose |
Pulso | Curvas de Pose |
Palm | Curvas de Pose |
ThumbMetacarpalJoint | Curvas de Pose |
ThumbProximalJoint | Curvas de Pose |
ThumbDistalJoint | Curvas de Pose |
Dica de Polegar | Curvas de Pose |
IndexMetacarpal | Curvas de Pose |
IndexKnuckle | Curvas de Pose |
IndexMiddleJoint | Curvas de Pose |
IndexDistalJoint | Curvas de Pose |
Dica de Índice | Curvas de Pose |
MiddleMetacarpal | Curvas de Pose |
MiddleKnuckle | Curvas de Pose |
MiddleMiddleJoint | Curvas de Pose |
MiddleDistalJoint | Curvas de Pose |
Dica Intermediária | Curvas de Pose |
RingMetacarpal | Curvas de Pose |
RingKnuckle | Curvas de Pose |
RingMiddleJoint | Curvas de Pose |
RingDistalJoint | Curvas de Pose |
RingTip | Curvas de Pose |
PinkyMetacarpal | Curvas de Pose |
PinkyKnuckle | Curvas de Pose |
PinkyMiddleJoint | Curvas de Pose |
PinkyDistalJoint | Curvas de Pose |
PinkyTip | Curvas de Pose |
Curvas de pose
As curvas de pose são uma sequência de três curvas de animação para o vetor de posição, seguidas por 4 curvas de animação para o quatérnio de rotação.
Seção | Type |
---|---|
Posição X | Curva Float |
Posição Y | Curva Float |
Posição Z | Curva Float |
Rotação X | Curva Float |
Rotação Y | Curva Float |
Rotação Z | Curva Float |
Rotação W | Curva Float |
Curvas de raio
As curvas de raio são uma sequência de três curvas de animação para o vetor de origem, seguidas por três curvas de animação para o vetor de direção.
Seção | Type |
---|---|
Origem X | Curva Float |
Origem Y | Curva Float |
Origem Z | Curva Float |
Direção X | Curva Float |
Direção Y | Curva Float |
Direção Z | Curva Float |
Curva float
As curvas de ponto flutuante são curvas Bézier completas com um número variável de quadros-chave. Cada quadro-chave armazena um tempo e um valor de curva, bem como tangentes e pesos no lado esquerdo e direito de cada quadro-chave.
Seção | Type |
---|---|
Modo pré-encapsulamento | Int32, Modo de Encapsulamento |
Modo pós-encapsulamento | Int32, Modo de Encapsulamento |
Número de quadros-chave | Int32 |
Quadros chave | Quadro-chave float |
Quadro-chave float
Um quadro-chave float armazena valores tangentes e de peso junto com o tempo e o valor básicos.
Seção | Type |
---|---|
Hora | Float32 |
Valor | Float32 |
InTangent | Float32 |
OutTangent | Float32 |
InWeight | Float32 |
OutWeight | Float32 |
WeightedMode | Int32, modo ponderado |
Curva booliana
As curvas boolianas são sequências simples de valores ativados/desativados. Em cada quadro-chave, o valor da curva é invertido imediatamente.
Seção | Type |
---|---|
Modo pré-encapsulamento | Int32, Modo de Encapsulamento |
Modo pós-encapsulamento | Int32, Modo de Encapsulamento |
Número de quadros-chave | Int32 |
Quadros chave | Quadro-chave booliano |
Quadro-chave booliano
Um quadro-chave booliano armazena apenas um tempo e um valor.
Seção | Type |
---|---|
Hora | Float32 |
Valor | Float32 |
Modo de encapsulamento
A semântica dos modos Pré e Post-Wrap segue a definição WrapMode do Unity . Eles são uma combinação dos seguintes bits:
Valor | Significado |
---|---|
0 | Padrão: lê o modo de repetição padrão configurado mais alto. |
1 | Uma vez: quando o tempo chegar ao final do clipe de animação, o clipe deixará de ser reproduzido automaticamente e a hora será redefinida para o início do clipe. |
2 | Loop: quando o tempo atingir o final do clipe de animação, o tempo continuará no início. |
4 | PingPong: quando o tempo chegar ao final do clipe de animação, o tempo fará ping pong de volta entre o início e o fim. |
8 | ClampForever: reproduz a animação. Quando chegar ao fim, ele continuará jogando o último quadro e nunca deixará de jogar. |
Modo ponderado
A semântica do modo Ponderado segue a definição de WeightedMode do Unity .
Valor | Significado |
---|---|
0 | Nenhum: exclua inWeight ou outWeight ao calcular segmentos de curva. |
1 | In: Incluir inWeight ao calcular o segmento de curva anterior. |
2 | Out: inclua outWeight ao calcular o próximo segmento de curva. |
3 | Ambos: inclua inWeight e outWeight ao calcular segmentos de curva. |