S4.A1.

 

3.4. Relationship Constraints.

Novembro 28, 2011

 

3.4.1. Floor.


O restritor Floor permite utilizar um alvo para especificar o posicionamento de um plano que o objecto não poderá transpor, sendo normalmente utilizado para especificar o posicionamento do chão, de uma parede, ou do tecto.

Sticky: Quando activo, o objecto deixa de poder ser transladado sobre o plano a partir do momento que entra em contacto com ele, podendo apenas sofrer transformações de escalamento e rotação (ou translações que o afastem do plano).

Use Rotation: Quando activo, o objecto tem em conta a informação sobre a rotação do alvo, permitindo assim que possam ser utilizados planos inclinados como delimitadores do movimento do objecto.

Deve ser tido em conta que a informação sobre a rotação do alvo deve estar activa, ou seja, não poderá ser aplicada à estrutura de dados do alvo (por exemplo, com [Ctrl]+[A]).

Offset: A especificação de intransponibilidade é referida ao posicionamento dos centros do objecto e do alvo (ou do grupo de vértices, caso especificado). O parâmetro Offset permite especificar a distância mínima entre centros, evitando a necessidade de deslocamento de cada um dos centros para as superfícies, do objecto e do alvo, que não se podem cruzar.

Min./Max.: Especifica o sentido da normal ao plano que não pode ser transposto. No caso de Use Rotation estar activo a especificação é relativa ao sistema de eixos local do alvo.

3.4.1.1. Exemplo.


Abra o Blender. Escale o cubo em xy 10 vezes, [S] > [Shift]+[Z] > 10.

Passe a Front Ortho, [1] > [5], e escale o cubo em Z, [S] > [Z] > 0.2.

Insira uma armação, [Shift]+[A] > Armature > Single Bone.

Passe a modo edição, [Tab]. A partir da ponta do primeiro osso, insira, por extrusão, [E], dois novos ossos.

Alinhe os ossos, [Ctrl]+[N] > X Axis.

Dê aos ossos os nome B1, B2 e B3.

Seleccione o osso B3, e, no painel Relations do contexto Bone da janela de propriedades, quebre a relação de parentesco do osso B3 com o osso B2.

Passe a modo pose, [Ctrl]+[Tab]. Seleccione o osso B2, active o contexto Bone Constraints, associe um restritor Inverse Kinematics ao osso, e seleccione o osso B3 como alvo.



Seleccione o osso B3, [RMB], associe-lhe um restritor Floor, e seleccione o cubo como alvo.








Arraste o osso B3 contra a superfície do cubo, [G], até que fique obstruído.

Aumente o parâmetro Offset do restritor Floor até que o osso B3 fique à superfície do plano.

Seleccione o osso B3 e movimente-o contra o plano.

Como pode ver, o osso pode ser manipulado livremente sem o risco de ultrapassar a superfície do plano.

3.4.2. Follow Path.


Follow Path permite impor que o movimento do centro do objecto a que o restritor está associado seja feito ao longo de um alvo do tipo Curve.

Embora pareça semelhante ao restitor Camp To, o restritor Follow Path é bastante mais flexivel, e por isso a sua utilização é bastante mais complexa.

Enquanto que no restitor Clamp To a restrição imposta às coordenadas do centro do objecto tem por base a dinâmica das curvas de interpolação do objecto, no restritor Follow Path a dinâmica é determinada pelas curvas de interpolação do alvo.

Follow Curve: Quando activo, o objecto, ao seguir o trajecto definido pela curva, sofre as rotações necessárias para que tenha sempre a mesma direcção, do seu sistema de eixos local, alinhada com a tangente à curva.

Fixed Position: Fixa o objecto num dos pontos da curva.

Curve Radius: O objecto é escalado pelo raio de curvatura da curva (??).

Offset: Número da frame, contado a partir da frame inicial definida na animação da curva, em que o restritor deve ser activado.

Forward: Eixo, do sistema de eixos local do objecto, a alinhar com a tangente à curva.

Up: Eixo, do sistema de eixos local do objecto, a alinhar com o eixo dos zz do sistema de eixos global.

3.4.2.1. Exemplo.


