Computação Gráfica e Ambientes Virtuais
2.7 Animação 03.

Vamos agora ver um exemplo de uma Armação muito simples, destinada a controlar a animação do modelo 3D criado no Exercício 09.

Tópicos:

Armações - Exemplo.

Master Bone.

Coluna.

Braços.

 

Pernas.

Pés.

 

 

Controle dos Pés.

Controle das Pernas.


Antes de iniciar a ligação de uma armação a um objecto é importante que a este não esteja associada qualquer informação de escalamento ou rotação.

Abra o ficheiro Blender com o modelo 3D da figura humanóide criado na aula anterior. Com o modelo seleccionado, limpe a informação sobre as transformações de escalamento e rotação que eventualmente tenha aplicado ao modelo durante a sua construção pressionando [Ctrl]+[A]>1, figura 2.7.1 e 2.7.2.

Em Modo Objecto, [Ctrl]+[A] limpa a informação sobre escalamento e rotação que esteja associada a um objecto.

Pode também aceder a esta função a partir da barra da Janela 3D, [Object]>[Clear/Apply]>[Apply Scale/Rotation to ObData].

 

Figura 2.7.1

Figura 2.7.2


Master Bone.

• Pressione [Space], com o cursor sobre uma Janela 3D, e seleccione [Add]>[Armature] do menu que surge no ecrã, criando assim o 1º osso, figura 2.7.3.

• Com o osso seleccionado pressione [Tab] para entrar em Modo Edição.

• Pressione [RB ] sobre o Corpo do Osso de modo a seleccionar todo o osso. Na Janela de Botões, pressione o botão Names no painel Armature de modo a tornar o nome do osso visível na Janela 3D. Na caixa Bone do Painel de Transformações, atribua ao osso criado o nome Master, figura 2.7.4.

Certamente utilizou um Modificador Mirror na construção da figura humanóide. Se ainda não o fez, seleccione o modelo e aplique o modificador ao objecto pressionando o botão Apply apropriado do painel Modifiers (caso o painel não esteja presente na Janela de Botões pressione [F9]). Centre o objecto pressionando o botão Center do painel Mesh.

• Posicione o Cursor 3D sobre o centro do objecto, [Shift]+[S]>[Cursor -> Selection]. Seleccione o osso Master e posicione-o sobre o centro do objecto, [Shift]+[S]>[Selection -> Cursor].

• É provável que o osso Master tenha desaparecido, por ter ficado dentro da malha do objecto. Pressione o botão X-Ray do Painel Armature para tornar o osso visível.

• Com o osso Master seleccionado entre em Modo Edição. Pressione [G] escale o osso para fora da malha do objecto e coloque-o na horizontal, figura 2.7.5.

 

Figura 2.7.3

Figura 2.7.4

Figura 2.7.5


Coluna.

• Seleccione o osso Master, entre em Modo Edição, e crie um novo osso, [Space]>[Add]>[Bone].

• Seleccione o novo osso, [RB ] sobre o corpo do osso, e desloque, [G], a Ponta até à região ventral, figura 2.7.6.

• Seleccione a Ponta do osso e desloque-a até meio das costas do modelo, figura 2.7.6.

• Com a Ponta do osso seleccionada mantenha a tecla [Ctrl] pressionada e pressione [LB ] sucessivamente sobre a base do pescoço, o início do pescoço e o topo da cabeça, extrudindo assim o osso da base da coluna numa cadeia até à cabeça, figura 2.7.6.

Seleccione qualquer um dos ossos e movimente-o. Note que os ossos adjacentes mantêm a ligação Topo-Raiz.

• Certifique-se que todos os ossos estão no centro do modelo e que o osso da cabeça está na vertical, seleccionando o Corpo de cada um deles e verificando a posição dos Topos e das Raízes no Painel de Transformações.

