Formato de ficheiro de animação de entrada – MRTK2
Estrutura geral
O ficheiro binário de animação de entrada começa com um número mágico inteiro de 64 bits. O valor deste número na notação hexadecimal é 0x6a8faf6e0f9e42c6
e pode ser utilizado para identificar ficheiros de animação de entrada válidos.
Os oito bytes seguintes são dois valores Int32 que declaram o número de versão principal e menor do ficheiro.
O resto do ficheiro é ocupado por dados de animação, que podem ser alterados entre números de versão.
Section | Tipo |
---|---|
Número Mágico | Int64 |
Número da Versão Principal | Int32 |
Número da Versão Secundária | Int32 |
Dados de Animação | ver secção de versão |
Versão 1.1
Os dados de animação de entrada consistem em três valores booleanos que indicam se a animação contém dados de Câmara, Mão e Olhar para Os Olhos, seguidos de uma sequência de curvas de animação. As curvas presentes dependem dos valores destes booleanos. Cada curva pode ter um número diferente de keyframes.
Section | Tipo | Notas |
---|---|---|
Tem Pose da Câmara | Booleano | |
Tem Dados Mano | Booleano | |
Tem Olhar para Os Olhos | Booleano | |
Câmara | Curvas de Pose | Apenas se Has Camera Pose for true |
Mão Controlada à Esquerda | Curva booleana | Apenas se a opção Tem Dados Da Mão for verdadeira |
Mão Controlada à Direita | Curva booleana | Apenas se a opção Tem Dados Da Mão for verdadeira |
Mão a Aproximar à Esquerda | Curva booleana | Apenas se a opção Tem Dados Da Mão for verdadeira |
Mão a Aproximar à Direita | Curva booleana | Apenas se a opção Tem Dados Da Mão for verdadeira |
Articulações da Mão Esquerda | Curvas de Pose conjunta | Apenas se a opção Tem Dados Da Mão for verdadeira |
Articulações da Mão Direita | Curvas de Pose conjunta | Apenas se a opção Tem Dados Da Mão for verdadeira |
Olhar para os Olhos | Curvas de Raios] | Apenas se Has Eye Gaze for true |
Versão 1.0
Os dados de animação de entrada consistem numa 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 keyframes.
Section | Tipo |
---|---|
Câmara | Curvas de Pose |
Mão Controlada à Esquerda | Curva booleana |
Mão Controlada à Direita | Curva booleana |
Mão a Aproximar à Esquerda | Curva booleana |
Mão a Aproximar à Direita | Curva booleana |
Articulações da Mão Esquerda | Curvas de Pose conjunta |
Articulações da Mão Direita | Curvas de Pose conjunta |
Curvas de pose de articulação
Para cada mão, é armazenada uma sequência de curvas de animação articular. O número de articulações é fixo e é armazenado um conjunto de curvas de pose para cada articulação.
Section | Tipo |
---|---|
Nenhuma | Curvas de Pose |
Pulso | Curvas de Pose |
Palm | Curvas de Pose |
ThumbMetacarpalJoint | Curvas de Pose |
ThumbProximalJoint | Curvas de Pose |
ThumbDistalJoint | Curvas de Pose |
Descrição | Curvas de Pose |
IndexMetacarpal | Curvas de Pose |
IndexKnuckle | Curvas de Pose |
IndexMiddleJoint | Curvas de Pose |
IndexDistalJoint | Curvas de Pose |
Descrição do Índice | Curvas de Pose |
MiddleMetacarpal | Curvas de Pose |
MiddleKnuckle | Curvas de Pose |
MiddleMiddleJoint | Curvas de Pose |
MiddleDistalJoint | Curvas de Pose |
Descrição Média | Curvas de Pose |
RingMetacarpal | Curvas de Pose |
RingKnuckle | Curvas de Pose |
RingMiddleJoint | Curvas de Pose |
RingDistalJoint | Curvas de Pose |
Descrição do Anel | Curvas de Pose |
PinkyMetacarpal | Curvas de Pose |
PinkyKnuckle | Curvas de Pose |
PinkyMiddleJoint | Curvas de Pose |
PinkyDistalJoint | Curvas de Pose |
Descrições Cor de Rosa | Curvas de Pose |
Curvas de pose
As curvas de pose são uma sequência de 3 curvas de animação para o vetor de posição, seguida de 4 curvas de animação para o quaternion de rotação.
Section | Tipo |
---|---|
Posição X | Curva flutuante |
Posição Y | Curva flutuante |
Posição Z | Curva flutuante |
Rotação X | Curva flutuante |
Rotação Y | Curva flutuante |
Rotação Z | Curva flutuante |
Rotação W | Curva flutuante |
Curvas de raios
As curvas de raios são uma sequência de 3 curvas de animação para o vetor de origem, seguida de 3 curvas de animação para o vetor de direção.
Section | Tipo |
---|---|
Origem X | Curva flutuante |
Origem Y | Curva flutuante |
Origem Z | Curva flutuante |
Direção X | Curva flutuante |
Direção Y | Curva flutuante |
Direção Z | Curva flutuante |
Curva flutuante
As curvas de vírgula flutuante são curvas Bézier completas com um número variável de keyframes. Cada keyframe armazena uma hora e um valor de curva, bem como tangentes e pesos no lado esquerdo e direito de cada chaveframe.
Section | Tipo |
---|---|
Modo de Pré-Moldagem | Int32, Modo de Moldagem |
Modo pós-moldagem | Int32, Modo de Moldagem |
Número de keyframes | Int32 |
Keyframes | Chave flutuante |
Chave flutuante
Um keyframe flutuante armazena valores de tangente e peso juntamente com a hora e o valor básicos.
Section | Tipo |
---|---|
Hora | Float32 |
Valor | Float32 |
InTangent | Float32 |
OutTangent | Float32 |
Peso-Pesado | Float32 |
OutWeight | Float32 |
WeightedMode | Int32, Modo Ponderado |
Curva booleana
As curvas booleanas são sequências simples de valores ativados/desligados. Em cada keyframe, o valor da curva inverte-se imediatamente.
Section | Tipo |
---|---|
Modo de Pré-Moldagem | Int32, Modo de Moldagem |
Modo pós-moldagem | Int32, Modo de Moldagem |
Número de keyframes | Int32 |
Keyframes | Chave booleana |
Chave booleana
Um keyframe booleano só armazena uma hora e um valor.
Section | Tipo |
---|---|
Hora | Float32 |
Valor | Float32 |
Modo de moldagem
A semântica dos modos Pré e Pós-Moldagem segue a definição WrapMode do Unity . São uma combinação dos seguintes bits:
Valor | Significado |
---|---|
0 | Predefinição: lê o modo de repetição predefinido configurado mais acima. |
1 | Uma vez: quando o tempo chegar ao fim do clip de animação, o clip deixará de ser reproduzido automaticamente e a hora será reposta para o início do clip. |
2 | Ciclo: quando a hora chegar ao fim do clip de animação, o tempo continuará no início. |
4 | PingPong: quando a hora chegar ao fim do clip de animação, o tempo voltará a ping pong entre o início e o fim. |
8 | ClampForever: reproduz a animação. Quando chegar ao fim, continuará a jogar a última moldura e nunca deixará de jogar. |
Modo ponderado
A semântica do modo Ponderado segue a definição Unity WeightedMode .
Valor | Significado |
---|---|
0 | Nenhum: exclua inWeight ou outWeight ao calcular segmentos de curva. |
1 | Em: Incluir inWeight ao calcular o segmento de curva anterior. |
2 | Out: Include outWeight when calculing the next curve segment. |
3 | Ambos: Incluir inWeight e outWeight ao calcular segmentos de curva. |