CONFIGURANDO UM PERSONAGEM PARA ANIMAÇÃO

Este tutorial tem o objetivo de demonstrar uma configuração de um personagem digital 3D, deixando-o preparado para ser animado. Esta etapa é direcionada para quem está com a modelagem totalmente finalizada. Ou seja, não altere mais a malha depois de configurar o esqueleto de animação. Se precisar, faça um morph-target que é mais seguro.

Uma vez que o modelo do personagem está pronto, comece criando o esqueleto. Osso a osso. O esqueleto pode ser feito com qualquer objeto, vc pode até modelar os ossos como eles são na realidade. Mas geralmente utilizamos um sistema que já vem preparado para funcionar como ossos, respeitando uma hierarquia e com as articulações configuradas. Muitos usuários de Max usam o Character Studio (http://www.amazzing.com/ch04.htm) para animar personagens, que é um pacote para animação de personagens. Ele já oferece um esqueleto inteiro montado e configurado para animação de personagens bípedes. O Character Studio é muito bom, mas é uma ferramenta exclusiva do Max e mesmo assim não é 100% integrado com as ferramentas. Já o Bones Systems é mais integrado com o Max e além do que, existem na mairoria dos softwares de animação como Maya, Xsi, etc. Conceitualmente falando, a configuração é praticamente a mesma coisa em todos os softwares.



Quando Bones Systems são criados, a hierarquia e os pivots (http://www.amazzing.com/tutor4b.htm) já vem praticamente prontos. Geralmente eu começo criando os Bones que serão parent(pai) na hierarquia e os child(filho) eu crio por último. Como na figura ao lado, eu comecei criando o Bone que é o patriarca maior na hierarquia do esqueleto inteiro, a 'pélvis'. Em seguida, criei um osso para a esquerda, na linha da cintura e depois o fêmur esquerdo. Observe que a hierarquia já é criada automaticamente, de pai para filho. Para terminar a criação da hierarquia, clique o botão direito do mouse, ou pressione ESC.

Em seguida, eu criei os ossos da coluna, incluindo pescoço e cabeça. Se começar clicando em cima do bone já criado, automaticamente o próximo será criado um nível abaixo na hierarquia, ou seja, o osso da barriga, foi criado a partir de um clique no osso da pélvis. A quantidade de ossos deve ser de acordo com as animações pretendidas. Por exemplo, decidir quantos ossos serão necessários na coluna.

Da mesma forma, eu criei o osso do ombro e todos do braço, a partir do clique em cima do osso do toráx.

Se os bones não ficarem na posição exata pretendida, eles podem ser editados pela janela 'Character - Bone Tools'.

Clicando no botão `Bone Edit Mode`, vc pode alterar as transformações de cada osso.

Por exemplo, esticar o bone da coxa, até o joelho. E em seguida, da mesma janela eu posso criar os ossos seguintes na hierarquia da perna.

.

 

 

Para criar o esqueleto do pé, fica mais fácil pela vista de lado. Então, eu parei a criação até o tornozelo.

E depois na vista 'Left', criei o esqueleto do pé. Sempre clicando em cima do último bone criado para continuar a hierarquia.

  Da mesma forma, ajustei as posições dos ossos do braço utilizando o 'Bone Edit Mode'.

Seguindo a mesma lógica, continuei criando os ossos da mão.


 

Na cabeça, eu costumo inserir um osso para controlar o maxilar inferior do personagem. Assim, para criar expressões faciais e fonemas, posso combinar os Morph-Targets com a abertura do maxilar inferior.

Uma vez que metade do esqueleto está pronto, podemos copiar a outra metade. Para isso, não copiaremos todos os ossos. Observe na figura ao lado, quais ossos eu selecionei para copiar.

 

  Após selecionar os ossos, clique no botão 'mirror' e faça uma cópia espelhada dos ossos selecionados. No meu caso (e se vc criou ele na vista front) o eixo espelhado foi o `X`.

Posicione corretamente os ossos copiados.

 

Para conectar os ossos do esqueleto do corpo, aos ossos copiados, utilize o botão 'Connect Bones'. Na verdade esses bones podem nem ser usados, mas fica mais organizado visualmente com eles.

É aconselhável nomear perfeitamente cada osso. Tipo: braço_direito, ante_braço_direito, pulso_direito, etc.
Observe que os bones conectados, são nomeados como 'connectBone'. Assim, faça de um jeito que evite esquecer qualquer bone, por causa da nomenclatura deixá-lo fora da ordem alfabética.

 

Assim que o esqueleto estiver totalmente montado, podemos atribuir controladores. Numa hierarquia básica, decrescente, ou seja, de pai para filho, conhecida como animação FK (Foreward Kinematics), já é possível fazer animação com esse esqueleto. Por exemplo, para animar o braço levantando:

1- rotacione o ante-braço;
2- rotacione o braço;

3- rotacione o pulso.

No caso de animar as pernas, o primeiro grande desafio do animador, é respeitar as leis da gravidade. Atribuir a aparência de peso, volume, colisão, atrito, etc. Para isso, um fator importante, é que sempre o corpo está sendo sustentado por uma ou pelas duas pernas, ou seja, manter sempre os pés no chão.

Com esse pensamento, é mais produtivo utilizarmos para as pernas, o tipo de animação conhecida como IK (inverse Kinematics). Essa animação, inverte a hierarquia no momento da animação, animando do filho para o pai. No mesmo exemplo de animar o braço levantando, com IK, bastaria movimentar o pulso para que todo o braço seria reposicionado automaticamente. No exemplo das pernas e pés, isso seria bem mais prático, pois os pés não sofreriam a ação dos pais, portanto sempre ficariam fixos no chão, aumentando a probabilidade de credibilidade da animação.

Eu particularmente, trabalho com IKs apenas nas pernas. Todo o resto do corpo eu prefiro animar por FK. A não ser que o personagem tenha alguma ação do tipo fazer flexões no chão, ou segurar num corrimão de escada. Nesses casos, o IK nos braços seria bem mais produtivo.

Os IKs são laços. Por exemplo, vamos criar o IK da perna direita. Para controlar a perna, eu preciso de um laço de IK, que 'amarre' o tornozelo até a coxa. Então eu seleciono o bone do tornozelo, seleciono no menu 'Animation - IK Solvers - Hi Solver` e em seguida, clico no bone da coxa. Se fizer o inverso, tipo clicar na coxa, e depois no tornozelo, funcionaria igualmente, pois o IK sempre vai ficar no filho mais novo daquele laço.

Observe que feito isso, uma linha branca aparece definindo o laço, e no filho mais novo (no caso o tornozelo) aparece uma cruz azul. Essa cruz azul (IK Chain) é o controlador do laço IK. Desse momento em diante, não devemos mais animar os bones, aliás, é aconselhável 'freezar' ou esconder eles. Todos os controles da perna serão regidos pelo IK Chain.

 

 

Além disso, o IK Chain limita a hierarquia. Observe que movimentando o patriarca da hierarquia do corpo (pelvis), o IK Chain da perna direita não sai do lugar. Mas a ponta do pé fica descontrolada.
Da maneira como está, para fazer a animação de um personagem andar, o IK Chain estaria limitando apenas o tornozelo, ou seja, deixando que a ponta do pé atravessasse o chão. Para evitar isso, e limitar o pé inteiro, eu fiz mais dois laços IK: Um do tornozelo para o calcanhar e outro do calcanhar para a ponta do pé.
Movimente a pelvis agora e observe a diferença.
Após fazer isso nas duas pernas, ficaria improdutivo, ter que trabalhar em três controladores para animar a perna. Assim, criamos um controlador para gerenciar os IK Chains. Qualquer objeto pode ser usado como controlador. No max existem Dummies, e outros controladores que são leves e não são renderizados.
No caso dos pés, eu costumo utilizar círculos. Crio um círculo bem embaixo do pé, abrangendo os tr
ês IK Chains. Em seguida, eu seleciono os três IK Chains e Linko, ou seja, crio uma hierarquia entre os IK Chains e o círculo. O círculo será o pai e os IKs serão os filhos.
Em seguida, eu seleciono os três IK Chains e Linko (Link - icone de 2 quadrados ligados por uma corrente), ou seja, crio uma hierarquia entre os IK Chains e o círculo. O círculo será o pai e os IKs serão os filhos.

Para acompanhar as hierarquias existentes na sua cena, observe o gráfico 'Graph Editors - Schematic View'. Observe na figura ao lado, a hierarquia entre o circle01 e os IK Chains.

Com isso, para animar a perna, basta alterar as transformações do círculo, que todos os IKs irão acompanhar.

Para a animação da perna, ainda falta uma propriedade. O ângulo de abertuda. Clicando no ícone demonstrado a esquerda (Manipulators), os manipuladores serão mostrados na tela. Em cada laço IK, irá aparecer um manipulador de cor verde. Ele chama-se `Swivel Angle` e funciona como um joystick. Clique e arraste para mudar o ângulo de abertura da perna.
A idéia, é colcoar todos os controles referentes a perna, no círculo que é pai da hierarquia dos IKs.

Para isso, eu atribuí um parâmetro para o círculo: selecione o círculo e ative o menu 'Animation - Parameter Editor'. Observe na figura, eu criei um parâmetro chamado AMG_ROT.

UI Type = Spinner - eu geralmente uso o Spinner, quando tenho mais de dois valores. No caso da perna, eu estipulei o ângulo de abertura mínimo de -90 graus, máximo de 90 graus e o default vale zero graus, portanto, três valores.

Então, eu atribuí nos parâmetros, um Range de 3 valores: FROM = -5, DEFAULT = 0 e TO = 5. Ou seja, quando eu inserir o valor -5, a perna deverá ter o ângulo de abertuda igual a -90 graus.
Clicando no botão Add, o parâmetro é adicionado ao círculo.

Mas ainda o parâmetro não faz nada. Precisamos associá-lo ao Swivel Angle. Ative o menu 'Animation - Reactor Manager'.
Nessa janela, iremos definir quem reagirá a quem. No nosso caso, o Swivel Angle deverá reagir ao parâmetro AMG_ROT.
O Reactor trabalha com Mestres (Master) e Escravos (Slave). Então, inicia-se um pensamento lógico:
Quem é o mestre nesse caso? Resposta: o parâmetro do círculo (AMG_ROT).
Então clique no sinal de + preto (adicionar mestre) e em seguida clique no círculo. Aparecerá todas as propriedades do círculo, pois qualquer um pode ser mestre ou escravo. Nesse caso, ative o 'Object (Circle) -> Custom_Attributes->AMG_ROT'.

Observe que ele é evidenciado na janela do Reactor como Circle01/AMG_ROT.

Agora clique no sinal de + branco ao lado (adicionar escravo), para adicionar o escravo. Em seguida clique no IKChain do tornozelo, e ative a opção 'Transform->Swivel Angle'.

Assim, temos o mestre e o escravo. Na segunda divisão da janela do Reactor, o primeiro estado
(-State01) é criado automaticamente, com a situação atual, no nosso caso, valor zero para o AMG_ROT e valor zero para o Swivel Angle.

Clique na seta preta para baixo (create state) duas vezes para cirar mais dois estados.

Em seguida, altere os valores para os controles da perna:
-State02 = (valor do mestre AMG_ROT) = -5
IK Chain01/Swivel Angle = (valor do escravo) = -90

o estado 3, é para os valores positivos:
-State03 = (valor do mestre AMG_ROT) = 5
IK Chain01/Swivel Angle = (valor do escravo) = 90

Feito isso, faça um teste: fecha a hjanela do reactor, selecione o círculo, altere os valores do AMG_ROT e observe as mudanças no ângulo de abertuda da perna.

Da mesma forma, eu criei um Dummy (é um box que não é renderizado, mas ajuda (helper) em controladores como este)) e posicionei na localização do pulso, assim ele será o controlador para qualquer animação do braço. Inclusive abrir e fechar a mão.
Quando estamos trabalhando em animação, as coordenadas de rotação, posição e escala, ficam mais produtivas estando nos objetos do que nas vistas. Observe a figura ao lado, a rotação não está em view (vista, tela de trabalho), está em local.
Isso significa que as coordenadas sempre estarão fixas ao objeto.

Nesse caso, eu habilitei a rotação local para identificar exatamente qual é o eixo necessário para abrir e fechar os dedos. Lembre-se que as transformações nos eixos são mostradas no rodapé do Max, ou baseie-se pelas cores:
vermelho=X
verde=Y
azul=Z

Nesse momento vc sabe se a criação dos bones foi organizada, ou seja, todos os bones respeitam a mesma sequência de eixos X,Y,Z.

Após identificar os eixos de todos os dedos, eu selecionei o dummy e atribuí um parâmetro chamado DEDO_INDICADOR. É semelhante ao parâmetro do círculo q controla a perna, só que desta vez, como eu só tenho dois valorer (aberto e fechado), o tipo do parâmetro é Slider. Assim, não preciso atribuir valores, simplesmente altero do mínimo ao máximo.

No caso do Range, do Reactor Controler, eu procuro sempre ficar no intervalo de 10. Ou seja:
0 = mão aberta
10 = mão fechada

Criei parâmetros para cada dedo

INDICADOR, MEDIO, ANELAR, DEDINHO, DEDAO e ainda o ANG_ROT, para o ângulo de rotação do braço.

Em seguida, abri a janela do Reactor Manager e fiz a mesma sequência entre mestres e escravos. Os mestres sempre serão os parâmetros do Dummy e os escravos, sempre as rotações dos bones dos dedos.
Observe por exemplo, o Reaction do dedo indicador: o parâmetro DEDO INDICADOR está controlando a rotação dos bones 26 e 27. Ambos com dois estados: 0 e 0, 10 e 90. Faça um a um, e vai testando cuidadosamente que funciona.
Outro controlador que pode ser bastante produtivo, é associar as transformações dos bones no mesmo Dummy. Por exemplo, nos bones que controlam a cabeça: Eu tenho um Dummy que envolve a cabeça inteira. Nele vou atribuir os controles de abertura do osso que controla o maxilar inferior e vou fazer com que a rotação do bone da cabeça(Bone09) seja controlado pela rotação do Dummy.
Todos os controles de animação dos objetos podem ser definidos e controlados de vários maneiras diferentes.

No caso da rotação da cabeça, eu selecionei o bone que fica logo acima do pescoço (Bone09), mudei o tipo de controlador (menu Motion - ícone de roda de bicicleta) de Euler XYZ para Orientation Constraint. Ou seja, o osso terá sua rotação, constringida por um controlador.

No meu caso, o Dummy. Muitas vezes, quando esse comando é aplicado, a rotação original do objeto é alterada. Para evitar isso, ligue a opção Keep Initial Offset.

Faça a mesma coisa com o osso do pulso e o Dummy que controla o braço. Projete seu personagem e desenvolva um esqueleto bem controlado.

Faça isso com todos os controles que deseja animar. Por exemplo, para controlar a rotação dos ossos da coluna, crie um Dummy no centro do personagem, e atribua todos os parâmetros para controlar os ossos da coluna.

Depois do esqueleto estar todo configurado e funcionando, precisamos configurar para que o esqueleto deforme o modelo 3D.
É importante que o esqueleto esteja exatamente na mesma posição de quando ele foi criado. Todos os testes feitos para os controladores devem estar zerados.

Selecione o modelo 3D do personagem e aplique o modificador Skin.
Em seguida, precisamos informar ao Skin, quais objetos serão controladores. Nesse caso, adicionamos todos os Bones, inclusive os Connect Bones. Depois disso, vem a parte mais chata, ajustar as influências de cada osso. Essa parte costuma dar trabalho nas articulações, tipo ombros, cotovelos, virilhas, etc. Porisso, durante a modelagem, essa ação deve ser planejada.

Para ajustar as influências, ligue o Sub-Object Envelope, escolha o osso (na lista do Skin ou clicando diretamente na Viewport) e arraste os pontos de controle aumentando e diminuindo a área de influência. A linha vermelha, influencia totalmente a área selecionada. A linha marrom, é a área de dissipação da influência, ou seja, quanto mais distante a linha marrom da linha vermelha, menos influência terá o osso vizinho nessa área. Faça isso osso a osso.

 

 

Ative o frame 10, e grave uma pose diferente para o personagem, tipo dobrando as pernmas e braços, assim você pode ir e voltar do frame 0 ao frame 10 para testar como está ficando o Skin, o importante é manter a posição original do modelo no frame 0.

Essa é a primeira e básica configuração do Skin. Depois temos que fazer ajustes finos e detalhistas. Por exemplo no caso do maxilar inferior. O osso de baixo deve influenciar apenas os vértices que modelam a parte debaixo da boca: labio inferior, queixo, etc. No entanto, como mostra a figura ao lado, o osso está influenciando inclusive a parte superior da boca.
Posso inicialmente ajustar a área de influência, assim como os outros bones do esqueleto. Mas provavelmente isso será insuficiente. Ainda mais que a boca está fechada. Assim, eu selecionei o osso do maxilar inferior, em seguida selecionei os vértices do lábio superior e excluí eles desse osso. Ou seja, eu informei que esse osso não tem nenhuma influência nesses vértices.
Uma outra ferramenta de precisão, é a pintura da área de influência. Uma vez que os vértices do lábio superior são ignorados, eu posso pintar a área de influência do osso, parecido com um pincel do photoshop. Esse pincel pode ter tamanhos e pressões diferentes. Oserve o resultado.

Se mesmo assim tiver dificuldades com um grupo de vértices, selecione-os e clique em Reset que geralmente ajuda.

Aqui a diferença entre o frame 0 (boca fechada=bone posição original) e frame 10 (boca aberta=bone rotacionado para baixo).

Lembre-se que quando um personagem fala, apenas o maxilar inferior se mexe. O maxilar superior fica fixo na cabeça.

Depois de fazer tudo isso, teoricamente o personagem está pronto para ser animado. Mas o Max ainda não sabe que esse monte de objetos 3D é um personagem. Para isso, é recomendável utilizar a ferramenta Character.

Selecione tudo que faz parte do seu personagem: bones, malha, dummies, IKs, etc. Depois ative o menu Character - Create Character.
Feito isso, um ícone com um boneco detro de um cícrulo deve aparecer em baixo dos pés do personagem. As vezes, esse ícone pode ser muito grande ou pequeno, ajuste o tamanho em Icon Size.

Uma vantagem em utilizar o Character, é salvar a pose inicial do personagem com o botão Set as Skin Pose. Assim, mesmo que o personagem estiver numa pose de animação, e desejar voltar a pose inicial, basta clicar no botão abaixo Assume Skin Pose.

Com o Character, teoricamente fica mais seguro salvar e carregar animações diferentes no mesmo personagem.