• No Painel de Transformações, ou no Painel Armature Bones, dê ao novos ossos nome sugestivos (Coluna.Base; Coluna.Topo; Pescoço; Cabeça)

 

Figura 2.7.6

 


Braços.

• No painel Armature pressione o botão X-Axis Mirror para automatizar a criação simétrica de ossos.

Seleccione a Raiz do Master e, em FrontView, pressione [Shift]+[E] para criar (extrudir) dois ossos simétricos, arraste o rato para cima e para a direita, figura 2.7.7, e confirme a criação, [LB ].

• Seleccione o osso da direita, arraste-o até à zona das omoplatas e disponha-o e dimensione-o como mostra a figura 2.7.8 com o topo na zona do ombro (o osso da esquerda acompanhará automaticamente todos os procedimentos).

• Seleccione o topo do osso da direita e, mantendo a tecla [Ctrl] pressionada pressione [LB ] sucessivamente sobre o cotovelo, o pulso, o início e o topo dos dedos, criando assim uma cadeia de 5 ossos ao longo do braço, figura 2.7.9. Note como os ossos do braço esquerdo são criados automaticamente.

• Mude para TopView e corrija a posição de cada um dos ossos de modo a que acompanhem a linha do braço do modelo. Pressione X-Ray no painel Armature (para anular a função) e verifique, em TopView e SideView, que todos os ossos estão dentro do modelo, ou seja, invisíveis.

Observe os nomes que foram atribuídos automaticamente a cada um dos ossos. Por terem resultado da extrusão simétrica de um osso chamado Master, os ossos das omoplatas têm o nome Master_R e Master_L. Em cada uma das cadeias, por resultarem da extrusão do osso base, cada um dos ossos foi designado por Master_R(L).00x.

Vamos agora identificar os ossos com nomes mais sugestivos. É importante que se mantenham os sufixos _R e _L, respectivamente para a cadeia de ossos à direita (Right) e à esquerda (Left) da armação, tendo ossos simétricos nomes idênticos.

• Altere o nome dos ossos do braço esquerdo para Omopla_L, Braço_L, AnteBraço_L, Mão_L e Mão.Dedos_L, e do braço direito para Omopla_R, Braço_R, AnteBraço_R, Mão_R e Mão.Dedos_R, figura 2.7.10.

• Durante a construção da cadeia de ossos do braço é natural que cada um dos ossos tenham sofrido rotações não desejadas. Pressione [Ctrl]+[N] e seleccione Clear Roll (Z-Axis Up) para alinhar o sistemas de eixos de cada um deles.

 

Figura 2.7.7

Figura 2.7.8

Figura 2.7.9

Figura 2.7.10


Pernas.

• Certifique-se que o botão X-Axis Mirror está pressionado.

• Seleccione a Raiz do osso Coluna.Base e, em FrontView, pressione [Shift]+[E] para extrudir dois ossos simétricos e expanda-os até aos joelhos, colocando assim um osso na parte superior da perna.

• Seleccione a raiz do osso agora criado e desloque-a até à zona dos quadris.

• Seleccione agora a ponta do osso da perna e pressione [Ctrl]+[LB ] na zona do tornozelo, criando assim um osso na parte inferior da perna, ligado ao primeiro.

• Altere o nome dos ossos agora criados para Perna.Superior_L e Perna.Inferior_L (e Perna.Superior_R e Perna.Inferior_R para os ossos do lado direito), figura 2.7.11.

• Mude para SideView e corrija a posição de cada um dos ossos de modo a que acompanhem a linha da perna do modelo

 

Figura 2.7.11


Pés.

• Em Frontview, seleccione a ponta do osso Perna.Inferior_L e pressione [Shift]+[S]>[Cursor -> Selection] para colocar o Cursor 3D sobre a ponta do osso.

• Mude para SideView e pressione [Ctrl]+[LB ] num ponto atrás do modelo ao nível do chão, criando assim um osso (e respectivo par do lado direito) a partir do osso inferior da perna, figura 2.7.11

