Fluxo de trabalho & Exemplos
Drivers Simples podem ser configurados pelo pop-over que aparece ao adicionar um novo Driver. Ao adicionar múltiplos Drivers ou para configurações mais avançadas, é útil ter aberto o Drivers Editor.
Transform Driver
Controla uma propriedade com uma transformação de objeto. Nesse exemplo, a rotação Y do Objeto 2 será dirigida pela posição X do Objeto 1. Partindo de uma configuração simples com dois objetos:
Adicione um Driver à propriedade Rotação Y do segundo objeto via o menu de contexto ou com Ctrl-D.
Abra o Drivers Editor e selecione a propriedade Y Euler Rotation na região de canais.
Abra o menu lateral e selecione a aba Drivers.
Configure o driver para ser o Averaged Value de um Transform Channel do primeiro objeto.
Experimente mover o primeiro objeto e perceba como ele afeta a rotação Y do segundo objeto.
Expressão com Script - Orbitar um Ponto
Orbite a posição de um objeto ao redor de um ponto com uma Expressão com script personalizada. A posição do objeto irá mudar ao tocar a timeline. Usando trigonometria, movimento circular pode ser definido em 2D usando funções seno e cosseno. (Veja Unit Circle.) Nesse exemplo, o quadro atual é usado como a variável que induz o movimento. frame` é uma Expressão Simples que corresponde a bpy.context.scene.frame_current
.
Adicione um driver a propriedade X Location.
Defina o Driver Type para Scripted Expression.
Adicione a expressão
0 + (sin(frame / 8) * 4)
, onde:frame/8
: é o quadro atual da animação, divido por 8 para desacelerar a órbita.(sin( )*4)
: multiplica o resultado desin(frame/8)
por 4 para um círculo maior.0 +
: é usado para controlar o deslocamento para o ponto central da órbita.
Adicione um driver para a propriedade Y Location com a expressão
0 + (cos(frame / 8) * 4)
.Toque a timeline para ver o efeito. Experimente com variáveis para controlar o tamanho e centro da órbita.
Função Personalizada - Valor ao Quadrado
Crie uma função personalizada para obter o quadrado de um valor (i.e valor2). Adicionar a função ao Driver Namespace permite utilizá-la a partir de expressões de driver. O Driver Namespace tem uma lista de funções embutidas para uso em expressões de driver, bem como constantes como π e e. Eles podem ser inspecionados pelo Console Python:
>>> bpy.app.driver_namespace[' <tab>
acos']
acosh']
asin']
asinh']
atan']
...
Para adicionar uma nova função ao Driver Namespace, a própria função precisa ser implementada e então adicionada ao bpy.app.driver_namespace
.
Adicione o seguinte ao Text Editor dentro do Blender e pressione Run Script.
import bpy def square(val): """Returns the square of the given value""" return val * val # Add function to driver_namespace. bpy.app.driver_namespace['square'] = square
Adicione um driver com uma Scripted Expression como
square(frame)
.Observe o efeito ao tocar a timeline.
Existem mais exemplos de funções personalizadas disponíveis no Text Editor do Blender Simple Expressions não podem acessar funções personalizadas, usá-las só faz sentido para cálculos complexos.
. ComoShape Key Drivers
Deformação de Malha Aprimorada
Conserte problemas de intersecção que acontecem ao usar armaduras e weight painting, especialmente em articulações. Shape keys também podem ser usadas para ajustar e refinar um rig, por exemplo para sugerir formações de músculos. Nesse exemplo, uma shape key é usada para melhorar a deformação no cotovelo de um braço rudimentar.
- Configuração
Adicione uma malha (nesse exemplo, um cilindro com loop cuts.
Adicione uma armadura com uma cadeia de bones.
Associe a malha à armadura usando weight painting.
(Nota: para fazer o parent da malha à armadura: selecione a malha primeiro, depois a armadura e use Ctrl-P para criar o parentesco com pesos automáticos.)
Experimente posar a armadura e observe a deformação na articulação. Para consertar problemas de interseção ou ângulos que parecem insatisfatórios, você pode associar um Shape Key com uma pose.
- Shape Key
Posicine a armadura de forma que os problemas sejam visíveis. Certifique-se de cobrir as poses extremas que você deseja suportar para o rig.
Com a malha selecionada, adicione um novo Shape Key além da chave Basis.
Para criar a shape key sobre a deformação da armadura, habilite tanto Edit Mode Display e Cage Editing no modificador Armature.
Entre no Edit Mode e selecione a nova shape key no painel de propriedades. Ajuste os vértices como desejado. Selecione a chave Basis para alternar entre a malha original e suas edições. (Nota: cuide para aplicar edições apenas à sua shape e não à malha original ou outras chaves existentes.
Quando estiver satisfeito em como a deformação parece para a pose problemática, você precisará configurar um driver para ativar a shape suavemente ao entrar nessa posição.
- Driver
Adicione um driver ao Value da shape key que você criou.
Abra o Drovers Editor e selecione o driver.
- Método 1 – Mapeamento direto para um valor de rotação do osso
Uma maneira simples de configurar o driver é com uma correspondência direta do valor do canal de rotação do osso para o Value de ativação da shape key. Esse método tem a desvantagem de depender de um único canal de rotação de osso que pode ser insuficiente para expressar precisamente a condição sob a qual a shape key deve ser ativada.
Na aba Drivers, selecione Averaged Value da rotação do osso que você está posando.
Entenda o eixo de rotação que você está interessado habilitando a exibição dos eixos na armadura ou observando os valores de transformação do osso nas Propriedades.
Selecione o canal de rotação e defina-o como local, ou seja, o valor da rotação do osso relativa ao seu osso pai.
Defina pontos manualmente na curva do driver selecionando um controlador e arrastando-o ou inserindo valores na aba F-Curve. O eixo Y representa o Value da shape key, que deve ir de 0.0 a 1.0. O eixo X é geralmente o quadro, mas para esse driver representa o valor da rotação em radianos. Você pode ter mais de dois pontos na curva e ajustar as transições com controladores na vista da curva (G para mover).
Para verificar se o driver se comporta corretamente, desmarque a opção para mostrar os drivers de objetos selecionados. Dessa forma, você pode posar a armadura e manter um olho no driver.
- Método 2 – Diferença rotacional para um osso alvo
Esse método requer um osso alvo ou corretivo adicinoal, mas ele expressa melhor a condição espacial no espaço 3D do osso que está causando o problema.
No Edit Mode da armadura, adicione um novo osso extrudado do Bone 1, na posição que o Bone 2 deve ter a shape key ativa. Esse tipo de osso geralmente segue a convenção de nomenclatura como «TAR-» (target - alvo) ou («COR-» (corretivo).
Na aba Drivers, selecione Averaged Value da diferença rotacional entre o osso que você está rotacionando e o osso alvo. Uma diferença rotacional é o ângulo mínimo entre dois objetos no World Space. Portanto, é importante que os ossos tenham a mesma raiz, de modo que a única coisa que afeta o ângulo entre os ossos é a rotação de um deles. Quando o osso de deformação (Bone 2) alcança a rotação alvo (TAR-Bone 2) a diferença rotacional será 0º.
Ajuste manualmente os controladores da curva do driver de modo que o Value da shape key (eixo Y) é 1.0 quando a diferença rotacional (eixo X) é 0º. O Value deve ser 0.0 quando o braço é estendido, ponto em que a diferença rotacional deve ser cerca de 90º ou mais (em radianos).
Veja os passos nos Método 1 para como ajustar os controladores da curva e confirmar que a funcionalidade está funcionando. Posicione a armadura para verificar se os intervalos estão corretos.
Encadeamento Relativo de Shape Keys
Ative diferente shape keys sucessivamente. Nesse exemplo, mover um único osso irá ativar primeiro Key 1 e então *Key 2. Veja também shape keys relativas misturadas aditivamente.
- Shape Keys
Adicione duas shape keys a uma malha, além da Basis.
- Drivers
Adicione uma armadura com um único osso para controlar as shape keys. O objetivo é ativar as chaves em sucessão conforme esse osso sobe.
Como mostrado na figura acima, quando o osso está na metade do caminho para cima, tanto Key 1 e Key 2 tem uma influência. É uma questão de preferência se a Key 1 deve estar em seu Value máximo antes que a Key 2 comece a tornar-se ativa, ou o quanto elas devem se sobrepor. Este exemplo mostra uma mistura perfeita.
Para uma mistura perfeita onde há sobreposição, Key 1 deve tever um Value de 0.0 quando o osso estiver na parte inferior e aumentar linearmente para 1.0 até que o osso ultrapasse a altura do ponto médio. Key 2 deve ter um valor de 0.0 antes da altura do ponto médio e depois aumentar na mesma taxa que a Key 1 até atingir o Value 1.0 quando o osso estiver na altura máxima.
Adicione um driver ao Value da Key 1 e Key 2. Na aba Drivers, configure ambos driver para Averaged Value de uma variável com a Z location do bone.
Determine a amplitude do movimento do osso no eixo World Z movendo-o para cima de modo que fique alinhado com o topo da malha quando ambas chaves estão ativas. Aqui vamos usar [0.0, 2.5]
Configure as funções do driver para que o Value das shape keys (eixo Y) seja o desejado para a altura do osso (eixo X).
As funções do driver devem ser lineares, portanto, podem ser definidas analiticamente com uma função do tipo \(y = a + bx\), onde \(a\) é um deslocamento em \(y\) e \(b\) é a inclinação.
Na aba Modifiers, adicione um Generator do tipo Extended Polynomial para ambos drivers.
Brinque com os valores de \(a\) e \(b\) para que as curvas vão de [0.0, 1.0] no eixo Y e de [0.0, 2.5] no eixo X. As curvas devem se sobrepor na área central do eixo X e devem ter a mesma inclinação (\(b\)).
Valores possíveis são Key 1: \(y = 0.0 + 0.6x\) e Key 2: \(y = -0.5 + 0.6x\).
Note que as funções ficam fora do intervalos [0.0, 1.0] para o Value das shape keys, mas isso não tem efeito por que o Value é restrito em um Intervalo no painel Shape Keys.