Em alternativa à definição do posicionamento de um objecto em cena ao longo do tempo com base em curvas de interpolação calculadas com base nas coordenadas da origem do objecto impostas por keyframes, podemos recorrer a objectos do tipo Curve para definir a trajectória do objecto.

Embora qualquer dos tipos de curvas disponíveis no Blender possa ser utilizada como elemento condicionador do movimento do objecto, existe no Blender um tipo especial de curva, designada por Path, cujas características tornam especialmente indicada a sua utilização em animação.

Para facilitar a manipulação da curva Path deve inseri-la sobre um plano coordenado, Top Ortho, Right Ortho, etc.

Abra o Blender e, em Top Ortho, [7] > [5], insira uma curva do tipo Path, [Shift]+[A] > Curve > Path.






A curva Path tem associada uma direcção de evolução e tem, na configuração padrão, 5 controladores de forma.

Seleccionando os controladores, em modo edição, a curva pode tomar a forma que se deseja dar ao percurso a seguir pelo objecto.

Pode adicionar novos controladores seleccionando o controlador de um dos extremos e pressionando [Ctrl]+[MLB], pode seleccionar vários controladores em simultâneo, mantendo [Shift] pressionado em cada uma das selecções, pode fechar o percurso pressionando [Alt]+[C], etc.

Seleccione o cubo, [RMB], e escale-o, [S] > 0.25. Aplique a transformação, [Ctrl]+[A] > Scale.

Seleccione a curva, [RMB]. Entre em modo edição, [Tab], seleccione os 3 controladores centrais, [B], e arraste-os segundo Y, [G] > [Y].


Seleccione o 1º controlador, à esquerda, [RMB], e coloque sobre ele o cursor 3D, [Shift]+[S] > Cursor to Selected.

Saia de modo edição, [Tab], seleccione o cubo, [RMB], e coloque-o sobre o cursor 3D, [Shift]+[S] > Selection to Cursor.


Seleccione o cubo, [RMB], em seguida a curva Path, [Shift]+[RMB], e estabeleça uma relação de parentesco do tipo Follow Path, [Ctrl]+[P] > Follow Path.




Active a frame 0, [Shift] + [LA], e observe a pré-animação, [Alt] + [A].

Pode ver que o cubo percorre completamente a curva Path entre a frame 0 e a frame 100.

Vamos agora flexibilizar a solução, começando por ver como podemos alterar directamente a frame final e a frame inicial, ou o valor da velocidade (uniforme) com que a curva é percorrida, e em seguida uma solução mais complexa, com controlo total do modo como o objecto percorre a curva (não necessariamente com velocidade uniforme).

O procedimento mais simples é o da alteração da frame final, e portanto da velocidade a que a curva é percorrida

Seleccione a curva Path e, na janela de propriedades, active o contexto Object Data.

Para alterar a frame final modifique o valor do parâmetro Frames do painel Path Animation.

Altere Frames para 250 e pré-visualize a animação, [Alt]+[A].

Pode ver que a curva é agora completamente percorrida em 250 frames.

Este procedimento simples poderá ser o suficiente, por exemplo, se optar pela obtenção de animações composta com base no sequenciador vídeo, em que não é relevante o valor absoluto da frame inicial e final, mas apenas a duração da sequência.

Reponha novamente o valor Frames: 100.

A alteração da frame em que o objecto associado pela relação de parentesco do tipo Follow Path com a curva Path inicia o seu movimento é mais complexa e implica a análise dos dados da janela Graph Editor.

Abra uma janela Graph Editor, ou evoque a pré configuração de janelas Animation.

Ao estabelecer a relação de parentesco, passa a ser visível na janela Graph Editor, associado à curva Path, o canal Evaluation Time.

Note que a curva não é determinada por nenhuma keyframe.

A curva traduz a velocidade com que o objecto percorre a curva, e, na configuração padrão, tem associado um modificador do tipo Generator, configurado para um polinómio do 1º grau, y = b + mx, com b = 0 e m = 1.










Para visualizar melhor a evolução da curva, altere as escalas dos eixos coordenados utilizando combinações das teclas [MW], [MMB], [Ctrl] e [Shift].

Faça b = -50 e m = 2.