A colocação do cursor 3D é o modo mais prático deste novo osso ficar alinhado com o eixo dos yy, figura 2.7.13, e a sua criação a partir da ponta do osso inferior da perna esquerda teve como único fim criar, de modo prático, uma réplica simétrica. Na verdade não se pretende que este novo osso fique na dependência do osso inferior da perna, bem pelo contrário, este osso será o principal osso controlador dos movimentos da perna e do pé.

• Seleccione inteiramente o novo osso (Perna.Inferior_L.001), [RB] sobre o corpo do osso. Note que no painel Armature Bones o osso está referenciado como sendo filho do osso inferior da perna, figura 2.7.14.

• Pressione [Alt]+[P], e a partir do menu que surge no ecrã, figura 2.7.15, quebre a relação de parentesco entre os dois ossos.

Note que a caixa do Painel Armature Bones ficou em branco, aliás esta acção de quebra de parentesco pode ser feita limpando directamente a informação que consta da caixa, mas este último método tem por inconveniente o facto de não quebrar automaticamente a relação de parentesco entre os correspondentes ossos da perna direita.

• Com a relação de parentesco quebrada é agora possível mover o osso. Em SideView, coloque-o, a nível do chão, imediatamente por trás do modelo, figura 2.7.16.

• Altere o nome do osso para Perna.Control_L (e Perna.Control_R).

• Seleccione a raiz do osso Perna.Control_L, e, em SideView, pressione [Ctrl]+[LB ] na ponta do dedo do pé, extrudindo assim um osso ao longo de todo o pé.

• Altere o nome do osso para Pe.Dedos_L (e Pe.Dedos_R).

• Seleccione todo o osso Pe.Dedos_L e escale-o, [S], até à zona da palma do pé, 2.7.17.

• Seleccione a raiz de Pe.Dedos_L e, em SideView, pressione [Ctrl]+[LB ] imediatamente atrás da ponta do osso Perna.Inferior_L. e, uma segnda vez, um pouco mais à frente criando assim dois novos ossos, figura 2.7.18.

• Altere o nome dos ossos para Pe_L e Tornozelo_L (e Pe_R e Tornozelo_R).

• Certifique-se que o curso 3D está sobre a ponta do osso Perna.Inferior_L. Seleccione a junção entre os ossos Pe_L e Tornozelo_L e pressione [Shift]+[S]>[Selection -> Cursor], figura 2.7.19 e 20.

• Seleccione todos os ossos, [A] (ou [A]>[A]), e pressione [Ctrl]+[N] para alinhar os sistemas de eixos de cada um deles.

Figura 2.7.20

 

Figura 2.7.12

Figura 2.7.13

Figura 2.7.14

Figura 2.7.15

Figura 2.7.16

Figura 2.7.17

Figura 2.7.18

Figura 2.7.19

 

 

 


Controle dos Pés.

Vamos estabelecer o controle dos ossos dos pés com base numa relação Pai/Filho entre o osso Perna.Controle e os ossos Pe e Pe.Dedos, figura 2.7.21.

• Em Modo Edição, Seleccione o osso Pe_L, [RB ] sobre o corpo do osso, e em seguida o osso Perna.Control_L, [Shift]+[RB ] sobre o corpo do osso. Pressione [Ctrl]+[P] para tornar o osso Perna.Control_L pai do osso Pe_L (a relação de parentesco é estabelecida automaticamente do lado direito). No menu que surge no ecrã, figura 2.7.22, seleccione Keep Offset para não alterar a posição relativa dos ossos.

• Repita o procedimento anterior entre o osso Pe.Dedos_L e o osso Perna.Control_L.

 

Figura 2.7.21

Figura 2.7.22


Controle das Pernas.

Vamos começar por estabelecer o controle dos ossos das pernas com base num Restritor de Cinemática Inversa (IK Constraint).

