Flux de travail et exemples

Les pilotes simples peuvent être configurés à partir de la fenêtre contextuelle qui apparaît lors de l’ajout d’un nouveau pilote. Lors de l’ajout de plusieurs pilotes ou pour des configurations plus avancées, il est utile d’ouvrir l’éditeur de pilotes.

Pilote de transformation

Contrôle une propriété avec la transformation d’un objet. Dans cet exemple, la rotation Y de l’objet 2 sera pilotée par la position X de l’objet 1. À partir d’une configuration simple avec deux objets :

  1. Ajoutez un pilote à la propriété Rotation Y du second objet via le menu contextuel ou avec Ctrl-D.

    ../../_images/animation_drivers_workflow-examples_transform-driver-1.png
  2. Ouvrez le Drivers Editor et sélectionnez la propriété Y Euler Rotation dans la région des canaux.

  3. Ouvrez la région Sidebar et sélectionnez l’onglet Drivers.

  4. Configurez le pilote pour qu’il soit à la Averaged Value d’un Transform Channel du premier objet.

    ../../_images/animation_drivers_workflow-examples_transform-driver-2.png
  5. Expérimentez le déplacement du premier objet et remarquez comment il affecte la rotation en Y du second objet.

Expression scriptée - Orbiter un point

Met en orbite la position d’un objet autour d’un point avec une expression scriptée (Scripted Expression) personnalisée. La position de l’objet changera lors du défilement de la chronologie. En utilisant la trigonométrie, le mouvement circulaire peut être défini en 2D à l’aide des fonctions sinus et cosinus. (Voir Unit Circle.) Dans cet exemple, l’image courante est utilisée comme variable qui induit le mouvement. frame est une expression simple qui correspond à bpy.context.scene.frame_current.

../../_images/animation_drivers_workflow-examples_object-rotation.png
  1. Ajoutez un pilote à la propriété X Location.

    1. Réglez le Driver Type sur Scripted Expression.

    2. Ajoutez l’expression 0 + (sin(frame / 8) * 4), où :

      • frame/8 : est la trame courante de l’animation, divisée par 8 pour ralentir l’orbite.

      • (sin( )*4) : multiplie le résultat de sin(frame/8) par 4 pour obtenir un cercle plus grand.

      • 0 + : est utilisé pour contrôler le décalage par rapport au point central de l’orbite.

  2. Ajoutez un pilote à la propriété Y Location avec l’expression 0 + (cos(frame / 8) * 4).

  3. Balayez la chronologie (timeline) pour voir l’effet. Expérimentez avec les variables pour contrôler la taille et le centre de l’orbite.

Fonction personnalisée - le carré d’une valeur

Crée une fonction personnalisée pour obtenir le carré d’une valeur (c’est-à-dire valeur2). L’ajout de la fonction à Driver Namespace lui permet d’être utilisée à partir d’expressions de pilote. L’espace de noms du pilote contient une liste de fonctions intégrées à utiliser dans les expressions de pilote, ainsi que des constantes telles que π et e. Elles peuvent être inspectés via la console Python :