A velocidade passa a ser determinada pelo polinómio y = -50 + 2 x, pelo que o objecto iniciará o movimento na frame 25 (y = 0 => x = 25), e percorrerá a curva ao dobro da velocidade, terminando o movimento na frame 75 (y = 100 => x = 75), admitindo que não foi alterado o valor 100 do parâmetro Frames do painel Path Animation.

Vamos agora ver como obter um controle total da dinâmica do objecto que percorre a curva Path.

Elimine o modificador associado à velocidade, pressionando o X à direita do nome do modificador.


Pressione [Ctrl]+[LMB] sobre pontos do plano coordenado de modo a inserir diversas (6) keyframes.





Altere o modo de interpolação para linear, Key > Interpolation Mode > Linear.






Seleccione cada uma das keyframes e dê à curva a forma que se mostra na figura.

Para uma maior precisão na colocação das keyframes utiliza as células do painel Active Keyframe.






Active a frame 0, [Shift]+[LA], observe a pré-animação, [Alt]+[A], e interprete o movimento com base na forma da curva da figura.

Admitindo que não foi alterado o valor 100 do parâmetro Frames do painel Path Animation, pode ver que o cubo até à frame 20 avança até meio da curva Path (x = 20, y = 50), fica parado entre as frames 20 e 40, sendo a curva constante, resulta que a velocidade do cubo é nula, entre a frame 40 e 60 volta à origem da curva Path (x = 60, y = 0), sendo o declive negativo a velocidade é negativa, e, finalmente, avança até o fim da curva Path até à frame 80 (x =80, y = 100), e recua para a origem até à frame 100 (x =100, y = 0).

Altere para 2500 o parâmetro Frame Range End do painel Dimensions do contexto Render da janela de propriedades.







Associe um modificador Cycles ao canal Evaluation Time.

Active a frame 0, [Shift]+[LA], observe a pré-animação, [Alt]+[A].

Como pode ver, o cubo repete ciclicamente, entre a frame 0 e a frame 2500, o comportamento determinado pela curva Evaluation Time.

Salve o ficheiro.


Por fim vamos ver como podemos ter total liberdade relativamente à velocidade de execução e definição da frame início e fim da dinâmica definida na curva da figura.

Abra uma janela NLA Editor e pressione, [LMB], o símbolo de cristal de gelo à direita do nome da NurbsPathAction que já está presente.








Seleccione a Action Strip NubsPath Action, desloque-a para uma qualquer frame, [G], e escale-a [S].

Active a frame 1, [Shift]+[DA], observe a pré-animação , [Alt]+[A].

O movimento do cubo imposto pela curva de interpolação será executado com início e duração conforme determinado pelo posicionamento e escala da Action Strip presente no NLA Editor, e poderá ser combinado com outras acções definidas na mesma cena.

Salve o ficheiro com outro nome.








Se após a criação da Action Strip quiser fazer modificações à curva de interpolação, coloque o cursor do rato sobre a janela NLA Editor e pressione [Tab], para ter de novo acesso à curva na janela Graph Editor.

Pode criar várias curvas Path e tomar qualquer delas como um objecto a que associa um restritor Follow Path, como acima ficou descrito. Isto é, pode obrigar uma curva Path a percorrer o percurso definido por outra curva Path.

Abra o ficheiro salvo no passo 19.

Seleccione o cubo, [RMB]. Active o contexto Object Constraints da janela de propriedades.

Pode ver que o cubo não tem nenhum restritor associado.

A relação de parentesco do tipo Follow Path criada no passo 6, embora equivalente, não associa um restritor Follow Path ao objecto.

Active o contexto Object da janela de propriedades.

Pode ver a relação de parentesco com a curva Path expressa no painel Relations.





Elimine a relação de parentesco, apagando o nome da curva da célula Parent, ou fazendo [Alt]+[P] > Clear Parent.

Active o contexto Object Constraints da janela de propriedades e associe um restritor FollowPath ao cubo.

Seleccione o nome da curva na célula Target, active Follow Curve, e active Forward X.

Pode ver que o cubo ficou deslocado relativamente ao início da curva.

O offset deve-se ao deslocamento sofrido pelo centro do cubo, como pode ver no painel Transform da tabela de propriedades da janela 3D, [N].


