Expressions/Bases/L'escargot

L'escargot

"L'escargot" est un terme non-officiel faisant référence au petit icône en forme de spirale qui apparaît lorsque l'on ajoute une expression à une propriété. Le nom officiel est le sélecteur d'expression. Pour ceux qui parcourent des sites anglophones, l'escargot est appelé "pickwhip".

sélecteur d'expression

Le sélecteur d'expression ou "escargot"

Cet outil permet d'écrire des expressions "sans effort". Regardons ce qui se passe si l'on amène l'escargot (en maintenant le click sur l'icône et en déplaçant la souris) jusqu'à la propriété d'échelle (horizontale).

sélection à l'aide de l'escargot

Sélection à l'aide de l'escargot

L'expression suivante est apparue

scale[0]

Elle signifie "affecter à la rotation la valeur de la première composante du vecteur échelle". La rotation du calque est dorénavant liée à son échelle (à son échelle horizontale plus précisément). Si l'on anime l'échelle du calque, sa rotation va aussi s'animer. Mettons par exemple 4 clés sur la propriété d'échelle (pour modifier uniquement la composante horizontale de l'échelle, on clique sur l'icône représentant un maillon de chaîne, le huit couché), clé1:0, clé2:90, clé3:90, clé4:0. L'animation produite est la suivante

Lorsque la taille du solide augmente (ou plutôt la valeur de son échelle horizontale), sa rotation augmente proportionnellement. Allons maintenant un peu plus loin, créons un deuxième solide ("Rouge uni 1") et relions (à l'aide de l'escargot) sa propriété d'échelle à la propriété de rotation du calque d'origine ("Jaune uni 1"). Voilà à quoi ressemble la fenêtre de montage

lien entre les propriétés

Lien entre les propriétés

et l'animation qui en résulte est celle-ci

Une nouvelle expression a fait son apparition sur la propriété d'échelle du calque rouge

temp = thisComp.layer("Jaune uni 1").rotation;
[temp,temp]

La première instruction définit la variable temp (on parle également de "déclarer une variable") à laquelle est affectée la valeur de la rotation du calque Jaune uni 1 qui appartient à la composition thisComp. La deuxième ligne, étant ici considérée comme la dernière instruction de l'expression, est assimilée à une affectation de valeur à la propriété concernée. L'échelle est ici un vecteur de dimension deux, il n'est donc pas possible de lui affecter directement la valeur de la rotation, qui elle, est un vecteur de dimension un. C'est pourquoi After Effects va créer un vecteur de dimension deux, en attribuant à chacune de ses composantes la valeur de la rotation (ici stockée dans la variable temp).

Profitons de cette occasion pour aller un peu plus loin dans la manipulation d'expressions. Effaçons l'expression du calque rouge et les images clés du calque jaune pour faire un autre test. Commençons par animer l'échelle verticale du calque jaune, clé1:0, clé2:100, clé3:0. À l'aide de l'escargot relions l'échelle du calque rouge à l'échelle verticale du calque jaune. L'expression qui apparaît automatiquement dans la propriété d'échelle du calque rouge est la suivante

thisComp.layer("Jaune uni 1").scale[1];

et modifions maintenant cette expression comme indiqué sur l'image ci-dessous

modification de l'expression fournie par l'escargot

Modification de l'expression fournie par l'escargot

L'expression calcule simplement le double de l'échelle verticale du calque jaune et l'applique au calque rouge. Détaillons la quand même pas à pas. La première instruction

y = thisComp.layer("Jaune uni 1").scale[1];

déclare la variable y et lui affecte la valeur de la deuxième composante du vecteur échelle du calque Jaune uni 1 (i.e., son échelle verticale). La deuxième instruction est

[scale[0],2 * y];

Cette instruction est la dernière évaluée dans l'expression, donc After Effects considère que son résultat sera la valeur à affecter à la propriété. Le vecteur représenté possède deux composantes, il est donc de dimension deux. Il doit être de dimension deux puisque l'échelle du calque est ici de dimension deux. La première composante scale[0] fait référence à l'échelle horizontale du calque rouge, lorsque l'expression n'est pas prise en compte (i.e., la valeur de la propriété lorsque l'on désactive l'expression en cliquant sur le symbole égal "="), dans cet exemple cette valeur est 100 et reste à 100 tout au long de l'animation. La seconde composante 2 * y indique simplement que l'on affecte à la deuxième composante du vecteur échelle du calque rouge, deux fois la valeur de l'échelle verticale du calque jaune. En faisant une prévisualisation on obtient cette animation

Remarque

Pour créer des expressions plus élaborées, on est amené à modifier ou compléter l'expression de base délivrée par l'utilisation de l'escargot. L'escargot est simplement un outil pour éviter d'avoir à réécrire à la main des bouts d'expressions tels que thisComp.layer("Jaune uni 1").scale. C'est uniquement pour faciliter le travail, mais cet outil n'est absolument pas indispensable. Néanmoins il permet souvent de gagner du temps et de ne pas faire de fautes au niveau de la syntaxe.