S4.A2.
3.4. Relationship Constraints.
3.4.5. Rigid Body Joint.
O restritor Rigid Body Joint impõe uma articulação
do tipo corpo rígido entre o objecto a que o
restritor está associado e o alvo.
O restritor destina-se a ser usado no contexto do motor de jogo.
A sua utilização em animação só pode ser feita com base na
gravação das curvas de interpolação nesse contexto, a partir da
barra da janela Info, Game > Record Animation.
• Pivot Type: Tipo de articulação, seleccionável a
partir do menu dropdown.
• Hinge: Articulação do tipo dobradiça, em torno do eixo dos xx do pivot.
• Limits: Angle X Min./Max.: Permite especificar limites para a rotação em torno do eixo dos xx.
• Ball: Articulação com apenas um ponto fixo, permitindo a rotação, sem limites angulares, em torno de qualquer dos eixos.
• Cone Twist: Articulação com apenas um ponto fixo, permitindo a rotação, com limites angulares, em torno de qualquer dos eixos.
• Limits: Angle X/Y/Z: Permite especificar a abertura do ângulo sólido.
• Generic 6DoF: Articulação com apenas um ponto fixo com 6 graus de liberdade (Degrees of Freedom). Para além de poder rodar em torno de qualquer dos eixos, o objecto pode ainda afastar-se da origem do pivot segundo qualquer dos eixos.
• Limits: X/Y/Z Angle X/Y/Z: Permite especificar os limites para a rotação e afastamento relativos a cada um dos eixos.
• Linked Collision: Quando activo, desactiva a detecção da colisão entre o objecto e o alvo.
• Display Pivot: Quando activo, mostra o pivot na janela 3D.
• Pivot X/Y/Z: Permite o posicionamento do pivot, com coordenadas relativas ao centro do objecto.
• Axis X/Y/Z: Permite a rotação do pivot, originalmente orientado segundo o sistema de eixos local do objecto, em torno de cada um dos eixos coordenados.
3.4.5.1. Exemplo.
Abra o blender. Designe o cubo por M1. Entre em modo edição, [Tab]. Subdivida o cubo 4 vezes, [W] > Number of Cuts : 4.
Active o contexto Object Modifiers da janela de
propriedades e associe um modificador Subdivision
Surface ao cubo. Altere o parâmetro Subdivisions View para 2.
Saia de modo edição, [Tab]. Passe a Top Ortho, [7] > [5].
Duplique o cubo, [Shift]+[D] > [LMB]. Desloque o cubo 3
UB para a direita, [G] > [X] > 3. Designe o segundo cubo por M2.
Seleccione o cubo M1 e escale-o para metade segundo y, [S] > [Y] > 0.5
Passe Front Ortho, [1] > [5]. Seleccione ambos os cubos e escale-os para metade segundo z, [RMB] > [Shift]+[RMB] > [S] > [Z] > 0.5.
Seleccione o cubo M1 e aplique a transformação de escalamento, [Ctrl]+[A] > Scale. Repita o procedimento para o cubo M2.
Seleccione o cubo M1, active o contexto Object
Constraints, associe-lhe um restritor Rigid Bogy
Joint, seleccione o cubo M2 como alvo, especifique
Pivot Type Hinge, e active Display Pivot.
Especifique Pivot X: 1.4 de modo a colocar o
pivot entre os dois cubos.
Especifique Axis Z: 90o, de modo a colocar o plano XZ do pivot paralelamente às faces transversais dos cubos.
Note que a dobradiça roda sempre em torno do
eixo dos XX do pivot.
Na barra da janela Info, seleccione Blender Game.
Com o cubo M1 seleccionado, active o contexto
contexto Physics da janela de propriedades.
Como pode ver no painel Physics, o objecto é do tipo Static. Mantenha as especificações.
Active o painel Collision Bound. Mantenha a
especificação Box.
Seleccione o cubo M2. No painel Physics, especifique
Physics Type : Rigid Body. Mantenha as restantes opções.
Active o painel Collision Bound. Mantenha a especificação Box.
Na barra da janela Info, active Physics Visualization,
de modo a poder ver os limites físicos dos corpos em cena.
Pressione [P] para entrar em modo Blender Game. Pode ver que o cubo M1, por ser um corpo rígido com massa e estar sujeito à força da gravidade, se movimenta segundo -Z. Em consequência da restrinção existente, o cubo roda em torno do eixo dos xx da dobradiça. Para sair de modo jogo pressione [Esc]. |
Em Front Ortho, [1] > [5], seleccione o cubo M1, [RMB], e coloque sobre ele o cursor 3D, [Shift]+[S] > Cursor to Selected.
Insira um cilindro, [Shift]+[A] > Mesh > Cylinder.
Rode o cilindro 90o sobre o eixo dos xx, [R] > [X] > 90.
Desloque o cilindro para a direita 1.4 UB, [G] > [X] > 1.4,
de modo a fazer coincidir o centro do cilindro com o pivot.
Escale o cilindro para metade, [S] > 0.5, e escale-o em y para o triplo da dimensão, [S], > [Y] > 3.
Active o contexto Object Modifiers, e associe um modificador Subdivision Surface, View:2, ao cilindro.
Entre em modo edição, [Tab], insira 4 contornos transversais, [Ctrl]+[R], e desloque-os para cada uma das extremidades do cilindro.
Passe a modo objecto, [Tab], duplique o cilindro,
[Shift]+[D], e desloque-o 2.8 UB para a esquerda,
[G] > [X] > -2.8.
Seleccione os dois cilindros e junte as malhas, [RMB] > [Shift]+[RMB] > [Ctrl]+[J].
Aplique as transformações de escalamento e rotação sofridas pelo cilindro, [Ctrl]+[A] > Scale, [Ctrl]+[A] > Rotation.
Centre a origem da malha, [T] > Origin > Origin to Geometry.
Passe a Front Ortho, [1] > [5]. Seleccione
a malha dos cilindros, [RMB].
Passe a modo edição, [Tab]. Seleccione o vértice central do cilindro da direita, [RMB]. Coloque sobre ele o cursor 3D, [Shift] > [S] > Cursor to Selected.
Insira um círculo, [Shift] > [A] > Circle. Rode-o 90o em torno do eixo dos xx, [R] > [X] > 90.
Faça uma extrusão, [E] > [LMB], e escale o vértices extrudidos até aproximadamente a superfície do cilindro, [S].
Seleccione todos o vértices do círculo, [Ctrl]+[L].
Passe a Top Ortho, [1], e faça uma extrusão em yy até
aproximadamente a superfície do cubo M1, [E] > [Y].
Seleccione todos os vértices do círculo,
[Ctrl]+[L], e separe-os da malha dos cilindros,
[P] > Seleccion. Saia de modo edição, [Tab].
Seleccione o círculo, [RMB]. Entre em modo edição,
[Tab]. Insira um conjunto de contornos, [Ctrl]+[R],
de modo a dar à malha a forma desejada.
Active o contexto Object Modifiers da janela de propriedade,
associe um modificador Mirror à malha, e active Axis: Y.
Passe a modo objecto, [Tab]. Seleccione o cubo M2,
[RMB]. Coloque o cursor 3D sobre a sua origem,
[Shift]+[S] > Cursor to Selected.
Seleccione a malha do círculo, [RMB]. Coloque a sua origem sobre o cursor 3D, [T] > Origin > Origin to 3D Cursor.
Aplique o modificador Mirror, pressionando o botão Aplly do painel do modificador.
Designe a malha do cilindro por C1 e a malha do círculo por C2.
Seleccione a malha C1, [RMB], seguida da malha M1, [Shift]+[RMB] e torne C1 filha de M1, [Ctrl]+[P] > Object.
Seleccione a malha C2, [RMB], seguida da malha M2, [Shift]+[RMB] e torne C2 filha de M2, [Ctrl]+[P] > Object.
Seleccione a malha C1, evoque o contexto Physics, e seleccione Physics Type: No Collision.
Repita o procedimento para a malha C2.
Pressione [P] para entrar em modo Blender Game. |
Seleccione as 4 malhas,[B]. Duplique o conjunto,
[Shift]+[D] > [LMB], e desloque as cópias para a direita
6 UB, [G] > [X] > 6.
Dê às cópias, da esquerda para a direita, os nomes C3, M3, C4, e M4.
Seleccione M2, [RMB], active o contexto Object Constraints,
associe-lhe um restritor Rigid Body Joint, seleccione M3 como alvo,
seleccione Pivot Type: Hinge, active Display Pivot, especifique
Pivot X: 1.6, e Axis Z: 90o.
Como pode verificar, M3 herdou o pivot de M1,
estando devidamente parametrizado.
Com M3 seleccionado, active o contexto Physics do painel de propriedades, e, no painel Physics, seleccione Physics Type: Rigid Body.
Pode verificar que Collision Bounds já se
encontra activo, com Bounds: Box seleccionado.
Pressione [P] para entrar em modo Blender Game.
Pode verificar que a extremidade direita de M4,
em resultado da aceleração da gravidade, ganha suficiente
velocidade para se elevar sobre o lado esquerdo e
penetrar a malha do cilindro à esquerda de C1.
Seleccione C1 e active o contexto Physics da janela de
propriedades. No painel Colision Bouds,
seleccione Convex Hull.
Pressione [P] para entrar em modo Blender Game.
Pode verificar que agora já não se verifica a interpenetração das malhas.
Na barra da janela Info, active o registo dos
dados do movimento das malhas, Game > Record Animation.
Pressione [P] para entrar em modo Blender Game.
Pressione [Esc] para sair do modo Blender Game.
Coloque-se na frame 1, [Shift]+[LA], e proceda à
pré-animação, [Alt+[A].
3.4.6. Shrinkwrap.
O restitor Shrinkwrap limita à superfície do alvo
a localização do centro do objecto a que o
restritor está associado.
• Distance: Distância, medida sobre a direcção definida
pelos centros do objecto e do alvo, a que os dois
centros serão colocados.
• Shrinkwrap Type: Modo de projecção, seleccionável a partir do menu dropdown.
• Nearest Surface Point: O centro do objecto será colocado na superfície do alvo sobre o ponto mais próximo.
• Nearest Vertex: O centro do objecto será colocado na superfície do alvo sobre o vértice mais próximo.
• Project: O centro do objecto será colocado na superfície do alvo sobre o ponto resultante da projecção do centro segundo o eixo seleccionado.
3.4.6.1. Exemplo.
Abra o Blender. Insira um plano, [Shift]+[A] > Mesh > Plane,
e escale-o, [S].
Entre em modo edição, [Tab], e subdivida o plano, [W] > Subdivide, seis vezes, Number of Cuts > 6.
Seleccione os contornos transversais ao eixo dos xx, [Alt] > [RMB], e dê ao plano uma forma ondulada, arrastando-os ao longo do eixo dos zz, recorrendo, por exemplo, aos transformadores.
Seleccione todos os contornos, [A], e faça uma extrusão
segundo o eixo dos zz local, [E] > [Z] > [Z].
Active o contexto Object Modifiers da janela de propriedades , e associe ao plano um modificador Subdivision Surface. Saia de modo edição, [Tab].
Selecione o cubo, [RMB], active o contexto Object
Constraints, e associe-lhe um restritor Shrinwrap.
Na célula Target do painel do restritor, seleccione
o nome do plano.
Movimente livremente o cubo, [G].
Pode ver que o centro do cubo se mantém sobre a superfície do plano.
O restritor funciona à semelhança do restritor Clamp To. Enquanto que no restritor Clamp To o centro do objecto se mantem sobre um linha que é o lugar geométrico de um alvo do tipo Curve, no restritor Shrinwrap o centro do objecto mantem-se sobre a superfície do alvo, que é um objecto do tipo Mesh.
Coloque-se na frame 1, [Shift]+[LA]. Desloque o cubo para a extremidade direita da superfície, [G]. Insira uma keyframe de localização/rotação. [I] > LocRotg.
Coloque-se na frame 100. Desloque o cubo para a zona central superfície, [G]. Rode o cubo 180o em torno do eixo dos yy, [R] > Y > 180. Insira uma keyframe de localização/rotação. [I] > LocRotg.
Coloque-se na frame 200. Desloque o cubo para a extremidade esquerda da superfície, [G]. Rode o cubo 180o em torno do eixo dos yy, [R] > Y > 180. Insira uma keyframe de localização/rotação. [I] > LocRotg.
Coloque-se na frame 1, [Shift]+[LA], e proceda à pré-animação, [Alt+[A].
Pode ver que o cubo roda ao longo da superfície, mantendo sobre ela o seu centro. Se necessário, edite as curvas de interpolação na janela Graph Editor, de modo a dar ao movimento uma dinâmica mais convincente.
Seleccione o cubo, [RMB], active o contexto
Object Modifiers, e associe-lhe um modificador
Subdivision Surface de nível 3.
Active o contexto Object Constraints, e aumente o
valor do parâmetro Distance do painel do restritor
ShrinkWrap de modo a que a superfície, agora arredondada do cubo,
fique a tocar a superfície do plano.
Coloque-se na frame 1, [Shift]+[LA], e proceda à
pré-animação, [Alt+[A].
3.4.6.2. Exemplo.
Abra o Blender. Elimine o cubo, [X]. Insira um plano,
[Shift]+[A] > Mesh > Plane, e escale-o 9 vezes,
[S] > 9.
Entre em modo edição, [Tab], e subdivida o plano 8 vezes,
[W] > Subdivide, [T] > Number of Cuts > 8.
Active o contexto Object Modifiers da janela de propriedades,
e associe um modificador Subdivision Surface ao plano.
Sai de modo edição, [Tab]. Passe a Top Ortho, [7] > [5].
Centre o curso 3D no plano, [Shift]+[S] > Cursor to Selected.
Insira uma curva Bezier, [Shift]+[A] > Curve > Bezier. Entre em modo edição, [Tab].
Pode ver que a curva tem apenas dois controladores.
Seleccione o controlador da direita, [RMB]. Insira mais três controladores, [Ctrl]+[LMB]. Seleccione todos o controladores, [A], e escale a curva à dimensão do plano, [S].
Passe a modo Front Ortho, [1]. Pode ver que todos os
controladores estão no mesmo plano. Seleccione cada um dos
controladores, [RMB], e araste-os segundo z, [G] > [Z],
dando à curva uma forma ondulada. Saia de modo edição, [Tab].
Selecione o plano, [RMB]. Active o contexto Object Constraints
da janela de propriedades, associe um modificador Curve ao plano,
e seleccione o nome da curva Bezier na célula Object.
Passe o modificador Curve para a primeira posição do stack.
Arraste o plano, se necessário, ao longo do eixo dos xx, por
exemplo recorrendo aos controladores, dando-lhe, segundo xx,
a forma ondulada da curva de Bezier.
Aplique as transformações de escalamento
sofridas pelo plano, [Ctrl]+[A] > Scale.
Associe ao plano um modificador do tipo Wave.
Neste momento deve ter três modificadores associados ao
plano. Na primeira posição um modificador Curve, na
segunda posição um modificador Subdivision Surface,
e por último o modificador Wave.
Coloque-se na frame 1, [Shift]+[LA], e proceda à
pré-animação, [Alt+[A].
Passe a Right Ortho, [3] > [5]. Insira uma armação,
[Shift]+[A] > Armature > Single Bone.
Passe a modo edição, [Tab]. Proceda a duas extrusões, [E], criando uma cadeia de ossos como se mostra na figura.
Neste momento, o osso B1 é pai do osso B2, que, por sua
vez, é pai do osso B3.
Seleccione o osso B3 e, no painel Bone da janela de
propriedades, quebre a relação de parentesco com osso B2.
Seleccione a raiz do osso B1, e crie um novo osso,
por extrusão, [E], como se mostra na figura.
Com o osso B4 seleccionado, seleccione o osso
B1, e crie uma relação de parentesco não ligada, de modo
a que o osso B4 se torne filho do osso B1, mas mantenha
a sua raiz sobre a raiz do osso B1, [Ctrl]+[P] > Keep Offset.
Alinhe os ossos, [Ctrl]+[N] > X Axis.
Passe a modo Pose. Seleccione o osso B2, active
o contexto Bone Constraints, associe um restritor
Inverse Kinematics ao osso, e especifique o osso B3 como alvo.
Seleccione o osso B3, movimente-o, [G], e observe
a resposta da armação.
Seleccione o osso B1, associe-lhe um restritor Copy
Location, seleccione o osso B3 como alvo, e desactive
a célula Z, de modo a que a raiz do osso B1 copie as
coordenadas x e y do osso B3, mas tenha liberdade de
posicionamento em Z.
Seleccione o osso B3, movimente-o, [G], e observe a
resposta da armação. Seleccione o osso B1, movimente-o,
[G], e observe a resposta da armação.
Seleccione o osso B4, associe-lhe um restritor Stretch To,
seleccione o osso B2 como alvo, dê o valor 1.0 ao
parâmetro Head/Tail de modo a que o osso B1 aponte
para a ponta do osso B2, e dê ao parâmetro Rest Length
o valor necessário para que a ponta de B1 se posicione
sobre a ponta de B2.
Seleccione o osso B3, movimente-o, [G], e observe a resposta da armação. Seleccione o osso B1, movimente-o, [G], e observe a resposta da armação.
Seleccione o osso B3, associe-lhe um restritor Shrinkwrap,
e seleccione o plano como alvo.
Se necessário, seleccione a raiz do osso B1, e desloque-a,
[G], de modo a que a posição relativa dos ossos seja
a que se mostra na figura.
Seleccione o osso B3, movimente-o, [G], e observe a
resposta da armação.
Coloque-se na frame 1, [Shift]+[LA], desloque o
osso B3 para um dos vértices do plano, e insira
uma key frame de localização.
Coloque-se na última frame, [Shift]+[RA], desloque o osso B3 para o vértice oposto do plano, e insira uma key frame de localização.
Manipule as curvas de interpolação na janela Graph Editor, de modo a dar à armação a dinâmica desejada, por exemplo uma evolução cíclica sobre todo o plano, como se mostra na figura.
Coloque-se na frame 1, [Shift]+[LA], e proceda à pré-animação, [Alt+[A].
Note que o osso B3 se posiciona sempre sobre a superfície do plano , e a raiz do osso B1 se aproxima e fasta do plano, mantendo sempre a mesma coordenada em Z.
3.4.6.3. Exemplo.

Abra o ficheiro do exemplo anterior. Coloque-se na frame1, [Shift]+[LA]. Passe a Object Mode, [Tab], e a Front Ortho, [1] > [5].
Seleccione a armação, [RMB], e elimine-a, [X].
Importe a armação, e a malha que lhe foi associada,
desenvolvida no exemplo 3.3.3.3, a partir da janela
Info, File > Append, ..., > Object, etc.
Em modo objecto, seleccione a armação, [RMB],
coloque na vertical, [R] > [Ctrl], escale-a [S], e
coloque-a imediatamente acima do plano, [G].
Passe a modo edição, [Tab]. Seleccione a raiz do osso inferior, [RMB], e por extrusão, [E], crie um novo osso
Dê ao osso superior o nome B1 ao osso do meio o nome B2, e ao osso agora criado o nome B3.
Passe a modo pose, [Ctrl]+[Tab]. Seleccione o osso B3,
[RMB], active o contexto Bone Constraints da janela de
propriedades, associe-lhe um restritor Shrinkwrap, e
seleccione o plano como alvo.
Seleccione o osso B2,
[RMB]. O osso B2 deve ter um restritor do tipo Track To
associado, tendo o osso B1 como alvo.
Associe ao osso B2 um restritor Copy Location,
e seleccione o osso B3 como alvo.
Associe ao osso B2 um restritor do tipo Limit Rotation.
Active Limit X, Limit Y e Limit Z e, no parâmetro Convert,
especifique Local Space.
O osso B2 tem, portanto três restritores associados,
um restritor Track To, um restritor Copy Location,
e um restritor Limit Rotation.
Seleccione o osso B1, [RMB]. Este deve ter um restritor
do tipo Track To associado, tendo o osso B2 como alvo.
Associe ao osso B1 um restritor do tipo Limit Rotation.
Active Limit X, Limit Y e Limit Z e, no parâmetro Convert,
especifique Local Space.
Associe ao osso B1 um restritor do tipo Copy Location,
especifique o osso B3 como alvo, e desactive Z.
Em resultado desta restrição, o osso B1 copiará as
coordenadas x e y do osso B3, mas terá liberdade de
posicionamento em z.
Associe ao osso B1 um restritor do tipo Copy Location,
especifique o osso B3 como alvo, e desactive X e Y.
Active Offset, e altere o valor do parâmetro Influence para 0.3.
Em resultado desta restrição, o osso B1 respeitará apenas parcialmente o posicionamento em z do osso B3.
O osso B1 tem, portanto, quatro restritores associados, um restritor Track To, um restritor Limit Rotation, e dois restritores Copy Location.
Active o contexto Object Data (Armature), e no
painel Display, desactive X-Ray, e active Stick,
para desimpedir a observação do comportamento da
malha dos cilindros.
Seleccione o osso B3, arraste-o sobre o plano, [G], e observe o comportamento do piston.
Note que, ao contrário do exemplo anterior, a raiz do osso B1 se aproxima e fasta do plano, mas não mantem sempre a mesma coordenada em Z, exibindo um factor de amortecimento relativamente à evolução da coordenada z do osso B3.
3.4.6.4. Exemplo.
Abra o Blender. Parta do cubo padrão, e, utilizando o conjunto
de técnicas de modulação que conhece, modele uma
peça semelhante à que se mostra na figura.
Insira um plano, [Shift] > Mesh > Plane, e
modele uma peça semelhante à que se mostra na figura.
Seleccione o cubo, active o contexto Object Constraints
da janela de propriedades, associe-lhe um restritor do tipo
ShrinkWrapap, e altere o parâmetro Distance de modo a que o
limite inferior do cubo toque a superfície do plano.
Coloque-se na frame 1, [Shift]+[LA]. Desloque o
cubo para, aproximadamente, o centro do plano, [G].
Seleccione o plano, [RMB], e insira uma keyframe de
localização, [I] > Location.
Coloque-se na frame 11, [Shift]+[RA]. Desloque o plano
para a esquerda até que o cubo fique aproximadamente
sobre o seu extremo, [G] > [X].
Seleccione o plano, [RMB], e insira uma keyframe
de localização, [I] > Location.
Coloque-se na frame 31, [Shift]+[RA]. Desloque o
plano para a direita até que o cubo fique aproximadamente
sobre o seu extremo, [G] > [X].
Seleccione o plano, [RMB], e insira uma key frame de
localização, [I] > Location.
Coloque-se na frame 41, [Shift]+[RA]. Desloque o cubo desloque o plano até que o cubo fique novamente sobre a sua zona central, [G] > [X].
Seleccione o plano, [RMB], e insira uma key frame de localização, [I] > Location.
Na janela Graph Editor, altere o modo de interpolação
para linear, Key > Interpolation Mode > Linear, e altere
o modo de extrapolação para cíclico, Channel > Extrapolation Mode > Make Cyclic.
Deve ficar com uma curva de interpolação X Location como a que se mostra na figura (opcionalmente, pode eliminar os canais Y e Z Location).
Coloque-se na frame 1, [Shift]+[LA], e proceda
à pré-animação, [Alt+[A].
3.4.7. Action.
O restritor Action permite desencadear uma Acção em que o objecto
a que o restritor está associado é protagonista,
com base no controlo feito por uma transformação
sofrida pelo alvo.
• Action: Nome de uma Acção previamente definida para o objecto.
• Transform Channel: Tipo de transformação do alvo que desencadeia a Acção, seleccionável a partir do menu dropdown.
• Action Length Start/End: Do conjunto de frames a que corresponde a acção, especificação da primeira e última frame a mapear.
• Target Range Min./Max.: Intervalo de variação do parâmetro relativo à transformação do alvo a que corresponderá o mapeamento da acção.
No caso correspondente à figura, o objecto executará a acção Cube2Action, evoluindo, proporcionalmente, entre as frames 0 e 100 dessa acção, sempre que a coordenada x do alvo, no sistema de coordenadas global, evolui entre os valores 0.0 e 1.0.
3.4.7.1. Exemplo.
Vamos começar por ver um exemplo de controle de uma acção definida para uma malha a partir da manipulação de um outro objecto do tipo malha.
Abra o ficheiro salvo no ponto 8 do exemplo 3.4.4.1
A partir da barra da janela Info, active a pré-configuração de janelas Animation.
Seleccione o Cubo, [RMB]. Na barra da janela Dope Sheet,
seleccione o contexto Action Editor.
Pode ver que o cubo tem associada a Acção Cube Action.
Pressione o botão com a letra F de modo a associar a acção ao objecto virtual Fake.
Pressione o botão com o símbolo X de modo a quebrar a associação entre a acção CubeAction e o Cubo.
Uma vez que a acção CubeAction deixou de estar associada ao cubo, e não estando associada a mais nenhum objecto, ao salvar o ficheiro a acção perder-se-ia. Daqui a necessidade de ter previamente associado a acção ao objecto virtual Fake.
Recorrendo à tabela de propriedades da janela 3D,
[N], coloque o cursor 3D no ponto [XYZ: -25.0, 0.0, -10.0].
Passe a Front Ortho, [1] > [5]. Insira um plano,
[Shift]+[A] > Mesh > Plane, e rode-o 90o sobre o eixo dos
xx, [R] > [X] > 90.
Entre em modo edição, [Tab]. Dê à malha a
forma que se mostra na figura, recorrendo às técnicas
de modelação que conhece.
Passe a modo objecto, [Tab]. Active o contexto Object
Constaints da janela de propriedades, e associe ao cubo um
restritor Limit Location.
Especifique os limites de posicionamento da malha conforme se mostra na figura, e active For Transform.
Seleccione a malha, [RMB], movimente-a livremente, [G], e observe que esta apenas se desloca na vertical entre os limites inferior e superior do círculo.
Dê à malha o nome Controle.
Seleccione o cubo, [RMB]. Active o contexto Object
Constraints, e associe-lhe um restritor do tipo Action.
Seleccione o nome da malha de controle como alvo,
seleccione o nome da acção CubeAction, epecifique Transform Channel
: Location Z, Action Length: [11, 31], Target Range: [-10, 10],
e passe o restritor para a primeira posição do Stack.
Seleccione a malha Controle, [RMB], movimente-a livremente , [G], e observa como esta controla agora a evolução da acção CubeAction. |
3.4.7.2. Exemplo.
Vamos agora ver um exemplo de controle de uma acção associada a um osso de controle de uma cadeia de cinemática inversa, com base na manipulação de um objecto do tipo malha.
Abra o ficheiro do exemplo 3.3.5.4.
A partir da barra da janela Info, active a pré-configuração
de janelas Animation. Passe a Front Ortho, [1] > [5].
Seleccione a armação, [RMB], em entre em modo pose, [Ctrl]+[Tab].
Seleccione o osso B5, [RMB].
Note que o exemplo que se segue é puramente didático. O osso B5 controla toda a cinemática do modelo, pelo que através da sua manipulação e inserção de keyframes em modo pose é possível uma qualquer dinâmica desejável para a animação.
Apenas por uma questão de simplificação de exposição, altere, no
painel Transform da tabela de propriedads da janela 3D, o modo de
registo das rotações de Quaternion para XYZ Euler.
Coloque-se na frame 1, [Shift]+[LA], e insira uma
keyframe de rotação, [I] > Rotation.
Coloque-se na frame 41, por exemplo, editando a célula da janela Timeline.
Rode o osso B5 360o e insira uma keyframe, [I] > Rotation.
Na janela Graph Editor, seleccione Key > Interpolation Mode > Linear.
Na janela DopeSheet, seleccione o contexto Action Editor.
Pode ver que o osso B5 tem associada a acção ArmatureAction.
Pressione o botão com a letra F de modo a associar a
acção ao objecto virtual Fake.
Pressione o botão com o símbolo X de modo a quebrar a associação entre a acção ArmatureAction e o osso B5.
Se pressionar [Alt]+[A], pode verificar que não existe agora qualquer animação activa.
Ainda em modo pose e com o osso B5 activo, centre
o cursor 3D no osso, [Shift]+[S] > Cursor to Selected.
Saia de modo pose para modo edição, [Ctrl]+[Tab].
Insira um círculo, [Shift]+[A] > Mesh > Circle. Rode-o 90o em torno do eixo dos xx, [R] > [X] > 90.
Entre em modo edição, [Tab], e, recorrendo à técnicas de modelação que conhece, modele uma malha como a que se mostra na figura.
Aplique as transformações de rotação sofridas pela malha,
[Ctrl]+[A] > Rotation.
Passe a modo objecto, [Tab]. Active o contexto Object Constaints da janela de propriedades, e associe à malha um restritor Limit Rotation.
Especifique os limites de posicionamento da malha conforme se mostra na figura, e active For Transform.
Seleccione a armação, [RMB], passe a modo pose,
[Ctrl]+[Tab], e seleccione o osso B5, [RMB].
Active o contexto Bone Constraints da janela de propriedades, e associe ao osso B5 um restritor Action.
Especifique os parâmetros do painel do restritor
conforme se mostra na figura.
Passe a modo objecto, [Ctrl]+[Tab], seleccione a malha do círculo, [G], e rode-a livremente, [R].
Com a malha do círculo activa, desloque-se para a frame 1 , [Shift]+[LA], e insira uma keyframe de rotação, [I] > Rotation.
Desloque-se para frame 11, [Shift]+[UA], rode o círculo até ao limite angular superior, [R], e insira uma keyframe de rotação, [I] > Rotation.
Desloque-se para frame 21, [Shift]+[UA], rode o círculo até ao limite angular inferior, [R], e insira uma keyframe de rotação, [I] > Rotation.
Na barra da Janela Graph Editor, seleccione
Channel > Extrapolation Mode > Make Cyclic.
Coloque-se na frame 1, [Shift]+[LA], e proceda
à pré-animação, [Alt+[A].
3.4.7.3. Exemplo.
Vamos agora ver um exemplo de controle de uma acção associada a uma cadeia de cinemática directa.
Abra o ficheiro Perna.zip.
Centre o cursor na malha, [Shift]+[S] > Cursor to Selected.
Insira uma armação, [Shift]+[A] > Armature > Single Bone.
Entre em modo edição, [Tab]. Active o contexto Object Data (Armature), e, no painel Display, active X-Ray e Names.
A partir da ponta do primeiro osso, e procedendo a um
conjunto de extrusões, [E], crie uma cadeia de 4 ossos,
e disponha-os tal como se mostra na figura.
Passe a Front Ortho, [1] > [5], e verifique o enquadramento
da armação com a malha. Se necessário, seleccione todos os
ossos, [A], e desloque-os, [G].
Passe novamente a Right Ortho, [3], e alinhe a
rotação dos ossos, [Ctrl]+[N] > X Axis.
Insira um osso sob a cadeia, [Shift]+[A], e
coloque-o sobre a cadeia, como se mostra na figura.
Passe a modo objecto, [Tab]. Seleccione a malha da
perna, [RMB], seleccione a armação, [Shift]+[RMB], e
estabeleça uma relação de parentesco com atribuição automática
de pesos, [Ctrl]+[P] > With Automatic Weights.
Seleccione a armação, [RMB], passe a modo pose, [Ctrl9+[Tab],
seleccione a malha da perna, [Shift]+[RMB], e passe a modo
Weight Paint, [Ctrl]+[Tab].
Seleccione sucessivamente cada um dos ossos, [RMB], e observe o peso da associação de cada um dos vértices da malha da perna aos ossos da armação.
Os vértices da malha que estão sob influência máxima
do osso seleccionado estão coloridos a vermelho, e os
ossos que não influenciados pelo osso têm cor azul.
Passe a modo Objecto, [Ctrl]+[Tab], e seleccione a
armação, [RMB]. Deve passar automaticamente a modo pose.
Seleccione todos os ossos da cadeia, [B], e insira uma keyframe de localização e rotação, [I] > LocRot.
Passe à frame 11, [Shift]+[UA].
Seleccione a ponta do osso B2 e rode-a ligeiramente
para a direita, [G]. Seleccione a ponta do osso B3 e
rode o osso ligeiramente para cima, [G]. Seleccione a
ponta do osso B4 e rode-o de modo a ficar de novo na
horizontal, [G]. A cadeia de osso deve ficar aproximadamente
na posição que se mostra na figura.
Seleccione o osso B1, e arraste a cadeia até
colocar a ponta do pé na posição inicial, como se mostra na figura.
Seleccione todos os ossos da cadeia, [B], e insira uma keyframe de localização e rotação, [I] > LocRot.
Observe a animação, seleccionando, [LMB], a linha temporal
na janela Timeline, e arrastando-a entre a frame 1 e 11.
Coloque-se na frame 1, [Shift]+[LA].
A partir da barra da janela Info, active a pré-configuração de janelas Animation
Com um dos ossos da cadeia seleccionado (em modo pose), active o contexto Action Editor na barra da janela DopeSheet.
Pressione o botão com a letra F de modo a associar a acção ArmatureAction ao objecto virtual Fake.
Pressione o botão com o símbolo X de modo a quebrar a associação entre a acção e a armação.
A partir da barra da janela Info seleccione novamente o modo Default.
Em modo pose, seleccione o osso B4, [RMB].
Active o contexto Bone Constaints da janela de propriedades, e associe-lhe um restritor Action. Configure os parâmetros do painel como se mostra na figura.
Seleccione sucessivamente todos os ossos da cadeia e repita o procedimento anterior.
Note que, ao contrário do exemplo anterior, em que a acção está associada a uma cadeia de cinemática inversa, numa cadeia de cinemática directa, como é aqui o caso, é necessário associar o restritor Action a todos os ossos que participam na acção.
Seleccione o osso Bone, desloque-o para a esquerda, e
observe a evolução da acção.
Seleccione o osso Bone, active o contexto Bone
Constaints da janela de propriedades, e associe-lhe um
restitor Limit Location. Configure os parâmetros do painel
como se mostra na figura.
Passe a modo edição, [Tab].
Insira um plano e dê-lhe a forma da malha que se mostra na figura, ou importe a malha do exemplo 3.4.7.1.
Dê à malha o nome cursor. Aplique as transformações
de escalamento, [Ctrl]+[A] > Scale, e rotação, [Ctrl]+[A] > Rotation.
Seleccione o osso Bone, [RMB]. Em modo objecto,
active o contexto Bone da janela de propriedades
e, no painel Display, seleccione o nome da malha
cursor na célula Custom Shape.
Note que no painel Display do contexto Object Data
da janela de propriedades, a opção Shape deve estar activa.
Se necessário, seleccione a malha cursor, [RMB], passe a
modo edição, [Tab], e escale, [S], e mova, [G],
a malha de forma a dar ao osso a dimensão e posição desejada.
Seleccione a malha cursor e, em modo objecto, passe-a para a layer 2, [M] > 2.
Note que, como as referências nos restritores são locais, pode seleccionar a armação, em modo objecto, deslocá-la para outra posição do espaço 3D, passar a modo pose, e activar a acção, por deslocamento do osso Bone.
Com a armação seleccionada em modo objecto, active o contexto Object Data da janela de propriedades, e, no painel Display, desactive X-Ray, desactive Names, e active Stick.
Passe a modo pose, [Ctrl]+[Tab]. Seleccione o
osso cursor e movimente-o livremente, [G].