Aplique a transformação sofrida, [Ctrl]+[A] > Location.

Pode ver que o centro do cubo se deslocou para o início da curva mas a malha permaneceu imóvel.

Reposicione a origem, recorrendo à tabela de operadores da janela 3D, Origin > Geometry to Origin.

Active a frame 1, [Shift]+[LA], observe a pré-animação, [Alt]+[A].

Pode ver que o cubo, tal como anteriormente, executa o movimento imposto pela curva de interpolação Evaluation Time do alvo.

Podemos associar qualquer objecto a uma curva Path, uma lâmpada, uma câmara, etc.. No caso da associação de uma câmara a uma curva Path, e de modo a que a câmara aponte sempre para um alvo desejado, recorde que pode utilizar um restritor Track To.

Seleccione o cubo. Elimine o restritor Follow Path.

Pode ver que o cubo se reposicionou na origem do espaço 3D.

Seleccione a curva Path e entre em modo edição, [Tab]. Seleccione o 1º controlador da direita e coloque o cursor 3D sobre o controlador, [Shift]+[S] > Cursor to Selected. Saia de modo edição, [Tab].

Seleccione a câmara. Coloque a câmara sobre o cursor 3D, [Shift]+[S] > Selection to Cursor.

Com câmara seleccionada, seleccione o cubo, [Shift]+[RMB]. Associe à câmara um restritor Track To, [Ctrl]+[T] > Track To Constaint.

Com a câmara seleccionada, active o contexto Object Constraints. Pode ver que a câmara tem associado um restritor TrackTo.

Active a frame 0, [Shift]+[LA] > [DA].

Seleccione a câmara e em seguida a curva Path.

Seleccione a câmara, [RMB], em seguida a curva Path, [Shift]+[RMB], e estabeleça uma relação de parentesco do tipo Follow Path, [Ctrl]+[P] > Follow Path,

Active a frame 1, [Shift]+[LA], observe a pré-animação, [Alt]+[A].

A câmara executará o movimento imposto pela curva de interpolação do Path apontando sempre para o cubo.

Em alternativa à relação de parentesco, podemos associar um restritor Follow Path à câmara.

Seleccione a câmara e elimine a relação de parentesco, [Alt]+[P] > Clear Parent.

Coloque a câmara na origem, editando as células do painel Transform da tabela de propriedades da janela 3D.

Seleccione a curva Path, [RMB], seleccione a câmara, [Shift]+[RMB], e associe um restritor Follow Path à câmara, [Shift]+[Ctrl]+[C] > Follow Path.

No painel do restritor, especifique Foward: X e Up: Y.

Troque a ordem dos restritores no stack, colocando o restritor Follow Path na primeira posição.

Active a frame 1, [Shift]+[LA], observe a pré-animação, [Alt]+[A].

A câmara executará o movimento imposto pela curva de interpolação do Path apontando sempre para o cubo.

Nota: No ponto 39, pode, em alternativa, seleccionar a câmara, [RMB], seleccionar a curva Path, [Shift]+[RMB], e criar uma relação de parentesco do tipo Path Constraint, [Ctrl]+[P] > Path Constraint.

Se seleccionar a câmara e activar o contexto Object Constraints da janela de propriedades, pode ver que deste procedimento resulta a criação de um restritor Follow Path associado à câmara

3.4.3. Pivot.


O restritor Pivot permite impor que as transformações de rotação do objecto a que o restritor está associado sejam feitas em torno do centro do alvo.

Pivot Offset X/Y/Z: Offset do ponto pivot relativamente ao centro do alvo.

Pivot When: A partir do menu dropdown, permite restringir a rotação do objecto em torno do pivot apenas às rotações em torno de um dos eixos coordenados, sendo as restantes feitas em torno do centro do objecto.

3.4.3.1. Exemplo.


Abra o Blender. A partir da janela Info, seleccione a pré-configuração de janelas Animation.

Com o cursor do rato sobre a janela 3D, passe a Front Ortho, [1] > [5]. Insira uma keyframe de rotação, [I] > Rotation.

Passe à frame 11, [LMB] sobre a janela Timeline. Rode o cubo 90o em torno do eixo dos yy, [R] > [Y] > 90. Insira uma keyframe de rotação, [I] > Rotation.

