abril e maio de 2022 - Rig e animação
- DIANA DAVID
- 12 de jul. de 2024
- 3 min de leitura
Experimaram-se vários tipos de rigging (shape keys ou blendshapes, drivers, controladores, bones) e resolveram-se problemas a nível de incompatibilidade entre softwares (Blender vs. Unity).
Uma vez as personagens modeladas e texturizadas procedeu-se ao rigging, onde se criou um esqueleto para controlar as personagens em 3D.
Com o intuito de se criar um rápido POC (Proof of Concept) decidiu-se usar uma ferramenta de auto-rig. Desta maneira seria possível criar um esqueleto funcional em menos de um dia de trabalho.
Para testar o rig importaram-se alguns ficheiros de animação do site Mixamo. Concluiu-se que era necessário adicionar um pouco mais de geometria em certos pontos estratégicos das personagens para uma melhor deformação da malha, como na zona dos cotovelos e joelhos. Assim, foram adicionados 2 loops em cada zona.
Inicialmente escolheu-se o [auto-rig] Riggify para o Blender (um addon que vem por default com o programa), contudo aplicar os ficheiros de animações do site da Mixamo estava a tornar-se uma tarefa árdua. Desta forma, descobriu-se que o próprio site da Mixamo tinha acabado de criar oficialmente um addon para o Blender com um Rig próprio (da Adobe).
O rig na Mixamo tem a contrapartida de que apenas pode ser usado com personagens bípedes, em oposição ao do Riggify que pode ser usado para todo o tipo de criaturas, contudo, como as personagens em causa são bipedes, optou-se pelo da Mixamo por se poder aliar o rig ao serviço de animação que o site oferece.
Fez-se uma pequena animação usando 2 bases fornecidas (o Reacting e o Wheelbarrow Walk) pelo site da Mixamo. As curvas de animação foram limpas e foi feita uma animação para transitar entre as bases de animação. Copiou-se a animação da personagem A para a B e aplicou-se um mirror para espelhar a animação. Depois, criou-se um ligeiro desfasamento entre a animação das personagens para parecerem mais naturais.
Para fazer o mirror usou-se o addon Rigify AnimBox.

Como rig da Mixamo não tem controladores faciais, é necessário criar controladores extra para a cara e qualquer outro acessório, como no caso da personagem B que tem uns auscultadores.
Para a cara de cada personagem, utilizou-se um sistema de Blendshapes que depois são acionados por controladores através de drives.
Limitações: É difícil replicar a expressividade das expressões faciais conceptualizadas, por o número limitado de polígonos restringe o tipo de formas que se podem fazer com a boca e as sobrancelhas.

---------
Nota: Para exportar correctamente qualquer modelo do Blender para o Unity:
---------
Após os primeiros testes com as personagens animadas, apercebi-me que o sistema de Blendshapes não se estava a comportar como esperado.
Problema no Blender: As shapekeys (ou blendshapes) criadas para as personagens tinham alguns bugs que se podiam ver quando se fazia play da animação e se olhava para os valores das blendshapes que passavam de 0.000 para 0.000001 em certos frames o que fazia com que a geometria "piscasse" dentro do Unity. Como se pode ver nos GIFs abaixo.


Solução: Em vez de se criar um Driver (add Driver sobre a Blendshape) com um Average Value indicando apenas qual o controlador a influenciar o valor da Blendshape, criou-se algo semelhante, mas com matemática aplicada no processo, para não haver erros no processamento. Assim copia-se (Copy as New Driver) os dados da Location, do eixo do controlador, que nos interessa e cola-se no slider da blendshape. Desta forma, continuamos a trabalhar com uma função Average Value, mas há mais controlo sobre os valores.
Limitações: Não se pode usar Contrains sobre este objeto.
Problema no Unity: Apesar do problema parecer estar resolvido no Blender, o Unity continua a distorcer a geometria e a alterar as normais da mesh.
Isto acontece porque há uma incompatibilidade entre os drivers do Blender e os dados que são reconhecidos pelo Unity no processo de importação.

Solução: Depois de se testar com sucesso animação das blendshapes dentro do Unity, chegou-se à conclusão que apenas a animação dos Drivers é que falha. Assim, eliminou-se todo o Rig facial à base de Drivers e resolveu-se animar diretamente nos sliders das Blendshapes.
Cons: Para um animador este processo não é tão intuitivo e cómodo, mas é a única forma de se poder utilizar Blendshapes no Rig.
Poder-se-ia optar por utilizar apenas bones para a deformação da cara (evitando todo este problema), mas conseguir expressões faciais expressivas seria ainda mais desafiante e trabalhoso para o animador.
Extra: para não haver problemas com as normais da geometria deve-se selecionar "NONE" no campo das "BlendShape Normals" na aba de "models" quando se seleciona o modelo dentro da pasta de Assets.
Uma vez resolvido o problema, importaram-se os os modelos.
Com os modelos na hierarquia da cena selecionou-se a opção APPLY ROOT MOTION (no componente Animator da personagem) para que os pés das personagens não ficassem a flutuar no ar.
Para se controlar os vários clips de actions criou-se uma Timeline.






Comentários