O que você está procurando?
Engine & platform

Humanóides Mecanim

ROBERTL / UNITY TECHNOLOGIESContributor
May 26, 2014|16 Min
Humanóides Mecanim
Esta página da Web foi automaticamente traduzida para sua conveniência. Não podemos garantir a precisão ou a confiabilidade do conteúdo traduzido. Se tiver dúvidas sobre a precisão do conteúdo traduzido, consulte a versão oficial em inglês da página da Web.

Esta postagem explica a tecnologia por trás dos Humanoides Mecanim. Como funciona, pontos fortes e limitações, por que algumas escolhas foram feitas e, quem sabe, algumas dicas sobre como tirar o melhor proveito disso. Por favor, consulteDocumentação do Unitypara configuração geral e instruções.

Equipamento Humanoide e Espaço Muscular
Equipamento Humanoide e Espaço Muscular

Mecanim Humanoid Rig e Muscle Space são uma solução alternativa às hierarquias de nós de esqueleto padrão e transformações geométricas para representar corpos e animações humanoides.

O Humanoid Rig é uma descrição no topo de uma hierarquia de nós de esqueleto. Ele identifica um conjunto de ossos humanos e cria um Referencial Muscular para cada um deles. Um Referencial Muscular é essencialmente uma pré e pós-rotação com um intervalo e um sinal para cada eixo.

Braço e alongamento

Um músculo é um valor normalizado [-1,1] que move um osso por um eixo entre o intervalo [min,max]. Observe que o valor normalizado do músculo pode ficar abaixo ou acima de [-1,1] para ultrapassar o intervalo. A amplitude não é um limite rígido; em vez disso, ela define a amplitude normal de movimento de um músculo. Um Rig Humanoide específico pode aumentar ou reduzir o alcance de um Referencial Muscular para aumentar ou reduzir sua amplitude de movimento.

O Espaço Muscular é o conjunto de todos os valores normalizados de Músculo para o Rig Humanoide. É uma pose humanoide normalizada. Um intervalo de zero (mín = máx) para um eixo ósseo significa que não há músculo para ele.

Por exemplo, o cotovelo não tem um músculo para seu eixo Y, pois ele apenas se estica para dentro e para fora (eixo Z) e rola para dentro e para fora (eixo X). No final, o Espaço Muscular é composto de no máximo 47 valores musculares que descrevem completamente uma postura corporal humanoide.

Alongamento de braço

Uma coisa bonita sobre Muscle Space é que ele é completamente abstraído de seu esqueleto original ou de qualquer estrutura. Ele pode ser aplicado diretamente em qualquer Rig Humanoide e sempre cria uma pose crível. Outra coisa bonita é como o Muscle Space interpola bem. Em comparação com a pose de esqueleto padrão, o Muscle Space sempre interpolará naturalmente entre quadros-chave de animação, durante a transição da máquina de estado ou quando misturado em uma árvore de mesclagem.

Em termos de computação, ele também funciona porque o Espaço Muscular pode ser tratado como um vetor de um escalar que você pode interpolar linearmente, ao contrário de quatérnios ou ângulos de Euler.

Uma aproximação do corpo humano e do movimento humano

Cada novo esqueleto construído para um personagem humanoide ou qualquer animação capturada será uma aproximação do corpo humano e do movimento humano. Não importa quantos ossos ou quão bom seja seu hardware MOCAP, o resultado será uma aproximação do real.

Montadores, empresas de jogos, escolas ou firmas de software proporão sua própria versão do que eles acham que melhor representa o corpo e o movimento humano e o que melhor se adequará às suas necessidades de produção.

A elaboração do Mecanim Humanoid Rig e do Muscle Space foi confrontada com algumas escolhas difíceis. Precisávamos encontrar um meio-termo entre tempo de execução rápido e qualidade de animação ou abertura e definição padrão.

2 ossos da coluna
Coluna

Essa é difícil. Por que 2 e não 3? Ou um número arbitrário de ossos espinhosos? Vamos descartar o mais recente, não se trata de pesquisa biomédica. (Observe que você sempre pode usar um equipamento genérico se precisar realmente desse nível de precisão). Um osso da coluna está claramente subdefinido.