• Entre em Modo Pose pressionando [Ctrl]+[Tab].

• Seleccione o osso Tornozelo_L, [RB ] sobre o corpo do osso, e em seguida o osso Perna.Inferior_L, [Shift]+[RB ] sobre o corpo do osso.

• Pressione [Shift]+[I] para criar um restritor IK entre os dois ossos, seleccionando [To Active Bone] na janela que surge no ecrã, figura 2.7.23.

Se executou bem os procedimentos, o osso Perna.Inferior_L ficou com uma cor amarelo claro e, na Janela de Botões, o painel Constraints foi preenchido com a informação relativa à existência e características do restritor IK criado, figura 2.7.24.

Verifique a acção do restritor IK seleccionando, [RB ], e movendo, [G], o osso Perna.Control_L, figura 2.7.25.

Repita os procedimentos anteriores, criando um Restritor IK para a perna direita.

Figura 2.7.25

A partir da barra da janela 3D seleccione o Transformador de Rotação e verifique o efeito da cinemática inversa sobre os ossos da perna, figura 2.7.26. No selector de orientação dos eixos seleccione [Normal], para poder fazer uma melhor interpretação do resultados das acções.

Pode verificar que, quando actua a órbita azul para proceder a rotações sobre o eixo dos zz, se dá uma rotação dos ossos do pé mas o ossos da perna não acompanham a rotação. Isto deve-se ao facto do algoritmo IK ter em atenção a posição do osso alvo (neste caso o osso Tornozelo_L) mas não a sua rotação.


Quando rodamos um pé, transversalmente ao perónio, os ossos da parte inferior da perna, e o joelho, rodam ligeiramente seguindo o movimento do pé. Para simular este comportamento é necessário criar um novo osso e recorrer a um Restritor LockTrack.

• Entre em Modo Edição, [Tab], e seleccione o osso Perna.Inferior_L.

• Em Sideview, pressione [Shift]+[D] de modo a duplicar o osso, arraste-o um pouco para a frente, escale-o, [S], e dê-lhe o nome Joelho_L, figura 2.7.27. É importante que o osso se mantenha alinhado com o osso Perna.Inferior_L.

Como pode ver, pela presença da linha tracejada, figura 2.7.27, (e no painel Armature Bones) o osso Joelho_L é filho do osso Perna.Suerior_L. Vamos quebrar esta relação de parentesco e torná-lo filho dos osso Perna.Control_L.

• Com o osso Joelho_L seleccionado, seleccione o osso Perna.Control_L, pressione [Ctrl]+[P] e seleccione [Keep Offset].

O osso Joelho_L passou a ser filho do osso Perna.Control_L, como pode ver pela presença da linha tracejada, figura 2.7.28, (e no painel Armature Bones). Verifique que o osso da perna direita e o correcto grau de parentesco foi gerado automaticamente mas note que é necessário alterar o seu nome para Joelho_R.

Pressione [Tab] para voltar ao Modo Pose.

Note que se verifica uma rotação indesejada dos ossos da perna. Tal deve-se ao facto do osso Joelho_L, ao ser criado a partir do osso Perna.Inferior_L ter herdado o seu restritor IK.

• Seleccione o osso Joelho_L e elimine o restritor IK a partir do painel Constraints, figura 2.7.29. Repita o procedimento para o osso Joelho_R.

• Com o osso Joelho_L seleccionado, seleccione o osso Perna.Inferior_L e pressione [Ctrl]+[Alt]+[C] para activar o menu Add Constraint to Active Bone. Seleccione o restritor Locked Track, figura 2.7.30.

• Na barra da Janela 3D seleccione o Transformador de Translações e o sistema de eixos Normal, para ver a orientação do osso inferior da perna. Em Lock seleccione [Y], para inibir o movimento segundo o eixo dos yy (para que o osso Perna.Inferior_L apenas possa rodar) e em To seleccione [-Z], por ser o eixo que aponta para osso Joelho_L, figuras 2.7.31 e 32.

