Animer plusieurs objets avec les drivers dans Blender
Imaginons que je veux animer ces deux cylindres de cette manière :
Quand l'un rapetisse de 1 unité sur l'axe des z, l'autre grandit de 2 unités sur le même axe, et inversement.
Note : le cercle orange indique que j'ai positionné l'origine de ces cylindres sur un point en bas
Je peux mettre des keyframes sur les propriétés Scale
des deux cylindres. Mais si, finalement, je veux que mon premier cylindre grandisse de 1 unité puis rapetisse de 3 unités, je suis obligé de reprendre les keyframes de l'autre cylindre. Si on multiplie les cylindres et les keyframes, ça peut devenir rapidement fastidieux. Heureusement, on peut piloter l'animation de plusieurs objets par celle d'un seul, grâce aux drivers. Voici comment :
- Je veux que le cylindre de gauche pilote le cylindre de droite donc je clique sur le cylindre de droite pour le sélectionner, puis dans ses propriétés de transformation (touche N), je fais un clic droit sur
Scale: Z
et je choisisAdd Driver
, ou bien je mets simplement le pointeur de souris sur Scale Z et je fais Ctrl D, ce qui fait apparaître cette fenêtre flottante :
Note : cette fenêtre flottante disparaît dès que le pointeur de la sourir en sort, mais on peut l'afficher de nouveau en faisant un clic droit sur la propriétéScale: Z
et en choisissantEdit Driver
. - Dans cette fenêtre, je ne m'inquiète pas du message "ERROR: Invalid Python expression" parce que je n'ai pas encore choisi l'objet qui va piloter, et c'est pourquoi le champ
Object:
est en rouge. - Je clique donc sur ce champ
Object:
pour choisir l'objet "Cylinder", mon cylindre de gauche. (Mon cylindre de droite s'appelle "Cylinder.001" comme on peut le voir en haut de la fenêtre) - Dans le champ
Type:
, je choisisZ Scale
, c'est-à-dire que je choisis de prendre l'échelle sur l'axe z de mon objet "Cylinder" pour la mettre dans la variable nommée "var". - Maintenant, j'entre dans le champ
Expression:
la formule que je veux, à savoir : 2 + (3 - var) * 2 - le premier 2, c'est la hauteur de départ de mon cylindre de droite
- le 3, c'est la hauteur de départ de mon cylindre de gauche
- 3 - var, c'est donc la différence entre la hauteur de départ de celui de gauche et sa hauteur actuelle à un moment donné, selon les keyframes qu'on lui applique
- et comme je veux que pour 1 de différence à gauche ça donne -2 à droite, je multiplie par 2
- Je mets les keyframes que je veux sur mon cylindre de gauche, et voilà le résultat :