HervéRenault.fr

logo de Blender

Animer plusieurs objets avec les drivers dans Blender

Imaginons que je veux animer ces deux cylindres de cette manière :
Animation sans driver
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 :

Remarque : quand on ouvre un vieux fichier, il me semble qu'on ne peut pas voir en un coup d'œil si on a mis des drivers quelque part. Pour les retrouver, il faut cliquer sur les différentes propriétés ou contraintes de chaque objet pour voir s'il y a une couleur violette. Pour éviter de tâtonner, on peut taper ce code Python dans l'onglet/workspace Scripting :

for obj in bpy.data.objects:
    if obj.animation_data is not None:
        for drv in obj.animation_data.drivers:
            print ('%s.%s → %s' % (obj.name, drv.data_path, drv.driver.expression))

Un exemple plus complexe

Si on veut contraindre un objet à suivre la "croissance" d'une courbe de Bézier, c'est-à-dire la variation des paramètres Start & End Mapping dans l'onglet Data de la courbe (section Geometry), il faut ajouter une contrainte Follow Path dans l'onglet Constraints de l'objet avec les paramètres suivants :

Puis entrer ces paramètres dans le driver :