S3.A1.

 

3.1. Introdução.

Novembro 13, 2011

 

Embora possam ser utilizados no processo de modelação, os Restritores destinam-se sobretudo a ser utilizados no processo de Animação, permitido o controle das transformações (translação, rotação e escalamento) sofridas pelo Objecto a que o restritor está associado, com base nas transformações sofridas por um outro objecto, designado por Alvo (Target).

3.1.1. Object Constraints.


Para associar um restritor a um objecto, [bpy.ops.object.constraint_add(type=' ')], seleccione-o, active o contexto Object Constraints da janela de propriedades, e seleccione o restritor desejado.






Para associar um restritor a um objecto, [bpy.ops.object.constraint_add_with_targets(type=' ')], podemos, alternativamente, seleccionar o alvo, [MRB], seguido do objecto a que o restritor vai ser associado, [Shift] + [MRB], e pressionar [Shift] + [Ctrl] + [C].

Neste caso, os parâmetros do painel do restritor relativos ao nome do objecto e ao nome do alvo são preenchidos automaticamente.

3.1.2. Bone Constraints.


No caso de um objecto do tipo Armação, e embora os restritores possam ser associados ao objecto armação como um todo, os restritores têm especial interesse quando associados aos ossos da armação, sendo que, cada um dos ossos, passa a ser considerado como um objecto.

Um Restritor altera o normal comportamento de um osso, ligando-o, através de funções diversas, a outro osso ou a um qualquer objecto em cena (o Alvo), permitindo um controle da armação a um nível superior, que evita aquela que seria a penosa tarefa de fazer a animação movimentando cada um dos ossos frame a frame.

As restrições que em modo edição se podem colocar ao livre comportamento de um osso estão associadas à sua possível relação de parentesco com outros ossos, e são manifestamente insuficientes para que se obtenha uma armação minimamente funcional na fase de animação. Os restritores associados aos ossos de uma armação são criados em modo pose.

Seleccionado um osso, a barra da janela de propriedades passa a incluir o botão Bone Constraints. A partir deste contexto pode ser seleccionado um restritor específico, de modo idêntico ao feito no contexto object constraints.






Alternativamente, podemos seleccionar um osso, [MRB] o osso alvo, seguido de outro, [Shift] + [MRB], aquele a que o restritor vai ser aplicado, e pressionar em seguida [Shift] + [Ctrl] + [C].

Em modo pose, pressionando [Ctrl]+[Alt]+[C] com dois ossos seleccionados elimina os restritores de que o primeiro osso seleccionado seja o objecto e o segundo seja o alvo.

3.1.3. Interface comum.


Todos os restritores, embora com funcionalidades diversas, têm vários campos comuns no seu painel, que seguidamente se descrevem.

Uma vez seleccionado um restritor em particular, o seu painel passa a ser visível no contexto Object (ou Bone) Constraints.

Mostra-se na figura o exemplo do painel do restritor Copy Location, sobre o qual vamos basear a análise dos diversos campos comuns.

3.1.3.1. Cabeçalho.


• O botão com o pequeno triângulo invertido permite colapsar o painel, ficando apenas visível o cabeçalho.

• Segue-se um campo de texto que identifica o tipo de restritor.

• A menos que o restritor seja criado com a combinação [Shift] + [Ctrl] + [C], caso em que os campos obrigatórios são automaticamente preenchidos, a célula que se segue, correspondente ao nome do restritor, e que pode ser alterado, estará colorida a vermelho.

A cor vermelha indica que o restritor não está completamente especificado e só será alterada, para cinzento, quando todos os campos forem correctamente preenchidos. Enquanto a célula nome permanecer colorida a vermelho o restritor não está funcional, e a sua presença no stack será ignorada.

• O botão com o símbolo do olho aberto significa que o restritor está activo. Se pressionado, o símbolo muda para um olho fechado, significado que o restritor, embora associado ao objecto, não está activo.

• Os botões com os símbolos dos triângulos, presentes no caso em que haja mais do que um restritor associado ao objecto, permitem alterar a ordem do restritor no stack. Note que a ordem pela qual os restritores são aplicados poderá ser relevante.

• Finalmente, o botão com o símbolo X permite eliminar o restritor do stack.

3.1.3.2. Alvo.


Target: Embora não existindo em todos, é comum à maioria dos painéis dos restritores a célula Target, onde terá que ser especificado o nome do objecto Alvo.

