Le sélecteur d'expression ("l'escargot")
L'escargot fait référence au petit icône en forme de spirale qui apparait
lorsque nous ajoutons une expression à une propriété.
Cet outil va nous permettre d'écrire des expressions "sans effort". Regardons ce qu'il 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).
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 nous décidons d'animer l'échelle de notre calque, il va également s'animer en rotation.
Mettons par exemple 4 clés sur la propriété d'échelle (pour modifier uniquement
la composante horizontale de l'échelle, cliquons 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.
Nous obtenons l'animation 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 de notre calque d'origine ("Jaune uni 1").
Voilà à quoi ressemble notre fenêtre de montage:
et l'animation qui en résulte
Que s'est-il passé ? Une nouvelle expression a fait son apparition dans la propriété d'échelle de notre calque rouge:
temp = thisComp.layer("Jaune uni 1").rotation;
[temp,temp]
La première instruction définit une variable "temp" (on parle également de "déclarer une variable") à laquelle on affecte
la valeur de la rotation du calque "Jaune uni 1" qui fait lui-même partie de notre 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 (ici l'échelle du calque rouge).
L'échelle de notre calque est un vecteur de dimension 2, il n'est donc pas possible de lui affecter directement la valeur de la rotation, qui elle, est un vecteur de dimension 1.
C'est pourquoi After Effects par défaut va créer un vecteur de dimension 2, en attribuant à chacune de ses composantes la valeur de la rotation (ici stockée dans la variable "temp").
Profitons de cette occasion pour aller encore un peu loin dans la manipulation d'expressions.
Effaçons l'expression du calque rouge et les points 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. A l'aide de l'escargot relions l'échelle du calque rouge à l'échelle verticale du calque jaune.
L'expression qui apparait automatiquement dans la propriété d'échelle du calque rouge est la suivante:
thisComp.layer("Jaune uni 1").scale[1];
Modifions maintenant cette expression comme indiqué sur la capture suivante:
Si nous avons bien compris la partie précédente nous devons nous rendre compte que l'expression calcule simplement le double de l'échelle verticale du calque jaune et l'applique au calque rouge.
Cependant comme nous sommes encore au début de notre apprentissage, il vaut mieux détailler pas à pas l'expression.
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];
Il s'agit de la dernière instruction évaluée dans l'expression, After Effects considèrera donc que le résultat de cette instruction sera la valeur à affecter à la propriété d'échelle du calque rouge.
Le vecteur représenté possède 2 composantes, il est donc de dimension 2. Il doit être de dimension 2 puisque l'échelle de notre calque est de dimension 2.
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 nous désactivons l'expression en cliquant sur le symbole "="),
dans notre 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 de notre calque rouge, 2 fois la valeur de l'échelle verticale du calque jaune.
En faisant une prévisualisation, nous obtenons cette animation:
Remarque
Nous allons fréquemment être amenés à modifier ou compléter l'expression "de base" délivrée par l'utilisation de l'escargot pour créer des expressions plus élaborées.
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" dans notre exemple. C'est uniquement pour nous faciliter le travail, mais cet outil n'est absolument pas indispensable.
Si vous préférez tout écrire à l'aide de votre clavier vous êtes libre de le faire, le résultat sera le même. Néanmoins je vous conseille de l'utiliser
car en plus du gain de temps il vous assure de ne pas faire d'erreur dans l'orthographe notamment.
|