Adicionar um segundo já é o suficiente para você percorrer a maior parte do caminho. Uma terceira ou até uma quarta contribuirá apenas um pouco para a pose humana final. Por que isso acontece? Ao observar como a coluna vertebral humana se curva, você notará que a parte da coluna que fica na caixa torácica é quase rígida. O que resta é um ponto de flexão principal na base da coluna e outro na base da caixa torácica. Portanto, há dois pontos principais de flexão. Olhar para um contorcionista, mesmo em poses extremas, mostra isso claramente. Considerando tudo isso, decidimos ter 2 ossos da coluna para o Humanoid Rig.

1 osso do pescoço

Este é mais fácil do que para a coluna. Observe que muitos esqueletos de jogos nem sequer têm um osso do pescoço e conseguem fazer o trabalho com apenas um osso da cabeça.

Rotação DoF

Assim como acontece com a maioria dos esqueletos (o que acontece com mais frequência ainda em jogos), o Mecanim Humanoid Rig suporta apenas animação de rotação. Os ossos não podem alterar sua tradução local em relação ao seu pai. Alguns pacotes 3D induzem uma certa quantidade de translação nos ossos para simular a elasticidade das articulações ou animação de compressão e alongamento. No momento, estamos pensando em adicionar profundidade de campo de tradução, pois é uma maneira relativamente barata em termos de desempenho computacional para compensar a qualidade da animação em esqueletos menos detalhados. Também permitiria que os usuários criassem animações de compressão e alongamento redirecionáveis.

torção

Sem ossos torcidos

Ossos torcidos são frequentemente adicionados aos esqueletos para evitar problemas de deformação da pele nos braços e pernas quando estão em configuração de torção extrema.

Os ossos torcidos ajudam a distribuir a deformação induzida pela torção do início ao fim do membro.

No Espaço Muscular, a quantidade de torção é representada por um Músculo e está sempre associada ao osso pai de um membro. Ex: A torção no antebraço acontece no cotovelo e não no pulso.

torção

Os Rigs Humanoides não suportam ossos torcidos, mas o solucionador Mecanim permite que você especifique uma porcentagem de torção a ser retirada do membro pai e colocada no membro filho. O padrão é 50% e ajuda muito a evitar problemas de deformação da pele.

Raiz Humanóide e Centro de massa

Agora, qual seria a melhor maneira de representar a posição e a orientação do corpo humano no espaço mundial?

O osso mais alto na hierarquia (geralmente quadris, pélvis ou qualquer que seja o nome) é onde ficam as curvas de posição e orientação do espaço mundial em um esqueleto padrão. Embora isso funcione bem para um personagem específico, torna-se inapropriado ao fazer redirecionamento, já que de um esqueleto para outro, o osso mais acima geralmente tem uma posição e rotação diferentes em relação ao resto do esqueleto.


backflip

O Espaço Muscular usa o centro de massa humanoide para representar sua posição no espaço mundial. O centro de massa é aproximado usando uma distribuição média de massa das partes do corpo humano. Partimos do pressuposto de que, após ajustes de escala, o centro de massa de uma pose humanoide é o mesmo para qualquer personagem humanoide. É uma suposição grande, mas demonstrou funcionar muito bem para um amplo conjunto de animações e personagens humanoides.

É verdade que, para animações de pé ou andando, o centro de massa fica ao redor dos quadris, mas para movimentos mais dinâmicos, como um mortal para trás, você pode ver como o corpo se afasta do centro de massa e como o centro de massa parece o ponto mais estável na animação.

Orientação corporal

Semelhante ao que o centro de massa faz para a posição espacial mundial do Espaço Muscular, usamos uma orientação corporal média para a orientação espacial mundial. O vetor de orientação corporal média para cima é calculado a partir dos pontos médios dos quadris e ombros. O vetor frontal é então o produto cruzado do vetor para cima e dos vetores médios dos quadris/ombros esquerdo/direito. Também se presume que essa orientação corporal média para uma pose humanoide seja a mesma para todos os equipamentos humanoides. Quanto ao centro de massa, uma orientação corporal média tende a ser uma referência estável, pois a orientação da parte inferior e superior do corpo compensa naturalmente ao caminhar, correr, etc.