O campo é automaticamente preenchido quando o restritor é criado com a combinação [Shift] + [Ctrl] + [C], podendo ser preenchida com o nome de qualquer objecto em cena, a partir do menu dropdown.



Vertex Group: Caso o alvo do restritor seja do tipo Malha, ou Lattice, surgirá a célula Vertex Group, que, opcionalmente, poderá ser preenchida com o nome de um dos grupos de vértices definidos na malha, restringindo assim o âmbito do alvo, que passará do centro do objecto para o centro do conjunto de vértices que constitui o grupo.

Bone: Caso o objecto que se deseja como alvo do restritor seja um osso de uma armação, a célula Target deve ser preenchida com o nome da Armação, caso em que surgirá no painel a célula Bone, em que se deve inscrever o nome do osso, cuja raiz passará a constituir o alvo.



3.1.3.3. Espaço de restrição.


A maior parte dos painéis dos restritores tem em comum o parâmetro Space, preenchida na configuração padrão com a opção World Space, quer na especificação do espaço em que são avaliadas as transformações do alvo, à esquerda, quer na especificação do espaço em que são aplicadas as transformações do objecto, à direita.

Local Space: Sistemas de coordenadas local do objecto/alvo.

Local With Parent: Sistemas de coordenadas local do object/alvo, mas tendo em conta as transformações sofridas pelo, caso exista, objecto pai do objecto/alvo.

Pose Space: Sistema de coordenadas global, ignorando as transformações a que a armação a que o objecto/alvo pertença tenha sido sujeita. Opção apenas relevante para restritores associados a ossos.

World Space: Sistema de coordenadas global.

3.1.3.4. Influência.


Na base do painel, praticamente todos os restitores têm o parâmetro Influence, que permite especificar o grau de influência do restritor sobre as transformações do objecto, desde nenhuma influência (0.0), a influência total (1.0).

Note que poderá haver diversos restritores no stack a influenciar o mesmo parâmetro do objecto. Neste caso, se algum dos restritores tiver influência total (1.0), nenhum dos restritores colocados abaixo no stack exercerá qualquer influência sobre os parâmetros comuns.

Note que quando existem vários restritores associados a um objectos estes são aplicados de cima para baixo, conforme a sua posição no stack.

3.2. Transform Constraints.

Novembro 15, 2011

 

3.2.1. Copy Location.


Copy Location força o centro do objecto a que o restritor está associado a ter as mesmas coordenadas do centro do alvo.

É usado tipicamente para forçar o objecto a seguir os movimentos de translação do alvo segundo os eixos coordenados cujos respectivos botões X/Y/Z se encontrem seleccionados.

No caso da figura, o objecto seguirá todos os movimentos do alvo quando este se move segundo zz, tendo autonomia para se movimentar segundo xx e yy, mas não se podendo mover autonomamente segundo zz.

Caso todos os eixos se encontrassem seleccionados, o objecto não teria qualquer autonomia de movimento, seguindo o alvo sempre que este se movimentasse.

Head/Tail: No caso do alvo ser um osso de uma armação, permite a especificação da localização do ponto alvo ao longo do eixo raiz (0.0)/ponta (1.0).

X, Y, Z: O centro do objecto só copia as coordenadas do alvo correspondentes aos eixos cujos botões estiverem seleccionados.

Invert: Inverte o valor da coordenada relativamente à origem do sistema de eixos.

Offset: Quando seleccionado, mantém a distância entre o alvo e o centro objecto, correspondente, segundo cada um dos eixos, ao valor da translação do centro do objecto relativamente à origem do sistema de eixos, ou seja, para calcular a posição do objecto, soma às coordenadas do alvo as coordenadas do centro do objecto antes da aplicação do restritor.

3.2.2. Copy Rotation.


Copy Rotation força o objecto a que o restritor está associado a sofrer as transformações de rotação a que o alvo seja sujeito.

No caso da figura, o objecto seguirá os movimentos do alvo quando este roda em torno de qualquer um dos eixos coordenados, dado que cada um dos respectivos botões X/Y/Z se encontra activo, não tendo liberdade de, por si, executar qualquer movimento de rotação.

Se o botão correspondente a algum dos eixos coordenados não se encontrasse pressionado, o objecto teria liberdade de rodar por si em torno desse eixo e seguiria o alvo em torno dos outros dois.

