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:

  1. Adicione um Driver à propriedade Rotação Y do segundo objeto via o menu de contexto ou com Ctrl-D.

    ../../_images/animation_drivers_workflow-examples_transform-driver-1.png
  2. Abra o Drivers Editor e selecione a propriedade Y Euler Rotation na região de canais.

  3. Abra o menu lateral e selecione a aba Drivers.

  4. Configure o driver para ser o Averaged Value de um Transform Channel do primeiro objeto.

    ../../_images/animation_drivers_workflow-examples_transform-driver-2.png
  5. 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.

../../_images/animation_drivers_workflow-examples_object-rotation.png
  1. Adicione um driver a propriedade X Location.

    1. Defina o Driver Type para Scripted Expression.

    2. 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 de sin(frame/8) por 4 para um círculo maior.

      • 0 + : é usado para controlar o deslocamento para o ponto central da órbita.

  2. Adicione um driver para a propriedade Y Location com a expressão 0 + (cos(frame / 8) * 4).

  3. 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.

  1. 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
    
  2. Adicione um driver com uma Scripted Expression como square(frame).

  3. Observe o efeito ao tocar a timeline.

Existem mais exemplos de funções personalizadas disponíveis no Text Editor do Blender Templates ‣ Python ‣ Driver Functions. Como Simple Expressions não podem acessar funções personalizadas, usá-las só faz sentido para cálculos complexos.

Shape 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.

../../_images/animation_drivers_workflow-examples_shape-key-improved-deformation.png

Esquerda: Deformação da malha esquelética sem correção. Direta: Shape key corretiva aplicada.

Configuração
  1. Adicione uma malha (nesse exemplo, um cilindro com loop cuts.

  2. Adicione uma armadura com uma cadeia de bones.

  3. 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
  1. 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.

  2. Com a malha selecionada, adicione um novo Shape Key além da chave Basis. Properties ‣ Mesh tab ‣ Shape Keys

  3. Para criar a shape key sobre a deformação da armadura, habilite tanto Edit Mode Display e Cage Editing no modificador Armature. Properties ‣ Modifiers tab ‣ Armature Modifier ‣ Header

  4. 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
  1. Adicione um driver ao Value da shape key que você criou.

  2. 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.

  1. 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.

    ../../_images/animation_drivers_workflow-examples_shape-key-method1.png
  2. 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).

  3. 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.

  1. 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).

  2. 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º.

    ../../_images/animation_drivers_workflow-examples_shape-key-method2.png
  3. 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).

  4. 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.

../../_images/animation_drivers_workflow-examples_chained-shape-keys-basis.png

Basis.

../../_images/animation_drivers_workflow-examples_chained-shape-keys-key1.png

Key 1: faces superiores movidas para cima em 1 m.

../../_images/animation_drivers_workflow-examples_chained-shape-keys-key2.png

Key 2: topo interno movido para cima em 1 m.

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.

../../_images/animation_drivers_workflow-examples_chained-shape-keys-result.png

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.

  1. 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.

  2. 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]

  3. 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.

    1. Na aba Modifiers, adicione um Generator do tipo Extended Polynomial para ambos drivers.

    2. 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\).

      ../../_images/animation_drivers_workflow-examples_chained-shape-keys-driver-setup.png

      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.