Movimento da raiz

Um artigo mais aprofundado sobre o movimento da raiz será publicado em breve, mas, como introdução, a projeção do centro de massa e a orientação média do corpo são usadas para criar automaticamente o movimento da raiz. O fato de o centro de massa e a orientação média do corpo serem propriedades estáveis da animação humanoide leva a um movimento raiz estável que pode ser usado para navegação ou previsão de movimento.

A escala

Uma coisa ainda falta no Muscle Space para que seja uma pose humanoide completamente normalizada... o tamanho geral dela. Mais uma vez, estamos procurando uma maneira de descrever o tamanho de um humanoide que não dependa de um ponto específico, como a posição do osso da cabeça, já que não é consistente de equipamento para equipamento. A altura do centro de massa de um personagem humanoide na postura T é usada diretamente como sua escala. A posição do centro de massa do Espaço Muscular é dividida por essa escala para produzir a pose humanoide normalizada final. Dito de outra forma, o Espaço Muscular é normalizado para um humanoide que tem uma altura de centro de massa de 1 quando em Posição T. Diz-se que todas as posições no Espaço Muscular estão em metros normalizados.

Posição original das mãos e pés

Ao aplicar um Espaço Muscular a um Rig Humanoide, mãos e pés podem ficar em posições e orientações diferentes da animação original, devido à diferença nas proporções dos Rigs Humanoides. Isso pode fazer com que os pés deslizem ou as mãos não alcancem corretamente. É por isso que o Espaço Muscular contém opcionalmente a posição e orientação originais das mãos e dos pés. A posição e orientação das mãos e dos pés são normalizadas em relação à Raiz Humanoide (centro de massa, rotação média do corpo e escala humanoide) no Espaço Muscular. Essas posições e orientações originais podem ser usadas para corrigir a pose do esqueleto redirecionada para corresponder à posição original do espaço mundial usando uma passagem IK.

Solucionador IK
Solucionador IK

O principal objetivo do IK Solver em braços e pernas é alcançar a posição e orientação originais das mãos e pés, opcionalmente encontradas no Espaço Muscular. Isso é o que acontece internamente com os pés quando a alternância “Foot IK” é habilitada em um estado do controlador Mecanim.

Nesses casos, a pose do esqueleto redirecionada nunca fica muito longe dos objetivos originais do IK. O erro IK a ser corrigido é pequeno, pois é induzido apenas pela diferença na proporção de plataformas humanoides. O solucionador IK modificará apenas ligeiramente a pose do esqueleto redirecionada para produzir a pose final que corresponde às posições e orientações originais.

Como o IK modifica apenas ligeiramente a pose do esqueleto redirecionada, ele raramente induzirá artefatos de animação, como estalos de joelho ou cotovelo. Mesmo assim, há um solucionador de Squash e Stretch, parte do solucionador IK, que está lá para evitar estalos quando braços ou pernas se aproximam da extensão máxima. Por padrão, a quantidade de compressão e alongamento permitida é limitada a 5% do comprimento total do braço ou da perna. Um estalo no cotovelo ou no joelho é mais perceptível (e feio) do que um alongamento de 5% ou menos no braço ou na perna. Observe que a resolução de compressão e alongamento pode ser desativada configurando-a para 0%.

Um artigo mais aprofundado sobre plataformas IK será publicado em breve. Ele explicará como lidar com adereços, usar múltiplos passes IK, interação com o ambiente ou entre personagens humanoides, etc.

Ossos Opcionais

O Humanoid Rig tem alguns ossos que são opcionais. Este é o caso do Peito, Pescoço, Ombro Esquerdo, Ombro Direito, Dedos do Pé Esquerdo e Dedos do Pé Direito. Muitos esqueletos existentes não têm alguns dos ossos opcionais, mas ainda queríamos criar humanoides válidos com eles.