X, Y, Z: O objecto apenas copia as rotações do alvo em torno dos eixos cujos botões estejam seleccionados.

Invert: Inverte o sentido de rotação do objecto relativamente às rotações segundo cada um dos eixos sofridas pelo alvo.

Offset: Quando seleccionado, o objecto segue os movimentos de rotação do alvo, mas mantém a diferença dos valores angulares em torno de cada um dos eixos, a quando da aplicação do restritor.

3.2.3. Copy Scale.


Copy Scale força o objecto a que o restritor está associado a sofrer a transformações de escalamento a que o alvo seja sujeito.

No caso da figura, o objecto sofrerá os escalamentos do alvo segundo os eixos coordenados Y e Z, apenas tendo liberdade de escalamento segundo o eixo dos X.

X, Y, Z: O objecto apenas replica as transformações de escalamento do alvo segundo os eixos coordenados cujos botões estiverem seleccionados.

Offset: Quando seleccionado, o objecto atende às transformações de escalamento do alvo, mas, inicialmente, atende às transformações de escalamento que tenha sofrido.

Em qualquer destes 3 restritores, copy location, copy rotation, e copy scale, a avaliação do posicionamento, rotação e escalamento relativo entre o objecto e o alvo, e a influência do parâmetro Offset pode ser convenientemente avaliado com base na leitura dos dados do painel Transform da tabela de propriedades da janela 3D, informação também presente no painel Transform do contexto Object da janela de propriedades.

3.2.4. Copy Transforms.


Copy Transforms força o objecto a que o restritor está associado a sofrer as transformações de translação, rotação e escalamento a que o alvo seja sujeito.

Head/Tail: No caso do alvo ser um osso de uma armação, permite a especificação da localização do ponto alvo ao longo do eixo raiz (0.0)/ponta (1.0).

3.2.5. Limit Distance.


Limit Distance impõe limites à posição do objecto a que o restritor está associado, relativamente à posição do alvo, garantido que a distância entre os dois centros é sempre superior, inferior, ou igual a um valor especificado.

Distance: Distância entre os centros do objecto e do alvo. O parâmetro é automaticamente calculado quando o restritor é criado, podendo ser alterado em qualquer altura.

Reset Distance: Actualiza o parâmetro Distance para o valor actual da distância entre os centros do objecto e do alvo.

Clamp Region: Permite alterar o tipo de restrição relativamente à distância entre os centros do objecto e do alvo, conforme a opção seleccionada do menu dropdown, de modo a garantir que o centro do objecto está sempre no interior, no exterior, ou na superfície, de uma esfera cujo centro é o centro do alvo.

Inside: A distância nunca é superior ao valor especificado em Distance. O centro do objecto está sempre no interior da esfera.

Outside: A distância nunca é inferior ao valor especificado em Distance. O centro do objecto está sempre no exterior da esfera.

On Surface: A distância é sempre igual ao valor especificado em Distance. O centro do objecto está sempre sobre a superfície da esfera.

3.2.6. Limit Location.


Limit Location restringe a posição do objecto a que o restritor está associado a um determinado volume do espaço 3D.

Minimum e Maximum X/Y/Z: Quando activos, as células numéricas abaixo especificam os valores máximos e mínimos das coordenadas do centro do objecto, segundo cada um dos eixos coordenados.

Se os valores do mínimo e do máximo segundo um dos eixos forem iguais, o objecto não poderá sofrer qualquer translação segundo esse eixo.

For Transform: Se o parâmetro estiver desactivado, configuração padrão, embora o posicionamento do centro do objecto na janela 3D respeite os limites impostos pelas restrições, se transladar o objecto para além dos limites impostos, os dados internos das coordenadas do centro do objecto são actualizados conformemente à translação sofrida, como pode ser observado do painel Transform da tabela de propriedades da janela 3D. Para que tal não aconteça deve activar o parâmetro.

3.2.7. Limit Rotation.


Limit Rotation restringe as transformações do tipo rotação do objecto a que o restritor está associado a uma determinada gama de valores angulares.

Limit X/Y/Z: Quando activos, as células numéricas abaixo especificam os valores angulares mínimos e máximos de rotação do objecto em torno de cada um dos eixos