Na janela Graph Editor, expanda o canal Rotation, [LMB] sobre o pequeno triângulo.

Expanda a representação das curvas, a partir da barra da janela, View > View All.

Seleccione o canal X Euler Rotation, [LMB], e elimine-o, [X]. Seleccione o canal Z Euler Rotation, [LMB], e elimine-o, [X].

Seleccione o canal Y Euler Rotation, [LMB]. Altere o modo de interpolação para linear, Key > Interpolation Mode > Linear.

Altere o modo de extrapolação para cíclico, Channel > Extrapolation Mode > Make Cyclic.



Insira uma nova keyframe entre as duas já existentes, [Ctrl]+[LMB] sobre a curva de interpolação.

Active a tabela de propriedades da janela Graph Editor, [N].

Seleccione a primeira keyframe, [RMB] sobre o ponto da curva. Nas células Key do painel Active Keyframe certifique que estão inscritos os valores: [Frame: 1.0], [Value: 0o].

Seleccione a terceira keyframe, [RMB] sobre o ponto da curva. Nas células Key do painel Active Keyframe escreva os valores: [Frame: 81.0], [Value: 0o].

Seleccione a segunda keyframe, [RMB] sobre o ponto da curva. Nas células Key do painel Active Keyframe escreva os valores: [Frame: 41.0], [Value: 360o].

Pressione [Alt]+[A] para pré-visionar a animação.

Pode ver que o cubo faz uma rotação completa em sentido retrógrado durante 40 frames, uma nova volta completa, mas agora em sentido directo, nas 40 frames seguintes, repetindo ciclicamente este comportamento.

