S3.A3.
3.3. Tracking Constraints.
3.3.4. Locked Track.
Locked Track impõe que um dos eixos do sistema
de coordenadas local do objecto a que o restritor está
associado aponte sempre, o mais aproximadamente possível,
para o alvo, e que um outro eixo nunca mude de direcção.
Este último apenas poderá rodar sobre si próprio,
ou deslocar-se mantendo a direcção.
• To: Eixo, do sistema local do objecto, que aponta para o alvo.
• Lock: Eixo, do sistema local do objecto, que não pode mudar de direcção.
3.3.4.1. Exemplo.
Para clarificar a dinâmica imposta pelo restritor Locked Track, e nomeadamente as suas diferenças relativamente ao restritor Track To, vamos retomar o Exemplo 3.3.3.1.
Seleccione a câmara, active o contexto Object Constraints, e elimine o restritor Track To.
Posicione-se na 1ª frame, [Shift]+[LA], e rode a
câmara de modo a que o seu eixo dos yy local fique alinhado
com o eixo dos zz global.
Seleccione o cubo, [RMB], o alvo, seleccione
a câmara, [Shift]+[RMB], o objecto, e associe um restritor
Locked Track à câmara, [Ctrl]+[T] > Locked Track.
Seleccione a câmara e active o contexto Object Constraints na janela de propriedades. No painel do restritor, altere o parâmetro To para -Z, e Up para Y, para garantir a correcta orientação da câmara.
Pressione [Alt]+[A] e observe como a câmara percorre a trajectória sempre com o eixos dos yy local alinhado com a vertical.
Note como o cubo sai do enquadramento. Da restrição imposta ao eixo dos yy, resulta que o eixo dos zz não aponta garantidamente para o alvo, mas apenas o mais aproximadamente possível.
Neste caso, a aplicação do restritor Track To seria adequada para garantir um travelling sobre um objecto que se estendesse ao longo do eixo dos zz global.
Seleccione o cubo, [RMB], e escale-o segundo zz,
[S] > [Z] > 10.
Pressione [Alt]+[A] e observe como a câmara percorre a trajectória sempre com o eixos dos yy local alinhado com a vertical, e roda sobre este eixo de modo a que o seu eixo dos zz aponte sempre para o eixo do paralelepípedo, garantindo o seu enquadramento. |
3.3.5. Inverse Kinematics.
Inverse Kinematics (Cinemática Inversa), é um restritor
apenas associável a objectos do tipo osso, e permite
animar toda a cadeia de ossos de que o osso objecto é
descendente em resposta ao movimento do osso alvo.
Para além de poder ser evocado a partir da janela de propriedades, o restritor IK tem uma combinação de teclas dedicada.
Em modo pose, com dois ossos seleccionados, primeiramente o osso alvo seguido do osso objecto, pressione [Shift]+[I] e seleccione [To Active Bone] na janela que surge no ecrã.
• Pole Target: Alvo secundário da cadeia IK, indicativo da direcção que algumas dinâmicas alternativas da cadeia devem preferir (ver exemplos).
• Iterations: Número de iterações utilizadas no cálculo da cinemática IK da cadeia de ossos.
• Chain Length: Número de ossos a incluir na cadeia IK. Se o valor for 0 serão incluídos todos os ossos ascendentes do osso objecto.
• Use Tail: Quando activo, a cadeia IK tem início na raiz do osso objecto (e não na ponta).
• Stretch: Quando activo, permite o alongamento dos ossos que constituem a cadeia IK, se o parâmetro Stretch do painel Inverse Kinematics do contexto Bone for não nulo.
• Weight Position/Rotation: Apenas relevante em múltiplas cadeias IK com troços comuns, estes parâmetros permitem especificar a percentagem de influência de cada uma das cadeias IK sobre os ossos comuns.
• Target: A sua desactivação permite criar cadeias IK sem alvo, sendo toda a cadeia de ossos guiada pelo osso a que o restritor está associado.
• Rotation: Quando activo, o osso da cadeia IK a que o restritor está associado segue as transformações de rotação do alvo.
3.3.5.1. Exemplo.
Abra o Blender, passe a Front Ortho, [Num1] > [Num5], e elimine o cubo, [X].
Insira uma armação, [Shift]+[A] > Armature > Single Bone.
Entre em modo edição, [Tab]. Rode o osso para a direita e leve a ponta do osso até ao ponto [-2.0, 0.0, 0.0], [G] > [Ctrl].
Na janela de propriedades, active o contexto
Object Data, e, no painel Display, active Names.
Active o contexto Bones, e altere o nome do osso
para B1.
Com a ponta do osso B1 seleccionada, faça uma extrusão,
[E], e leve a ponta do novo osso até ao ponto
[-2.0, 0.0, -2.0], [G] > [Ctrl].
Altere o nome do osso para B2.
Com a ponta do osso B2 seleccionada, faça uma extrusão, [E], e leve a ponta do novo osso até ao ponto [-2.5, 0.0, -2.0], [G] > [Ctrl].
Altere o nome do osso para B3.
O princípio fundamental da animação de uma cadeia de ossos com base na cinemática inversa (IK) é o da manipulação do último osso da cadeia para posicionar automaticamente todos os ossos que a constituem, portanto uma acção que se desenrola do último osso para o primeiro, e dai o nome de cinemática inversa.
Relativamente ao exemplo em desenvolvimento, poderíamos pensar que os ossos B3, B2, e B1 estão associados, respectivamente, ao pé e à parte inferior e superior da perna de um modelo, e que, em resultado de uma cadeia IK, poderíamos automaticamente animar os ossos da perna em resultado da decisão sobre onde colocar o osso do pé.
Ou seja, particularizando ainda mais, uma cadeia IK pode, em princípio, decidir automaticamente toda a dinâmica das pernas de um movimento de caminhada, apenas com base na informação sobre a posição dos pés em cada instante.
Seleccione o osso B3 e entre em Modo Pose, [Ctrl]+[Tab].
Tente mover o osso B3, [G].
Como vê, por ser um filho
ligado do osso B2, o osso B3 não tem liberdade de translação,
pelo que não pode ser o alvo de uma cadeia IK.
Seleccione o osso B3 e entre em modo edição, [Tab].
Quebre a ligação entre o osso B3 e B2,
[Alt]+[P] > Disconnect Bone.
Entre em modo pose, [Ctrl]+[Tab]. Mova o osso B3, [G]. O osso não tem agora qualquer restrição de movimentos.
Seleccione o osso B3, [RMB], o alvo, seleccione o osso B2, [Shift]+[RMB], o objecto, e associe um restritor IK ao osso B2, [Shift]+[Ctrl]+[C] > Inverse Kinematics.
Mova o osso B3, [G]. Como vê, ao mover o osso B3, os ossos B2 e B1 respondem ao movimento. A resposta no entanto é completamente descoordenada. Um osso com relação de parentesco, embora não ligada, com os ossos de uma cadeia, não pode ser o alvo de uma cadeia IK.
Seleccione o osso B2, active o contexto Bone Constraints, e elimine o restritor IK.
Entre em modo edição, [Tab]. Seleccione o osso B3
e quebre a relação de parentesco entre o osso B3 e
B2, [Alt]+[P] > Clear Parent.
Alternativamente, para quebrar a relação de parentesco,
pode activar o contexto Bone, e eliminar o nome do
osso pai da célula Parent.
Entre em modo pose, [Ctrl]+[Tab]. Seleccione o osso B3,
[RMB], o alvo, seleccione o osso B2, [Shift]+[RMB],
o objecto, e associe um restritor IK ao osso B2,
[Shift]+[Ctrl]+[C] > Inverse Kinematics.
Fica assim definida uma cadeia IK composta pelos ossos
B2 e B1 e cujo alvo é o osso B3.
Note que a coloração do osso B2 passou a verde-claro,
indicando que tem associado um restritor IK. Note
também a linha amarela tracejada, que liga a ponta do
osso B2 à raiz do osso B1, indicando a extensão da cadeia IK.
Seleccione o osso B2 e active o contexto Bone Constraints. Na configuração padrão o parâmetro Chain Length tem o valor 0, significando que todos os ossos ligados da cadeia de osso são incluídos na cadeia IK. No presente exemplo, obterá a mesma dinâmica da cadeia de ossos se alterar o parâmetro para 2. Em modo pose, Seleccione o osso B2 e movimente-o, [G]. Pode ver que todos os ossos da cadeia se dispõem de modo a que a ponta do osso B2, osso a que o restritor está associado, acompanhe, ou esteja o mais próxima possível, da raiz do osso B3, que constitui o alvo da cadeia IK, rodando em torno da raiz do osso B1, o último osso incluído na cadeia. Rode o osso B3, [R], pode ver que não se regista qualquer movimento da cadeia. |
3.3.5.2. Exemplo.
Retome o exemplo anterior. Seleccione o osso B2 e elimine
o restritor.
Passe a modo edição, [Tab]. Seleccione o osso B3, e,
no painel Relations do contexto Bone da janela de propriedades,
torne o osso B3 filho ligado do osso B2.
Duplique o osso B3, [Shift]+[D] > [LMB]. Desloque
o novo osso para a esquerda, [G] > [Ctrl],
de modo a fazer coincidir a sua raiz com a
ponta do osso B3.
O novo osso, por ter sido criado por duplicação do osso B3, herdou a sua relação de parentesco com osso B2.
No contexto Bone da janela de propriedades, dê ao novo osso o nome B4, e quebre a relação de parentesco com o osso B2.
Entre em modo pose, [Ctrl]+[Tab]. Seleccione
o osso B4, [RMB], o alvo, seleccione o osso B3,
[Shift]+[RMB], o objecto, e associe um restritor
IK ao osso B3, [Shift]+[Ctrl]+[C] > Inverse Kinematics.
Fica assim definida uma cadeia IK composta pelos ossos B3, B2 e B1 e cujo alvo é o osso B4. Note a linha amarela tracejada, que liga a ponta do osso B3 à raiz do osso B1, indicando a extensão da cadeia IK.
Seleccione o osso B3 e active o contexto Bone Constraints.
O parâmetro Chain Length tem o valor 0, configuração padrão, neste caso obterá a mesma dinâmica da cadeia de ossos se alterar o parâmetro para 3.
Se alterar o valor para 2 a linha amarela estender-se-á até à raiz do osso B2, e a cadeia IK passará a conter apenas os ossos B1 e B2.
Active o parâmetro Rotation, de modo a que o osso B3 siga as transformações de rotação do alvo.
Seleccione o osso B4, [RMB] e rode-o, [R]. Pode ver como toda a cadeia IK acompanha convenientemente o movimento de rotação do alvo, o osso B4, em torno do seu pivot, a raiz, o osso B4. |
3.3.5.3. Exemplo.
Quando os ossos da cadeia IK não estão todos no mesmo plano, originalmente ou em resultado da animação pretendida, podem resultar torções indesejadas.
O controle das torções dos ossos é feito no painel Inverse Kinematics do contexto Bone da janela de propriedades.
Vamos em seguida ver um exemplo de como proceder, tomando como base a armação desenvolvida no ponto anterior.
Em modo edição, seleccione e elimine os ossos B3 e B4.
Seleccione a ponta do osso B2, [RMB]. Passe a Top Ortho, [7]. Através de um conjunto de extrusões, [E] > [Ctrl], crie 3 ossos, conforme se mostra na figura, e dê-lhes os nomes B3, B4 e B5, por exemplo no painel Item da tabela de propriedades da janela 3D.
Seleccione o osso B5 e quebre a relação de parentesco
que este tem com o osso B4, por exemplo no painel Relations
do contexto Bone da janela de propriedades.
Passe a modo pose, [Tab]. Seleccione o osso B5, [RMB], o alvo, seleccione o osso B4, [Shift]+[RMB], o objecto, e associe um restritor IK ao osso B4, [Shift]+[Ctrl]+[C] > Inverse Kinematics.
Fica assim definida uma cadeia IK composta pelos ossos B4 a B1 e cujo alvo é o osso B5. Note a linha amarela tracejada, que liga a ponta do osso B4 à raiz do osso B1, indicando a extensão da cadeia IK.
Com o osso B4 seleccionado, active Rotation
no painel do restritor IK.
Passe a Front Ortho, [1]. Seleccione o osso B5 e rode-o, [R].
Pode ver que, do cálculo automático da posição dos ossos da cadeia, resulta que, ao acompanhar o movimento de rotação do osso B4, os ossos B3, B2 e B1 sofrem uma torção. Note, nomeadamente, que osso B3 perde o alinhamento com o eixo dos yy.
Vamos admitir que esta torção não é desejada,
e ver como corrigir a situação.
Active Axes no painel Display do contexto Object Data da janela de propriedades
Pode ver na figura, que o sistema de eixos associado a um objecto do tipo osso corresponde ao sistema Normal, activável na barra da janela 3D, cuja representação pode ser usada em alternativa.
Em modo pose, seleccione o osso B1 e, no painel
Inverse Kinematics do contexto Bone da janela de propriedades,
bloqueie a possibilidade de rotação do osso em torno dos
eixos dos xx e dos yy. Portanto, o osso, em
resultado das acções da cadeia IK, apenas poderá
rodar no plano XY.
Seleccione o osso B2 e bloqueie a possibilidade de rotação
do osso em torno dos eixos dos xx e dos yy.
Portanto, o osso, em resultado das acções da cadeia IK,
apenas poderá rodar no plano XY.
Seleccione o osso B3 e bloqueie a possibilidade de rotação
do osso em torno do dos eixos dos xx e dos zz.
Portanto, o osso, em resultado das acções da cadeia IK, apenas
poderá rodar em torno do seu eixo longitudinal, mantendo sempre
a mesma direcção raiz/ponta.
Numa qualquer perspectiva, seleccione o osso B5 e rode-o em torno do seu eixo dos xx, [R] > [X] >[X]. Pode ver que a cadeia IK tem agora a dinâmica desejada, mantendo-se os ossos B1 e B2, sem qualquer torção, no plano, XZ do sistema global, e rodando o osso B3 sobre o seu eixo longitudinal, à medida que a sua ponta acompanha a raiz do osso B4. |
3.3.5.4. Exemplo.
O exemplo seguinte mostra uma aplicação menos comum
de uma cadeia IK, em que o restritor não é
associado ao último osso de uma cadeia de ossos,
como seria normal, e em que a animação é conduzida,
não pelo osso alvo, mas sim pelo primeiro osso da
cadeia, de onde resulta um misto de cinemática
directa e inversa.
Em modo edição, seleccione a ponta do osso B1, [RMB], e proceda a uma extrusão, [E] > [Ctrl], levando a ponta do novo osso até ao ponto [2.0, 0.0, 0.0]. Proceda a 3 novas extrusões levando as pontas dos ossos até aos pontos [2.0, 0.0, -0.75], [2.0, 0.0, -1.5] e [2.0, 0.0, -3.0].
Dê ao ossos os nomes C1, C2, C3 e C4, por exemplo no painel Item da tabela de propriedades da janela 3D.
Seleccione o osso C3, [RMB], duplique-o, [Shift]+[D], e
translade-o segundo Z, [G] > [Z], colocando a raiz
no ponto [2.0, 0.0, -2.5].
Dê ao osso o nome C5. Por ter sido duplicado do osso C3. o osso C5 herdou a sua relação de parentesco com o osso C2. Seleccione o osso C5 e elimine a relação de parentesco, por exemplo, editando a célula parent do painel Relations do contexto Bone da janela de propriedades.
Passe a modo pose, [Tab]. Seleccione o osso C5,
[RMB], o alvo, seleccione o osso C3, [Shift]+[RMB],
o objecto, e associe um restritor IK ao osso C3,
[Shift]+[Ctrl]+[C] > Inverse Kinematics.
Active Rotation no painel do restritor IK.
Dê ao parâmetro Chain Length o valor 2,
de modo a que apenas os ossos C2 e C3 sejam incluídos na
cadeia IK.
Seleccione o osso C1, rode-o, e observe a dinâmica da cadeia de ossos C1 a C4, determinada pela restrição imposta ao osso C3, que constantemente tenta manter a direcção do osso alvo.
Seleccione o osso C1, [RMB], passe a modo edição, [Tab], e torne-o filho do osso B1, editando a célula Parent do painel Relations do contexto Bone do painel de propriedades.
Seleccione o osso B5 e rode-o, [R]. Observe a dinâmica de toda a armação, característica dos sistemas de bombeamento de água, ou petróleo (por exemplo dos mecanismos típicos de extração de petróleo conhecidos por PumpJack).
3.3.6. Spline IK.
Sline IK é um restritor apenas associável a objectos do tipo
osso, que impõe o alinhamento de uma cadeia de ossos
ao longo de um alvo do tipo Curve.
O restritor é especialmente indicado para a fácil recriação da dinâmica de corpos filiformes longos e flexíveis, orgânicos ou não, e pressupõe a utilização de uma cadeia de ossos, cujo último osso é o objecto a que o restritor é associado, e de um objecto do tipo Curve que constitui o alvo do restritor.
• Spline Fitting:
• Chain Length: Número de ossos que constitui a cadeia, incluindo o osso a que o restritor está associado.
• Even Divisions: Quando activo, o comprimento relativo dos ossos da cadeia é ignorado no processo de adaptação à curva
• Chain Offset: Quando activo, permite o deslocamento da cadeia de ossos relativamente à posição do alvo.
• Chain Scaling:
• Y Stretch: Alonga o comprimento de cada um dos ossos de modo a adaptar a cadeia de ossos ao comprimento total da curva.
• XZ Scale Mode: Tipo de escalamento da cadeia no plano XZ seleccionável a partir do menu dropdown.
• Use Curve Radius: Quando activo, procede a um segundo ajustamento no plano XZ com base na forma da curva.
3.3.6.1. Exemplo.
Abra o Blender. Elimine o cubo, [X]. Passe a Right Ortho,
[3] > [5].
Insira uma curva Bezier, [Shift]+[A] > Curve > Bezier. Rode a curva de 90o em x e em z, [R] > [X] > 90, [R] > [Z] > 90.
Entre em modo edição, [Tab]. Inverta o sentido da curva, [W] > Switch Direction. Desloque toda a curva para a esquerda, [G] > [Y], de modo a fazer coincidir aproximadamente a extremidade direita com a sua origem.
Subdivida a curva, [W] > Subdivide, e, manipulando
os controladores de Bezier, dê-lhe aproximadamente a forma da figura.
Seleccione o controlador da direita, [RMB], e coloque
sobre ele o cursor 3D, [Shift]+[S] > Cursor to Selected.
Saia de modo edição, [Tab].
Insira uma armação, [Shift]+[A] > Armature > Single Bone.
Seleccione de novo a curva, [RMB], entre em modo edição, [Tab], seleccione o controlador da esquerda, [RMB], coloque sobre ele o cursor 3D, [Shift]+[S] > Cursor to Selected, e saia de modo edição, [Tab].
Seleccione o osso, [RMB], entre em modo edição, [Tab], e coloque a ponta do osso sobre a extremidade esquerda da curva, [Shift]+[S] > Selection to Cursor.
Seleccione o osso, [RMB], entre em modo edição, [Tab],
e subdivida-o 2 vezes, [W] > Subdivide, [W] > Subdivide.
Saia de modo edição, [Tab].
Insira um cilindro, [Shift]+[A] > Mesh > Cylinder. Escale-o
em x e em y, [S] > [Shift]+Z. Rode-o de 90o em x, [R] > [X] > 90,
e desloque-o para a direita, [G] > [Y], sobrepondo-o à armação.
Seleccione a armação, [RMB], e, no painel Display do contexto Object Data, active X-Ray.
Selecione o cilindro, [RMB]. Active Shading Smooth
no painel de operadores da janela 3D, [T].
No contexto Object Modifiers da janela de propriedades, associe um modificador Subdivision Surface ao cilindro e altere Subdivision View para 2.
Entre em modo edição, [Tab]. Insira uma série de contornos, [Ctrl]+[R], nomeadamente, nas extremidades e coincidentes com as junções dos ossos. Saia de modo edição, [Tab].
Seleccione a curva, [RMB], e coloque o cursor 3D sobre a
sua origem, [Shift]+[S] > Cursor to Selected.
Insira uma nova armação, [Shift]+[A] > Armature > Single Bone. Entre em modo edição, [Tab], e rode o osso 90o para a direita, [G] > [Ctrl]. Saia de modo edição, [Tab].
Seleccione o cilindro, [RMB], em seguida a 1a armação,
[Shift]+[RMB], e estabeleça uma relação de parentesco com
associação automática de pesos, [Ctrl]+[P] > With Automatic Weights.
Seleccione o cilindro, e, no contexto Object Modifiers da janela de propriedades, troque a ordem no stack dos modificadores Armature e Subsurf.
Seleccione a 1ª armação, [RMB], entre em modo pose, [Ctrl]+[Tab],
e seleccione o osso da esquerda, [RMB].
Active o contexto Bone Constraints da janela de propriedades, e associe um modificador Spline IK ao osso. Seleccione o nome da curva Bezier na célula Target, incremente Chain Lenght para 4, active Even Divisions, e desactive Y Stetch.
Seleccione a curva Bezier, [RMB], seleccione de seguida a
segunda armação, [Shift]+[RMB], e estabeleça uma relação de
parentesco, [Ctrl]+[P] > Bone.
Seleccione a curva Bezier, [RMB], active o contexto Physics
da janela de propriedade, e associe um simulador do tipo
Soft Body à curva.
Seleccione a curva Bezier e esconda-a, [H]. Seleccione a 1ª armação e esconda-a, [H].
Pressione [Alt]+[A] e observe a animação do cilindro sobre a influência da força da gravidade. |
Com a animação a decorrer, seleccione a segunda armação, [RMB], entre em modo pose, [Ctrl]+[Tab], e movimente o osso. |
3.3.7. Stretch To.
Stretch To orienta o eixo dos yy do objecto a que o restritor
está associado na direcção do alvo, e, se necessário,
deforma o objecto, alongando-o, ou comprimindo-o,
nessa direcção.
• Rest Length: Especifica a distância entre o objecto e o alvo para a qual a deformação do objecto é nula.
• Reset: Quando pressionado, desfaz a deformação e atribui a Rest Length a distância actual entre o objecto e o alvo.
• Volume Variation: Factor de proporcionalidade da deformação.
• Volume: Especifica as direcções de deformação do osso de modo a que o volume se mantenha constante. Se None for especificado o parâmetro Volume Variation não terá qualquer efeito.
• Plane: Especifica qual o eixo (X ou Z), do sistema local do objecto, que deve estar, o mais aproximadamente possível, alinhado com o eixo dos zz do sistema de eixos global.
3.3.7.1. Exemplo.
Abra o Blender. Elimine o cubo, [X]. Passe a Front Ortho,
[1] > [5]. Insira uma armação, [Shift]+[A] > Armature > Single Bone.
Passe a modo edição, [Tab]. Seleccione o osso, [RMB] sobre o corpo, e duplique-o, [Shift]+[D] > [LMB].
Arraste o novo osso para a esquerda, por exemplo, recorrendo ao transformador X.
Passe a modo pose, [Ctrl]+[Tab].
Seleccione o osso da direita, o alvo, [RMB], em seguida seleccione o osso da esquerda, o objecto, [Shift]+[RMB], e associe-lhe um restritor Stretch To, [Shift] > [Ctrl] > [C] > Stretch To.
Note que o osso objecto rodou, tendo ficado com a ponta sobre a raiz do osso alvo.
Tal deve-se a, na configuração padrão,
o parâmetro Head/Tail ter o valor 0.0.
Especifique Head/Tail 1.0.
O osso objecto sofrerá um escalamento ao longo do
seu eixo dos yy e a sua ponta passará a ficar
sobreposta à ponta do osso alvo.
Altere o parâmetro Rest Length para 1.5 de modo a corrigir a deformação do osso objecto.
Seleccione o alvo, rode-o, aproximando-o
e afastando a sua ponta do osso objecto, e
observe como este se deforma, comprimindo-se
e alongando-se segundo o eixo raiz/ponta.
Note que, na configuração padrão, o corpo do
osso se deforma no plano XY. Altere a opção do
parâmetro Volume e observe os resultados.
Passe a modo objecto [Ctrl]+[Tab].
Insira uma UV Sphere, [Shift]+[A] > UV Sphere.
Arraste-a para cima do osso objecto.
Aplique a informação sobre a rotação e a escala,
[Ctrl]+[A] > Location, [Ctrl]+[A] > Rotation.
Seleccione a esfera, [RMB], seleccione a
armação, [Shift]+[RMB], entre em modo pose,
[Ctrl]+[Tab], seleccione o osso objecto, [RMB],
e associe a malha da esfera ao osso objecto,
[Ctrl]+[P] > Bone.
Em modo pose, seleccione o osso alvo rode-o,
aproximando-o e afastando a sua ponta do osso
objecto, e observe como a esfera se deforma.
Altere a opção do parâmetro Volume do painel do
restritor e observe as diferenças na deformação da esfera.
O tipo de deformação sofrida pela malha associada a um osso com um restritor Stretch To associado torna este restritor mais apropriado a uma utilização na articulação de modelos orgânicos do que em modelo mecânicos. Ainda assim, a sua utilização nestes casos pode ser uma hipótese a ter em conta, dada a simplicidade da sua utilização.
É talvez de realçar que a animação da deformação de uma malha pode ser feita através de transformações de escalamento, inserção de keyframes, e manipulação adequada das curvas de interpolação, sendo que a utilização de um restritor Stretch To faz sentido enquanto fazendo parte de um processo mais vasto de articulação de uma malha.
3.3.7.2. Exemplo.
Vamos agora ver como podemos fazer a animação de uma mola recorrendo a técnicas diversas, entra as quais se inclui a utilização de uma armação com um restritor Stretch To.
Abra o Blender. Seleccione o cubo, [RMB], e passe
a modo edição, [Tab].
Passe a modo de representação wireframe, [Z], passe a
modo de selecção de faces, seleccione as duas faces em
oposição perpendiculares ao eixo dos xx, [RMB],
e elimine-as, [X].
Passe a modo objecto, [Tab]. Reduza as dimensões do
cubo, [S] > 0.05. Aplique a transformação sofrida,
[Ctrl]+[A] > Scale.
Coloque o cursor 3D sobre o centro do cubo, [Shift]+[S] > Cursor to Selected, e insira um Empty, [Shift]+[A] > Empty.
Seleccione o cubo, [RMB]. No contexto Object Modifiers da janela de propriedades, associe-lhe um modificador Array.
No painel do modificador, desactive Relative Offset, active Object Offset e, na respectiva célula, seleccione o nome do Empty que criou.
Incremente o parâmetro Count para 250 e active Merge.
Rode ligeiramente o empty em torno do eixo dos
zz, [R] > [Z], e desloque-o, também ligeiramente,
segundo z e segundo x, utilizando, por exemplo, os transformadores.
Dos valores escolhidos para as translações e rotação dependerá o raio e comprimento da mola. Pode optar por inscrever os valores directamente no painel Transform da tabela de propriedades da janela 3D.
Seleccione o cubo e, no painel do modificador Array,
ajuste o valor do parâmetro Distance de modo
a garantir a continuidade da malha.
Associe ao cubo um modificador Subdivision Surface
de modo a arredondar a secção transversal da mola.
Salve o ficheiro.
Vamos em seguida ver diversas técnicas que podem ser utilizadas na animação da mola.
Desenvolva cada um dos exemplos num ficheiro diferente, partindo do ficheiro salvo no ponto anterior.
Passe a Front Ortho, [1] > [5]. Seleccione o empty, [RMB].
Passe à frame 1, [Shift]+[LA]. Desloque ligeiramente o
empty segundo -z, de modo a comprimir a mola. O modo mais fácil
é editar directamente o seu valor na respectiva célula do painel
Transform da tabela de propriedades da janela 3D.
Insira uma keyframe de localização, [I] (com o cursor do rato sobre a célula Transform Location Z).
Passe à frame 21, [Shift]+[UA] > [Shift]+[UA]. Desloque ligeiramente
o empty segundo z, de modo a expandir a mola, editando directamente
a coordenada z na respectiva célula do painel Transform da tabela de
propriedades da janela 3D.
Insira uma keyframe de localização, [I] (com o cursor do rato sobre a célula Transform Location Z).
Passe à frame 41, [Shift]+[UA] > [Shift]+[UA]. Desloque ligeiramente o empty segundo -z, de modo a comprimir a mola, editando directamente a coordenada z na respectiva célula do painel Transform da tabela de propriedades da janela 3D, e inserindo o mesmo valor da frame 1.
Insira uma keyframe de localização, [I] (com o cursor do rato sobre a célula Transform Location Z).
A partir da barra da janela Info, seleccione
a pré-definição de janelas Animation.
Na barra da janela Graph Editor, seleccione
Key > Interpolation Mode > Linear.
Na barra da janela Graph Editor, seleccione Channel > Extrapolation Mode > Make Cyclic.
Note que, na figura, por simplificação de representação,
foram eliminados os canais X location e Y Location.
Pressione [Alt] + [A] para pré-visulaizar a oscilação. Esta a forma rápida e correcta de obter a animação de uma mola. Note que, tal como é suposto, a mola se expande e comprime mantendo sempre a mesma secção tranversal. Vamos em seguida ver como a animação da mola pode ser feita recorrendo a um restitor StretchTo. Como se verá, a utilização deste restritor tem o inconveniente de deformar a secção tansversal da mola. |
Abra o ficheiro com o modelo da mola. Passe a Front Ortho,
[1] > [5]. Seleccione a mola, [RMB], e centre sobre ela o cursor
3D, [Shift]+[S] > Cursor to Selected.
Insira uma armação, [Shift]+[A] > Armature > Single Bone.
Passe a Top Ortho, [7], Centre aproximadamente o osso, [G] > [Y].
Passe novamente a Front Ortho, [1]. Com o osso selecionado passe a modo edição, [Tab], e arraste a ponta do osso ao longo do eixo dos zz, recorrendo aos tranformadores, até que o osso tenha aproximadamente o mesmo comprimento longitudinal da mola.
Dê ao osso o nome B1. Em Front Ortho, seleccione o osso,
[RMB] sobre o corpo, e duplique-o, [Shift]+[D].
Dê ao novo osso o nome B2. Seleccione a raiz de B2, [RMB], e arraste-a para a esquerda até que o osso fique na horizontal, [G] > [Ctrl].
Se necessário, corrija a rotação dos ossos, [Ctrl]+[N] > X Axis.
Seleccione a armação, [RMB], e entre em modo pose,
[Ctrl]+[Tab].
Seleccione o osso B1, [RMB]. active o contexto Bone Constraints da janela de propriedades, associe ao osso um restritor Stretch To, Seleccione o osso B2 como alvo, especifique Head/Tail: 1.0, altere o parâmetro Rest Length de modo a fazer coincidir a ponta de B1 com a ponta de B2, e active None.
Salve o ficheiro para que o possamos recuperar mais à frente.
Seleccione a mola, [RMB]. Active o contexto Object Modifiers
da janela de propriedades, e aplique o modificador Array,
pressionando o botão Apply.
Em modo pose, seleccione a mola, [RMB], seleccione o
osso B1, [RMB], e estabeleça uma relação de parentesco
entre ambos, [Ctrl]+[P] > Bone.
Seleccione novamente a mola, [RMB]. Pode ver, no painel
Relations do contexto Object da janela de propriedades,
que a relação de parentesco ficou estabelecida.
Seleccione o osso B2, [RMB] (deve entrar naturalmente em modo pose), e rode-o, [R]. Pode ver que o osso B1 se expande e alonga, e a mola acompanha o movimento. Para pequenas oscilações a solução é aceitável. Para grandes oscilações a solução não é aceitável, devido à excessiva modificação da forma da secção transversal da mola. |
Abra o ficheiro salvo no ponto 32.
Seleccione o osso B1, [RMB], e no painel do restritor Stretch To, altere Volume de None par Z.
Seleccione o Empty, [RMB]. Active o contexto Object
Constraints da janela de propriedades e associe-lhe um
restritor Transformation.
No painel do restritor, especifique o osso B1 como alvo,
seleccione, Source: Scale, especifique Z: Min: 0.0 / Max: 2.0,
seleccione Destination: Loc e especifique Z: Min: 0.015 / Max: -0.015.
Seleccione o osso B2, [RMB] (deve entrar naturalmente em modo pose), e rode-o, [R]. Pode ver que o osso B1 se expande e alonga, e a mola acompanha o movimento. Não há agora qualquer alteração da secção transversal da mola. |