O Humanoid Rig também suporta ossos opcionais LeftEye e RightEye. Cada osso do olho tem dois músculos: um que sobe e desce e outro que se move para dentro e para fora. Os ossos dos olhos também funcionam com o solucionador LookAt do Humanoid Rig, que pode distribuir ajustes de visão na coluna, no peito, no pescoço, na cabeça e nos olhos. Haverá mais informações sobre o solucionador LookAt no próximo artigo sobre o equipamento Humanoid IK.

Dedos

Por fim, o Humanoid Rig suporta dedos. Cada dedo pode ter de 0 a 3 dígitos. O dígito 0 significa simplesmente que este dedo não está definido. Existem dois músculos (alongamento e expansão) para o primeiro dígito e um músculo (alongamento) para o segundo e último dígito. Observe que não há sobrecarga do solucionador para dedos quando nenhum dedo é definido para uma mão.

Requisitos do esqueleto do equipamento

Entre os ossos

Em muitos casos, os esqueletos terão mais ossos do que os definidos pelo Humanoid Rig. Ossos intermediários são ossos que estão entre ossos definidos por humanoides. Por exemplo, um terceiro osso da coluna em um 3DSMAX Biped será tratado como um osso intermediário. Eles são suportados pelo Humanoid Rig, mas tenha em mente que os ossos intermediários não serão animados. Eles permanecerão em sua posição e orientação padrão em relação ao seu pai definido no Humanoid Rig.

Hierarquia Padrão

O esqueleto deve respeitar uma hierarquia padrão para ser compatível com nosso Rig Humanoide. O esqueleto pode ter qualquer número de ossos intermediários entre os ossos humanoides, mas deve respeitar o seguinte padrão:

Quadris - Perna superior - Perna inferior - Pé - Dedos dos pés

Quadris - Coluna - Peito - Pescoço - Cabeça

Peito - Ombro - Braço - Antebraço - Mão

Mão - Proximal - Intermediário - Distal

A postura T
Posição T

A postura em T é o passo mais importante na criação do Humanoid Rig, já que a configuração dos músculos é baseada nela. A postura T foi escolhida como postura de referência porque é fácil de conceituar e não há muito espaço para interpretação do que ela deveria ser:

- Em pé, de frente para o eixo z

- Cabeça e olhos voltados para o eixo z

- Pés no chão paralelos ao eixo z

- Braços abertos paralelos ao chão ao longo do eixo x

- Mãos espalmadas, palmas para baixo, paralelas ao chão ao longo do eixo x

- Dedos retos paralelos ao solo ao longo do eixo x

-Polegares retos paralelos ao chão na metade do caminho (45 graus) entre os eixos x e z

Quando se diz “reto”, não significa que os ossos necessariamente precisam estar perfeitamente alinhados. Depende de como a pele se fixa ao esqueleto. Alguns equipamentos podem ter a pele parecendo reta, mas o esqueleto por baixo não. Portanto, é importante que a T-Stance seja definida para o personagem com a skin final. Caso você esteja criando um Rig Humanoide para redirecionar dados MOCAP, é uma boa prática capturar pelo menos alguns quadros de uma T-Stance feita pelo ator no conjunto MOCAP.

Ajustes de amplitude muscular

Por padrão, os intervalos musculares são definidos com valores que melhor representam os intervalos musculares humanos. Na maioria das vezes, eles não devem ser modificados. Para um personagem mais cartunesco, você pode reduzir o alcance para evitar que os braços entrem no corpo ou aumentá-lo para exagerar o movimento das pernas. Se você estiver criando um Rig Humanoide para redirecionar dados MOCAP, não deverá modificar os intervalos, pois o clipe de animação produzido não respeitará o padrão.

Clipe de retargeting e animação

O retargeting da Mecanim é dividido em duas fases. A primeira fase consiste em converter uma animação de transformação de esqueleto padrão em um clipe de animação humanoide normalizado (ou clipe de músculo). Esta fase acontece no editor quando o arquivo de animação é importado. Internamente é chamado de “RetargetFrom”. A segunda fase acontece no modo de jogo, quando o Muscle Clip é avaliado e aplicado aos ossos do esqueleto de um Rig Humanoide.