Seleccione o cubo, [RMB], e coloque o cursor 3D sobre o seu centro, [Shift[+[S] > Cursor to Selected.

Insira um círculo, [Shift[+[A] > Mesh > Circle.

Rode-o 90o em torno do eixo dos xx, [R] > [X] > 90.

Escale-os 10 vezes, [S] > 10.

Desloque-o para a esquerda 10 UB, [G] > [X] > -10.

Seleccione o cubo, [RMB]. Active o contexto Object Constraints da janela de propriedades, associe um restritor Pivot ao cubo, seleccione o círculo como alvo, e seleccione Pivot When X Rot.






Pressione [Alt]+[A] para pré-visionar a animação.

Pode ver que a rotação passou a ser efectuada em torno do centro do círculo.

Salve o ficheiro, para ser utilizado, a partir deste ponto, no exemplo 3.4.4.1.

Coloque-se na primeira keyframe [Shift]+[LA]. Seleccione o cubo, [RMB]. Coloque o cursor 3D sobre o cubo, [Shift]+[S] > Cursor to Selected.

Insira um círculo, [Shift[+[A] > Mesh > Circle. Rode-o 90o em torno do eixo dos xx, [R] > [X] > 90. Escale-os 10 vezes, [S] > 10. Desloque-o para a direita 10 UB, [G] > [X] > 10.

Seleccione o cubo, [RMB]. Active o contexto Object Constraints da janela de propriedades, associe um restritor Pivot ao cubo, seleccione o círculo agora criado como alvo, e seleccione Pivot When X Rot.






Coloque o cursor do rato sobre o botão do parâmetro Influence do primeiro restritor Pivot, e insira uma keyframe, [I].








Pode ver na Janela Graph Editor que foi criado o canal Influence (Pivot).

Pressione, [LMB], o botão com o símbolo de um olho do canal Y Euler Rotation de modo a esconder a representação da curva de interpolação respectiva.

Seleccione o canal Influence (Pivot), [LMB], e expanda a representação da curva, View > View All.

Insira duas novas keyframes, [Ctrl]+[LMB] sobre a curva de interpolação.

Active a tabela de propriedades da janela Graph Editor, [N].

Seleccione a primeira keyframe, [RMB] sobre o ponto da curva. Nas células Key do painel Active Keyframe certifique que estão inscritos os valores: [Frame: 1.0], [Value: 1.0].

Seleccione a terceira keyframe, [RMB] sobre o ponto da curva. Nas células Key do painel Active Keyframe escreva os valores: [Frame: 81.0], [Value: 0.0.

Seleccione a segunda keyframe, [RMB] sobre o ponto da curva. Nas células Key do painel Active Keyframe escreva os valores: [Frame: 41.0], [Value: 0.0].

Seleccione todas as keyframes, A. Altere o modo de interpolação para constante, Key > Interpolation Mode > Constant.

Altere o modo de extrapolação para cíclico, Key > Extrapolation Mode > Make Cyclic.

Coloque o cursor do rato sobre o botão do parâmetro Influence do segundo restritor Pivot, e insira uma keyframe, [I].








Pode ver na Janela Graph Editor que foi criado o canal Influence (Pivot.001).

Pressione, [LMB], o botão com o símbolo de um olho do canal Influence (Pivot) de modo a esconder a representação da curva de interpolação respectiva.

Seleccione o canal Influence (Pivot.001), [LMB], e expanda a representação da curva, View > View All.

Insira duas novas keyframes, [Ctrl]+[LMB] sobre a curva de interpolação.

Active a tabela de propriedades da janela Graph Editor, [N].

Seleccione a primeira keyframe, [RMB] sobre o ponto da curva. Nas células Key do painel Active Keyframe certifique que estão inscritos os valores: [Frame: 2.0], [Value: 0.0.

Seleccione a terceira keyframe, [RMB] sobre o ponto da curva. Nas células Key do painel Active Keyframe escreva os valores: [Frame: 82.0], [Value: 1.0].

Seleccione a segunda keyframe, [RMB] sobre o ponto da curva. Nas células Key do painel Active Keyframe escreva os valores: [Frame: 42.0], [Value: 1.0].

Seleccione todas as keyframes, A. Altere o modo de interpolação para constante, Key > Interpolation Mode > Constant.

Altere o modo de extrapolação para cíclico, Key > Extrapolation Mode > Make Cyclic.

Coloque-se na frame 1, [Shift]+[LA], e proceda à pré-animação, [Alt+[A]. Pode ver que o centro de rotação alterna agora entre os centros de um e outro círculo.

3.4.4. Child Of.


O restritor Child Off estabelece uma relação de parentesco entre o alvo e o objecto, de modo idêntico ao estabelecido com a combinação de teclas [Ctrl]+[P], com a vantagem de ter um conjunto de parâmetros que permitem configurar a relação.

Location, Rotation, Scale X/Y/Z: A relação de parentesco só é estabelecida, ou seja, o objecto só replica as transformações do alvo, para o tipo de transformação e coordenadas que se encontrem activas.

Set Inverse: Elimina o offset, resultante da aplicação das transformações do alvo ao objecto a quando da criação do restritor, mantendo o objecto com as mesmas propriedades, embora, naturalmente, a origem do espaço do objecto passe, de igual modo, a ser o centro do alvo.

Clear Inverse: Repõe o offset eliminado pelo botão Set Inverse.

No caso correspondente à figura, o objecto acompanha todas as transformações sofridas pelo alvo segundo as coordenadas Y e Z, tendo total autonomia de transformação relativamente à coordenada X.

3.4.4.1. Exemplo.


Abra o ficheiro salvo no ponto 22 do exemplo 3.4.3.1., passe a Front Ortho, e coloque-se na primeira frame, [Shift]+[LA].

Seleccione o círculo, [RMB], e centre sobre ele o cursor 3D, [Shift]+[S] > Cursor to Selected.

Insira uma esfera UV, [Shift]+[A] > Mesh > UV Sphere.

Duplique a esfera, [Shift]+[D] > [LMB].

Arraste a esfera para a direita, até junto do cubo, [G] > [X].

Com a esfera que está junto ao cubo seleccionada, active o contexto Object Constraints da janela de propriedades, associe-lhe um restritor Child Of, seleccione o cubo como alvo, desactive todas as opções com excepção de Location X, e altere o valor de Influence para 0.77.




Seleccione a esfera que está no centro, [RMB] , associe-lhe um restritor Child Of, seleccione o cubo como alvo, desactive todas as opções com excepção de Location Z, e altere o valor de Influence para 0.77.






Pressione [Alt]+[A] para pré-visionar a animação.