Se os valores do mínimo e do máximo forem iguais, o objecto não poderá sofrer qualquer rotação em torno desse eixo.

For Transform: Se o parâmetro estiver desactivado, configuração padrão, embora a Rotação do objecto na janela 3D respeite os limites impostos pelas restrições, se rodar o objecto para além dos limites impostos, os dados internos são actualizados conformemente à rotação sofrida, como pode ser observado do painel Transform da tabela de propriedades da janela 3D. Para que tal não aconteça deve activar o parâmetro.

3.2.8. Limit Scale.


Limit Scale restringe as transformações do tipo escalamento do objecto a que o restritor está associado a uma determinada gama de valores.

Minimum e Maximum X/Y/Z: Quando activos, as células numéricas abaixo especificam os valores máximos e mínimos do factor de escala do objecto, segundo cada um dos eixos coordenados, relativamente à sua dimensão original

Se os valores do mínimo e do máximo segundo um dos eixos forem iguais, o objecto não poderá sofrer qualquer escalamento segundo esse eixo.

For Transform: Se o parâmetro estiver desactivado, configuração padrão, embora o escalamento do objecto na janela 3D respeite os limites impostos pelas restrições, se escalar o objecto para além dos limites impostos, os dados internos são actualizados conformemente ao escalamento sofrido, como pode ser observado do painel Transform da tabela de propriedades da janela 3D. Para que tal não aconteça deve activar o parâmetro.

3.2.9. Maintain Volume.


Maintain Volume garante a constância do valor do volume do objecto a que o restritor está associado.

Free X/Y/Z: Eixo segundo o qual qualquer operação de escalamento implica escalamentos automáticos, segundo cada um dos outros dois eixos, de modo a que o volume do objecto se mantenha igual.

Volume: Factor de escala relativamente ao volume original do objecto.

Para que seja garantido o volume do objecto será necessário a associação de 3 restritores do tipo Mantain Volume, cada um com uma diferente especificação do parâmetro Free, de modo a cobrir o 3 graus de liberdade.

3.2.10. Transformation.


Transformation permite que as transformações de posição, rotação e escalamento do objecto a que o restritor está associado sejam dependentes das transformações, do mesmo tipo ou não, sofridas pelo alvo.

Extrapolate: Quando activo, a influência do restritor é estendida para além dos limites especificados em Source X/Y/Z Min./Max.

Source Loc/Rot/Scale: O botão activo especifica o tipo de transformação do alvo que influenciará a transformação a sofrer pelo objecto.

Source X/Y/Z Min./Max.: Min. e Max. especificam o intervalo do domínio da transformação do alvo em que as variações de valor serão mapeadas na transformação do objecto.

Se Extrapolate estiver activo, o intervalo estende-se a todo o domínio, determinando a diferença entre Min. e Max., em todo o caso, o factor de proporcionalidade do transdutor.

Destination Loc/Rot/Scale: O botão activo especifica o tipo de transformação a que o objecto será sujeito.

Destination X/Y/Z Min./Max.: Os botões X/Y/Z sob cada um dos eixos coordenados permitem especificar qual das coordenadas do objecto é influenciada pela transformação sofrida por cada uma das coordenadas do espaço do alvo. Min. e Max especificam o intervalo de transformação do objecto.

No exemplo da figura, quando o alvo sofre uma translação segundo o eixo dos zz o objecto sofre uma rotação em torno do eixo dos zz.

Se Extrapolate não estivesse activo, o objecto só rodaria quando o alvo sofresse uma mudança na coordenada zz dentro do intervalo [-1.0, 1.0], não sofrendo qualquer rotação, mesmo que houvesse uma variação da coordenada zz do alvo, mas fora deste intervalo.

Como Extrapolate está activo, qualquer variação da coordenada zz do alvo provoca uma rotação do objecto. Neste caso, Source Min./Max. apenas determinam o factor de proporcionalidade entre as duas transformações.

Quando o alvo evolui segundo zz entre 0.0 e 1.0 o objecto roda 180o em torno do eixo dos zz. O mesmo se verifica quando o alvo evolui entre 1.0 e 2.0, ou seja, há uma rotação de 180o por cada unidade (UB) de translação do alvo.

Se Source Min./Max. fossem especificados como -10.0/10.0 o factor de proporcionalidade seria 10 vezes menor. Haveria uma rotação de 180o por cada 10 UB de translação do alvo.