clipe de músculo

Internamente, é chamado de “RetargetTo”. Há duas grandes vantagens em dividir o retargeting em duas fases. O primeiro é resolver a velocidade. Metade do processo de retargeting é feito offline, apenas a outra metade é feita em tempo de execução. A outra vantagem é a complexidade da cena e o uso de memória. Como o Muscle Clip é completamente abstraído de seu esqueleto original, o esqueleto de origem não precisa ser incluído no tempo de execução para realizar o redirecionamento.

A segunda fase é simples. Depois de ter um Humanoid Rig válido, basta aplicar o Muscle Clip nele com o solucionador RetargetTo. Isso é feito automaticamente nos bastidores.

A primeira fase, converter uma animação de esqueleto em um clipe de músculo, pode ser um pouco mais complicada. O clipe de animação do esqueleto é amostrado em uma taxa fixa. Para cada amostra, a pose do esqueleto é convertida em uma pose do espaço muscular e uma chave é adicionada ao clipe muscular. Nem todos os esqueletos servirão, há muitas maneiras diferentes de construir e animar um esqueleto. Alguns esqueletos produzirão uma saída válida, mas com possível perda de informações. Agora revisaremos o que é necessário para criar uma animação humanoide normalizada sem perdas… o Muscle Clip.

Observação: Por sem perdas queremos dizer que o redirecionamento de um esqueleto para o Muscle Clip e, em seguida, o redirecionamento de volta para o mesmo esqueleto preservará a animação intacta. Na verdade, ele estará quase intacto. A torção original nos braços e pernas será perdida e substituída pelo que o solucionador de torções calcula. Conforme explicado anteriormente neste documento, não há representação de repartição de torção no Muscle Space.

- A posição local dos ossos deve ser a mesma no equipamento humanoide e no arquivo de animação. Acontece que o esqueleto usado para criar o Humanoid Rig é diferente daquele no arquivo de animação. Certifique-se de usar exatamente o mesmo esqueleto. Avisos serão enviados ao console na importação, caso não seja esse o caso.

- Os ossos intermediários não devem ter animação. Isso geralmente acontece em um esqueleto do 3DSMAX, onde o terceiro osso da coluna tem animação de translação e rotação. Isso também acontece quando Bip001 é usado como Quadris e a Pelvis tem alguma animação. Avisos serão enviados ao console na importação se este não for o caso.

- A orientação local do osso intermediário deve ser a mesma no Humanoid Rig e no arquivo de animação. Isso pode acontecer ao usar o Humanoid Auto Configure, que depende do Skin Bind Pose para criar a postura T. Certifique-se de que a rotação da pose de vinculação da pele para os ossos intermediários seja a mesma encontrada no arquivo de animação. Avisos serão enviados ao console na importação se este não for o caso.

- Com exceção dos quadris, a animação de tradução não é suportada nos ossos. O 3DSMAX Biped às vezes coloca animação de translação nos ossos da coluna. Avisos serão enviados ao console em imp ou se não for o caso.

O 3DSMAX Biped é apontado como um equipamento problemático aqui. Provavelmente é por causa de sua popularidade e do fato de termos tido que dar suporte a muitos casos de uso com Mecanim. Observe que se você for criar novas animações para serem usadas com o Mecanim Humanoid Rig, você deve seguir as regras declaradas acima desde o início. Se você quiser usar uma animação já existente que quebre algumas das regras, ainda é possível. O solucionador de retargeting Mecanim é robusto e produzirá uma saída válida, mas a conversão sem perdas não pode ser garantida.

Observe que se você for criar novas animações para serem usadas com o Mecanim Humanoid Rig, você deve seguir as regras declaradas acima desde o início. Se você quiser usar uma animação já existente que quebre algumas das regras, ainda é possível, pois o solucionador de retargeting do Mecanim é robusto e produzirá uma saída válida, mas a conversão sem perdas não pode ser garantida.