• Repita os procedimentos para os ossos Joelho_R e Perna.Inferior_R.

• Repita os procedimentos entre os ossos Joelho_L / Perna.Superior_L e Joelho_R / Perna.Superior_R para que, de igual modo, a parte superior da perna acompanhe a rotação do pé sobre o eixo dos zz (Global).

Seleccione o osso Perna.Control_L e teste a acção dos restritores LockTrack rodando-o sobre o eixo dos zz ([R]>[Z] ou Transformador de Rotação azul).


Vamos agora ligar as pernas à base da coluna. Em princípio bastaria tornar o osso Coluna.Base pai dos ossos Perna.Superior_L e Perna.Superior_R, no entanto, se esta relação de parentesco for criada, como a Ponta do osso da coluna está virado para cima os movimentos da Armação resultarão muito pouco naturais. Há por isso que recorrer a um pequeno artifício.

• Em Modo Edição, seleccione a Raiz do osso Coluna.Base e pressione [Shift]+[S]+[Cursor -> Selection] para colocar o Cursor 3D sobre a raiz do osso.

• Seleccione a Ponta do osso Coluna.Base e pressione [Ctrl]+[LB ] num qualquer ponto adjacente de modo a extrudir um um osso filho de Coluna.Base.

• Pressione [Shift]+[S]+[Selection -> Cursor] para colocar a Ponta do novo osso sobre a Raiz do osso Coluna.Base, figura 2.7.33.

• Com o osso Perna.Superior_L seleccionado seleccione o osso agora criado. Pressione [Ctrl]+[P] e seleccione [Keep Offset], criando assim a relação de parentesco. Note como as linhas tracejadas estão agora, como desejado, na zona pélvica.


Em Modo Pose seleccione um dos ossos de controle do pé, movimente-o, [G], e observe o modo como os ossos das pernas e da coluna se comportam. Note que os ossos da coluna, por estarem dentro da cadeia do Restritor IK dos ossos inferiores da perna, respondem ao movimento dos ossos de controle do pé, figura 2.7.34. Embora tal crie algumas possibilidades de pose interessantes, em princípio não é desejável. Vamos por isso limitar o raio de acção do Restritor IK.

• Em Modo Pose seleccione o osso Perna.Inferior_L. No Painel Constraints altere o valor da caixa Chain Len de 0 (com o valor Chain Len:0 o Restritor IK estende-se a toda a cadeia, do osso inferior da perna ao osso da cabeça) para 2 de modo a que o Restritor IK fique limitado aos ossos da perna, figura 2.7.35.

Movimente os ossos controladores das pernas e observe o resultado.


Alguns dos ossos da Armação, por estarem dependentes de outros (serem filhos), deverão poder sofrer acções de translação ou rotação quando isso lhes for imposto pelos seus ascendentes mas nunca em resultado de manipulações directas.

• Pressione [N] para tornar visível o Painel de Transformações.

• Seleccione o osso Pe.Dedos_L e pressione o cadeado à esquerda de LocX, LocY, LocZ, RotX e RotY, figura 2.7.36.

• Repita o procedimento para os ossos Pe.Dedos_L, Pe_L e Pe_R.

• Para os ossos Joelho_L e Joelho_R, iniba LocY, LocZ, RotX, RotY e RotZ.

• Para os ossos Perna.Superior_L e Perna.Superior_R, iniba LocX, LocY e LocZ.

 

 

 

 

 

 

 

 

Figura 2.7.23

Figura 2.7.24

Figura 2.7.26

Figura 2.7.27

Figura 2.7.28

Figura 2.7.29

Figura 2.7.30

Figura 2.7.31

Figura 2.7.32

Figura 2.7.32

Figura 2.7.34

Figura 2.7.35

Figura 2.7.36