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).
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.
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.
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.
• 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.
• 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.
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.
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.
Novembro 15, 2011
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.