>>> bpy.app.driver_namespace[' <tab>
                              acos']
                              acosh']
                              asin']
                              asinh']
                              atan']
                              ...

Pour ajouter une nouvelle fonction au Driver Namespace, la fonction elle-même doit être implémentée et ensuite ajoutée au bpy.app.driver_namespace.

  1. Ajoutez ce qui suit à l’Éditeur de texte dans Blender et appuyez sur 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. Ajoutez un pilote avec une Scripted Expression telle que square(frame).

  3. Observez l’effet lors du balayage de la chronologie.

Il y a beaucoup d’exemples de fonctions personnalisées disponibles dans les modèles de l’éditeur de texte de Blender Templates ‣ Python ‣ Driver Functions. Étant donné que les Simple Expressions ne peuvent pas accéder aux fonctions personnalisées, leur utilisation n’a de sens que pour les calculs complexes.

Avertissement

Essayer de remplacer les entrées intégrées de l’espace de noms du pilote peut entraîner un comportement indéfini.

Afficher la recherche d’attribut de couche

Le Nœud Attribute en mode View Layer recherche automatiquement la propriété d’attribut dans plusieurs emplacements. Ceci, par exemple, peut permettre de définir une certaine valeur de l’attribut personnalisé au niveau de la Scene ou du World, puis de la remplacer différemment par une View Layer.

../../_images/animation_drivers_workflow-examples_attribute-lookup.png

Les propriétés de contexte des pilotes n’implémentent pas ce comportement, donc si nécessaire, il doit être émulé manuellement via des valeurs de secours et une expression conditionnelle (les conditions sont des expressions simples).

Pour un attribut nommé attr, le nœud tente les six recherches de chemin RNA suivantes dans l’ordre :

  • ["attr"] dans le View Layer actif (propriété personnalisée).

  • attr dans le View Layer actif (propriété intégrée).

  • ["attr"] dans la Scene active.

  • attr dans la Scene active.

  • world["attr"] dans la Scene active.

  • world.attr dans la Scene active.

En fonction de la propriété spécifique, il peut suffire de vérifier uniquement un sous-ensemble de ces emplacements. Par exemple, l’image de droite montre comment accéder à un attribut qui est certainement une propriété personnalisée avec une valeur de couleur.

Les variables de pilote accédant à des emplacements qui ne sont pas définitifs dans la chaîne de recherche doivent utiliser des valeurs de secours non valides pour l’attribut (par exemple, des valeurs de couleur négatives), qui peuvent ensuite être vérifiées par l’expression conditionnelle. La variable finale doit revenir à une valeur par défaut valide à utiliser lorsque la propriété n’est pas définie du tout.

Pilotes clé de forme

Amélioration de la déformation de maillage

Régler les problèmes d’intersection qui surviennent lors de l’utilisation d’armatures et de peinture de poids, en particulier au niveau des articulations. Les clés de forme peuvent également être utilisées pour ajuster et affiner une armature, par exemple pour suggérer des formations musculaires. Dans cet exemple, une clé de forme est utilisée pour améliorer la déformation au niveau du coude d’un bras rudimentaire.

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

À gauche : déformation du maillage du squelette sans correction. À droite : application d’une clé de forme corrective

Setup
  1. Ajoutez un maillage (dans cet exemple, un cylindre avec des coupes en boucle).

  2. Ajoutez une armature avec une chaîne d’os.

  3. Habillez (Skin) le maillage à l’armature en utilisant la peinture de poids (weight painting).

(Note : pour parenter le maillage à l’armature : sélectionnez d’abord le maillage, puis l’armature et utilisez Ctrl-P pour parenter avec des poids automatiques)

Expérimentez la pose de l’armature et observez la déformation au niveau de l’articulation. Pour résoudre les problèmes d’intersection ou les angles qui semblent insatisfaisants, vous pouvez associer une Clé de forme à une pose.

Clé de Forme (Shape Key)
  1. Placez l’armature de manière à ce que les problèmes soient visibles. Veillez à couvrir les poses extrêmes que vous voulez prendre en charge pour le rig.

  2. Avec le maillage sélectionné, ajoutez une nouvelle Shape Key en plus de la clé Basis. Properties ‣ Mesh tab ‣ Shape Keys

  3. Afin de créer la clé de forme au-dessus de la déformation de l’armature, activez à la fois Edit Mode Display et Cage Editing dans le modificateur Armature. Properties ‣ Modifiers tab ‣ Armature Modifier ‣ Header

  4. Entrez en Mode Édition et sélectionnez la nouvelle clé de forme dans le panneau properties. Ajustez les sommets comme vous le souhaitez. Sélectionnez la clé Basis pour basculer entre le maillage original et vos modifications. (Remarque : veillez à n’appliquer les modifications qu’à votre forme et non au maillage d’origine ou à d’autres clés existantes.)

Une fois que vous êtes satisfait de l’aspect de la déformation pour la pose problématique, vous devrez configurer un pilote pour activer la forme en douceur lors de l’entrée dans cette position.

Driver (Pilote)
  1. Ajoutez un pilote à la Value de la clé de forme que vous avez créée.

  2. Ouvrez l’éditeur Drivers et sélectionnez le pilote.

Méthode 1 – Affectation directe à une valeur de rotation d’un os

Une façon simple de configurer le pilote est d’établir une correspondance directe entre la valeur du canal de rotation d’un os et l’activation de la clé de forme Value. Cette méthode présente l’inconvénient de reposer sur un seul canal de rotation de l’os, ce qui peut être insuffisant pour exprimer précisément la condition dans laquelle la clé de forme doit être activée.

  1. Dans l’onglet Drivers, sélectionnez la Averaged Value de la rotation de l’os que vous posez.

    Comprenez l’axe de rotation qui vous intéresse en activant l’affichage des axes dans l’armature ou en observant les valeurs de transformation de l’os dans les Properties.

    Sélectionnez le canal de rotation et réglez-le sur local, c’est-à-dire la valeur de rotation de l’os par rapport à son os parent.

    ../../_images/animation_drivers_workflow-examples_shape-key-method1.png
  2. Définissez manuellement des points dans la courbe du pilote en sélectionnant une poignée et en la faisant glisser ou en insérant des valeurs dans l’onglet F-Curve. L’axe Y représente la clé de forme Value, qui doit aller de 0.0 à 1.0. L’axe X est généralement la trame, mais pour ce pilote, il représente la valeur de rotation en radians. Vous pouvez avoir plus de deux points dans la courbe et ajuster les transitions avec les poignées dans la vue de la courbe (G pour déplacer).

  3. Pour vérifier que le pilote se comporte correctement, désélectionnez l’option permettant de n’afficher que les pilotes des objets sélectionnés. De cette façon, vous pouvez poser l’armature et garder un œil sur le pilote.

Méthode 2 – Différence de rotation par rapport à un os cible

Cette méthode nécessite un os cible supplémentaire ou os correctif, mais elle exprime mieux la condition spatiale dans l’espace 3D de l’os qui cause le problème.

  1. En Mode Édition d’armature, ajoutez un nouvel os extrudé de l’os 1, dans la position où l’os 2 doit avoir la clé de forme active. Ce type d’os suit généralement une convention de dénomination telle que “TAR-”. (cible) ou “COR-”. (correctif).

  2. Dans l’onglet Drivers, sélectionnez la valeur moyennée (Averaged Value) de la différence de rotation entre l’os que vous faites tourner et l’os cible. Une différence de rotation est l’angle minimum entre deux objets dans l’espace World. Il est donc important que les os aient la même racine, de sorte que la seule chose qui affecte l’angle entre les os soit la rotation de l’un d’entre eux. Lorsque l’os de déformation (Bone 2) atteint la rotation cible (TAR-Bone 2), la différence de rotation sera de 0°.

    ../../_images/animation_drivers_workflow-examples_shape-key-method2.png
  3. Ajustez manuellement les poignées de la courbe pilote de sorte que Value de la clé de forme (axe Y) soit 1,0 lorsque la différence de rotation (axe X) est de 0 °. La valeur doit être de 0,0 lorsque le bras est étendu, à ce point la différence de rotation doit être d’environ 90 ° ou plus (en radians).

  4. Consultez les étapes de la méthode 1 pour savoir comment ajuster les poignées de courbe et confirmer que la fonctionnalité fonctionne. Posez l’armature pour vérifier que les plages sont correctes.

Clés de forme relative chaînées

Activez successivement différentes touches de forme. Dans cet exemple, déplacer un seul os activera d’abord la clé 1 puis la clé 2. Voir aussi les touches de forme relatives se mélangent de manière additive.

Shape Keys

Ajoute deux clés de forme à un maillage, en plus de la base 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 supérieures remontées de 1 m.

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

Key 2 : dessus intérieur remonté de 1 m.

Drivers

Ajouter une armature avec un seul os pour contrôler les clés de forme. Le but est d’activer successivement les clés au fur et à mesure que cet os monte.

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

Comme le montre l’image ci-dessus, lorsque l’os est à mi-hauteur, la clé 1 et la clé 2 ont une influence. C’est une question de préférence si la clé 1 doit être à sa valeur maximale avant que la clé 2 ne commence à devenir active, ou dans quelle mesure elles doivent se chevaucher. Cet exemple montre un mélange homogène.

Pour un mélange homogène en cas de chevauchement, la Key 1 doit avoir une valeur de 0,0 lorsque l’os est au bas et augmenter linéairement jusqu’à 1,0 jusqu’à ce que l’os dépasse la hauteur médiane. La Key 2 doit avoir une valeur de 0,0 avant la hauteur médiane, puis augmenter à la même vitesse que la Key 1 jusqu’à atteindre la valeur 1,0 lorsque l’os est à la hauteur maximale.

  1. Ajoutez un pilote à la valeur de la Key 1 et de la Key 2. Dans l’onglet Drivers, configurez les deux pilotes pour être la Averaged Value (Valeur moyenne) d’une variable avec l’emplacement Z de l’os.

  2. Déterminez la plage de mouvement de l’os dans l’axe Z du monde en le déplaçant vers le haut afin qu’il soit aligné avec le haut du maillage lorsque les deux touches sont actives. Ici, nous utiliserons [0.0, 2.5].

  3. Configurez les fonctions du pilote de manière à ce que la Value des clés de forme (axe Y) corresponde à la hauteur de l’os (axe X).

    Les fonctions pilotes doivent être linéaires, par conséquent, elles peuvent être définies analytiquement avec une fonction de type \(y = a + bx\), où \(a\) est un décalage en \(y\) et \(b\) est la pente.

    1. Dans l’onglet Modifiers, ajoutez un Generator de type Extended Polynomial pour les deux pilotes.

    2. Jouez avec les valeurs de \(a\) et \(b\) pour que les courbes partent de [0,0, 1,0] sur l’axe Y et de [0,0, 2,5] sur l’axe X. Les courbes doivent se chevaucher dans la zone médiane de l’axe X et elles doivent avoir la même pente (\(b\)).

      Les valeurs possibles sont Key 1 : \(y = 0.0 + 0.6x\) et Key 2 : \(y = -0.5 + 0.6x\).

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

      Notez que les fonctions sortent de la plage [0.0, 1.0] pour la Value des clés de forme, mais cela n’a aucun effet car la Value est bloquée dans une plage dans le panneau Shape Keys.