Offre estivale Bibliothèque Numérique ENI :
50€ offerts pour préparer la rentrée ! Cliquez ici
Formez-vous en autonomie à Excel, Word, VBA, Microsoft 365…. Cliquez ici

Écrire ses expressions

Introduction

Les expressions sont un système qui utilise du code pour paramétrer ou animer une propriété d’un calque. Cette propriété doit disposer d’un chronomètre pour pouvoir y ajouter une expression. L’expression est un système de paramétrage supplémentaire par rapport aux images clés. Une propriété animable peut avoir des images clés, des expressions ou les deux.

Les expressions permettent de résoudre des problématiques d’animation insolubles autrement. Elles reprennent la syntaxe du JavaScript et recourent à une bibliothèque de méthodes, de fonctions et d’objets propre à After Effects pour paramétrer et de manipuler des propriétés automatiquement.

Il n’est pas indispensable d’avoir de vastes connaissances pour débuter lorsque vous avez des objectifs simples, tels que relier deux propriétés, créer des boucles d’animation ou utiliser la fonction de tremblement automatique.

Vous pouvez trouver la documentation concernant les expressions en allant dans le menu Aide - Référence de l’expression.

Vous pouvez suivre ce chapitre en vous aidant du projet 16_Expressions.aep à télécharger.

Les expressions automatiques

Un certain nombre d’expressions sont générées automatiquement, les plus simples sont générées grâce à l’Icône de sélection de propriété images/iSF077V25.png.

 Tirez le sélecteur de la propriété fille vers la propriété mère ; la propriété ciblée s’encadre pour indiquer que l’expression va pouvoir être créée. Si vous disposez deux panneaux de montage l’un au-dessus de l’autre, vous pouvez même relier des propriétés d’une composition à une autre.

images/16SF01V25.png

 Pour relier plusieurs propriétés d’un coup, sélectionnez des propriétés (ou un groupe de propriétés, des effets, des styles, des formes, etc.) et faites Edition - Copier avec des liens de propriété relatifs, si vous restez dans la même composition, ou Copier avec des liens de propriété, pour passer vers une autre composition puis sélectionnez le calque cible et faites Ctrl V (PC) ou Cmd V (macOS).

Malheureusement, les propriétés sans chronomètre ne peuvent pas être connectées.

 Les actions Calque - Caméra - Lier la distance de mise au point au point ciblé et Lier la distance de mise au point au calque, créent...

Créer une expression

 Pour créer une expression, cliquez sur un chronomètre tout en maintenant la touche Alt (PC) ou Option (macOS) enfoncée. Vous pouvez aussi utiliser la commande Animation - Ajouter une expression après avoir sélectionné la propriété. 

L’expression par défaut ne modifie pas la propriété, elle se contente de reprendre sa valeur. Mais cela vous donne accès à une zone de texte pour entrer du code.

 Pour agrandir le champ d’édition de l’expression, positionnez le pointeur sur la limite inférieure de la zone de code et faites glisser vers le bas.

images/16SF02V25.png

 Pour agrandir les caractères, faites rouler la molette de la souris en maintenant la touche Ctrl (uniquement sur PC).

Vous pouvez personnaliser l’affichage du code dans les Préférences Modules de script et expressions.

 La valeur de la propriété prend la couleur rouge quand il y a une expression. Sous la propriété, la ligne Expression : « nom de la propriété » est ajoutée avec quatre outils :

  • L’outil Activer l’expression images/iSF161V25.png pour activer ou désactiver l’expression. S’il y a une erreur d’expression, l’expression est désactivée et le symbole images/iSF165V25.png apparaît, cliquez sur ce symbole pour...

Utiliser le menu langage d’expression

 Créez une expression et cliquez sur l’outil Menu langage d’expression images/iSF164V25.png.

images/16SF04V25.png
  • La catégorie Global rassemble plusieurs composants hétérogènes comme des objets de premiers niveaux, des fonctions de conversion de temps et une méthode qui agit sur la fréquence de calcul des expressions.

  • Les catégories Vector Math, Random Numbers, Interpolation, Color Conversion, Other Math et JavaScript Math regroupent des fonctions qui traitent des nombres ou des ensembles de nombres (coordonnées, vecteurs, couleurs). 

  • Ensuite, vous trouverez les différentes catégories d’objets et de sous-objets d’un projet. En cliquant sur ces catégories, vous accédez aux sous-objets et à leurs méthodes et attributs.

Dans le domaine des expressions d’After Effects, qui utilisent une syntaxe similaire à celle du JavaScript, une méthode est une forme particulière de fonction. Une fonction peut être comprise comme une instruction conçue pour réaliser une tâche donnée. La spécificité d’une méthode est qu’elle est intrinsèquement liée à un Objet, un élément sur lequel elle agit ou dont elle tire des informations pour générer de nouvelles données ou modifier des propriétés. Elles sont suivies de parenthèses où se trouvent...

Utiliser l’expression Wiggle pour créer des tremblements

Wiggle est sans doute l’expression la plus utilisées, elle permet d’insuffler un mouvement dynamique et aléatoire aux animations. Elle permet de générer automatiquement des tremblements ou des fluctuations, simulant ainsi des variations naturelles sans avoir besoin de créer des images clés comme c’était le cas avec le panneau Tremblement, offrant ainsi une solution plus flexible grâce aux arguments de fréquence et d’amplitude qui permettent de contrôler le tremblement globalement.

Créer des tremblements

 Ajoutez une expression sur une propriété en faisant Alt clic (PC) ou Option clic (macOS) sur le chronomètre.

 Dans la liste de l’outil Menu langage d’expression images/iSF164V25.png, ouvrez la liste Property et cliquez sur wiggle(freq, amp, octaves = 1, amp_mult = .5, t = time).

Les virgules servent à séparer les arguments des méthodes, ne les utilisez pas pour les chiffres à virgule, il faut utiliser la notation anglo-saxonne (par exemple .5 ou 0.5 et non pas 0,5).

images/16SF05V25.png

 Effacez les trois derniers arguments optionnels pour simplifier le code et obtenir wiggle(freq, amp).

Vous utiliserez ces arguments optionnels pour générer un tremblement plus complexe dans la section suivante.

 Les variables freq et amp doivent être définies pour que la méthode fonctionne. Par exemple : pour une fréquence de tremblement de 10 fois par seconde et une amplitude de plus ou moins 100 la valeur de la propriété, le code devra être wiggle(10,100).

La propriété peut être animée par image clé, le résultat sera cette animation plus les tremblements. Pour une animation de position, vous pouvez visualiser le tracé de la trajectoire créée par l’expression en activant l’outil Afficher...

Utiliser l’expression Loop pour boucler une animation

Expressions pour répéter une animation en boucle

Cette expression doit s’appliquer à une propriété qui contient déjà des images clés. Dans la catégorie Property du Menu langage d’expression images/iSF164V25.png, les codes concernant les boucles sont les suivants :
loopIn(type = "cycle", numKeyframes = 0) 
loopOut(type = "cycle", numKeyframes = 0) 
loopInDuration(type = "cycle", duration = 0) 
loopOutDuration(type = "cycle", duration = 0) 

 Créez l’animation de départ avec des images clés.

 Ajoutez ensuite une expression sur la propriété animée.

 Pour faire une boucle après les clés, utilisez les boucles loopOut. Pour faire une boucle avant les clés, utilisez les boucles loopIn.

 Ces méthodes utilisent deux arguments : le premier est le type de boucle et le deuxième permet de ne pas boucler toutes les clés ou pour loopInDuration et loopOutDuration de ne boucler qu’une certaine durée.

Utiliser les différents types de boucle

 Il existe quatre types de boucle : cycle, pingpong, offset et continue ; ces mots sont à utiliser entre guillemets comme premier argument.

  • Pour que l’animation se répète après ou avant les clés...

Utiliser l’expression ValueAtTime pour décaler une animation

 Reliez une propriété vers une autre avec l’outil du sélecteur d’expression.

 Après le code, qui s’inscrit automatiquement grâce au sélecteur, ajoutez un point puis cliquez sur images/iSF164V25.png, pointez la catégorie Property et choisissez valueAtTime(t)

 Cette méthode nécessite que vous définissiez son argument : remplacez t par time. Le mot time se trouve dans la catégorie Global. Dans ce cas, il n’y a aucun décalage, la propriété a été rétablie au temps courant.

images/16SF11V25.png

 Pour créer un décalage, remplacez time par time - 0.5 par exemple, pour créer un retard d’une demi-seconde sur l’animation source.

images/16SF12V25.png

 Vous pouvez utiliser un Paramètre glissière comme précédemment pour régler facilement le décalage temporel de l’animation.

images/16SF13V25.png

 La méthode valueAtTime peut permettre d’arrêter ou de faire varier la vitesse d’une boucle. Mais comme vous ne pouvez pas appliquer deux méthodes à la suite, vous devez faire la boucle sur un autre calque. Récupérez ensuite la propriété avec le sélecteur et ajoutez la méthode valueAtTime contrôlée par un Paramètre glissière. Vous n’utilisez...

Faire varier un paramètre selon une vitesse

Certains paramètres, comme Evolution de l’effet Bruit Fractal ou Etat de conductivité de l’effet Eclairs élaborés, ont besoin d’être animés en continu à une certaine vitesse.

 Pour transformer une valeur fixe d’une propriété en vitesse de variation, ajoutez l’expression :

value*time 

Vous pouvez taper le code directement (mais pour information, value est dans Property et time dans Global).

 Donnez une valeur initiale à la propriété, cette valeur est multipliée par le temps et devient une vitesse de variation, vous n’avez plus besoin d’utiliser des images clés pour l’animer.

images/16SF14V25.png

Manipuler des coordonnées

Pour manipuler les coordonnées, les expressions utilisent les tableaux JavaScript appelés arrays. Ce système permet d’assigner différentes coordonnées à une propriété multidimensionnelle comme les positions, les échelles, les orientations ou les couleurs.

Les tableaux dans les expressions sont des suites ordonnées de valeurs numériques, séparées par des virgules et encadrées par des crochets. Ils contiennent deux valeurs [x,y] pour les positions ou échelles en 2D, trois valeurs [x,y,z] pour les positions, échelles ou orientations en 3D, et quatre valeurs [r,v,b,a] pour les couleurs, il faut une valeur pour l’Alpha même si elle n’est pas utilisée, sa valeur peut être quelconque.

 Créez une expression sur l’échelle et tapez [100,100] : l’échelle est alors bloquée à 100 % en x et en y.

images/16SF15V25.png

 Dans certains cas, il peut être plus pratique de travailler sur les coordonnées de position en les séparant : sélectionnez les positions et faites Animation - Séparer les dimensions ou faites un clic droit sur la propriété de Position dans le panneau Montage ou Propriété pour sélectionner l’option Séparer les dimensions.

images/16SF16V25.png

Malheureusement, les coordonnées...

Générer des valeurs aléatoires

Dans la catégorie Random Numbers du Menu langage d’expression, vous trouverez plusieurs fonctions pour générer des nombres aléatoires.

 La fonction random() génère un nombre aléatoire compris entre 0 et 1 différent à chaque image. Lorsqu’un argument est spécifié entre les parenthèses, le nombre généré se situe entre 0 et cet argument. Cet argument peut être un nombre ou un tableau contenant des coordonnées spatiales, des échelles, des orientations 3D ou des couleurs. Si deux arguments sont indiqués la fonction produit un résultat dans l’intervalle défini par ces limites.

images/16SF19V25.png

La fonction random est uniforme entre ses limites.

images/16SF20V25.png

La fonction gaussRandom concentre les valeurs au centre mais peut dépasser ces limites. 

 Pour donner une valeur aléatoire qui ne change pas à chaque image, ajoutez une première ligne : seedRandom(seed, timeless = false). Remplacez seed par une valeur numérique quelconque (c’est la source de la séquence pseudo aléatoire) et remplacez le deuxième argument par true pour bloquer la génération de nouvelles valeurs.

 Pour activer ou désactiver la génération des nombres aléatoires, ajoutez l’effet Options pour...

Transformer les variations

Le sélecteur de propriété permet de lier une propriété à une autre en créant une expression automatique. Pour modifier les valeurs transmises, vous pouvez éditer l’expression pour ajouter une opération algébrique, mettre un signe moins devant l’expression pour l’inverser. Mais si la conversion est plus complexe ou si vous voulez modifier l’influence de la propriété au cours du temps, les expressions de la catégorie Interpolation vont vous aider. Ces expressions permettent de convertir une variation quand elle passe entre deux valeurs vers une variation entre deux autres valeurs.

Ces fonctions d’interpolation s’utilisent de nombreuses façons. L’utiliser dans le cadre d’une animation automatique en fonction du niveau audio permet d’en comprendre l’essentiel. 

 Partez d’une composition avec du son et un calque à animer en fonction du niveau audio.

 Cliquez sur Animation - Assistant d’image clé - Convertir les données audio en images clés. Un calque Amplitude audio est ajouté à la composition avec trois Paramètres glissière : Couche de gauche, Couche de droite et Les deux couches.

Reportez-vous au chapitre Créer des animations - Animer automatiquement en fonction du niveau audio pour les étapes...

Sauvegarder les expressions

Vous pouvez sauvegarder en Animation prédéfinie une sélection de propriétés d’un calque avec ses expressions.

 Sélectionnez les propriétés ou les groupes contenant ces propriétés dans le panneau Montage. Ensuite, cliquez sur l’outil Nouvelle animation prédéfinie images/iSF096V25.png en bas du panneau Effets et paramètres prédéfinis, puis enregistrez l’animation prédéfinie sous Documents\Adobe\After Effects 2025\User Presets. Cela sauvegardera les expressions créées dans leur propriété.

Consultez le chapitre Ajouter des effets, section Utiliser et enregistrer des paramètres prédéfinis pour plus d’informations.

 Pour sauvegarder vos expressions contrôlées par des Paramètres glissières, il faut aussi sélectionner les effets de Paramètres glissières en même temps, le tout devant appartenir au même calque.

Plutôt que de créer l’expression directement sur la propriété à modifier, comme un wiggle sur de l’échelle par exemple, vous pouvez créer l’expression dans un Paramètre glissière. Quand vous appliquez ensuite votre Paramètre prédéfini, soit vous recopiez l’expression avec la commande Edition - Copier...

Faire un changement de référentiel

Les expressions de la liste Menu langage d’expression - Layer - Space Transforms permettent de convertir des points ou des vecteurs des référentiels univers 3D (World) ou composition (Comp) vers ou depuis l’espace géométrique du calque. Si vous convertissez un référentiel qui n’est pas celui où se trouve l’expression, il faut en premier indiquer le calque de référence. Le premier argument correspond aux coordonnées du point ou du vecteur dans le référentiel de référence. Le deuxième argument de temps est facultatif, il permet un décalage temporel de la conversion.

Attacher un effet de lumière parasite sur un calque de lumière

Pour se familiariser avec ces concepts, nous allons utiliser l’expression toComp, car elle est simple à comprendre. Parlons d’une composition avec des calques 3D et une lumière de type ponctuel qui passe dans le champ de la caméra. L’expression permettra de lui attacher l’effet lumière parasite

 Ajoutez un calque d’effet (menu Calque - Nouveau - Calque d’effets) avec l’effet Lumière parasite de la catégorie Générer.

 Ajoutez une expression sur la propriété Centre de la source lumineuse de l’effet. Faites glisser...

Utiliser les conditions

La structure de contrôle if else du JavaScript est utilisée pour déterminer un résultat en fonction d’une condition.

Faire qu’un calque 3D ait une face avant et arrière différente

Voici une première application de ce principe qui permet également de voir une autre utilisation des Space Transforms vus dans le chapitre précédent.

Vous pouvez mettre deux calques dos à dos et les lier avec un parentage, mais cette méthode ne sera pas parfaite contrairement à la méthode que nous allons voir.

 Utilisez de préférence deux calques de même taille. Placez le premier en 3D et désactivez la visibilité de l’autre en cliquant sur son œil images/iSF026V25.png.

 Sur le premier calque, ajoutez l’effet Dégradé de la catégorie Canal.

 Dans la liste Avec le calque de l’effet Dégradé, sélectionnez l’autre calque.

images/16SF25V25.png

 Ajoutez une expression dans la propriété Part de l’original.

Cette expression doit déterminer si la face avant est dirigée vers la caméra, cela revient à savoir si un vecteur perpendiculaire au calque est orienté positivement ou négativement par rapport à l’espace composition qui est l’image produite par la caméra. Un vecteur perpendiculaire au calque a des coordonnées...

Utiliser les expressions pour manipuler du texte

Utiliser des expressions dans la propriété Texte source permet d’agir sur le contenu du texte. Pour manipuler une chaîne de caractères, référez-vous à l’objet string dans une documentation sur le JavaScript pour connaître toutes les manipulations possibles de cet objet.

Afficher les coordonnées d’un calque

Dans cet exemple, nous allons afficher les coordonnées de position d’un calque dans l’image. Les techniques qui seront vues pourront aussi s’appliquer à l’affichage d’un pourcentage d’un graphique circulaire par exemple.

 Créez une composition avec le calque cible dont on va afficher les coordonnées.

 Ajoutez un calque de texte vide et ajoutez une expression dans sa propriété Text source.

 Déclarez deux variables, par exemple pos_x et pos_y, et avec le sélecteur d’expression allez chercher les coordonnées du calque cible.

var pos_x = thisComp.layer("Cible").transform.position[0]; 
var pos_y = thisComp.layer("Cible").transform.position[1]; 

 Créez une variable qui sera utilisée pour définir le nombre de chiffre que l’on voudra afficher après la virgule.

var n = 2 ; 
var pos_x = thisComp.layer("Cible").transform.position[0]; 
var pos_y = thisComp.layer("Cible").transform.position[1];...

Utiliser les expressions pour contrôler le style du texte

Introduction

Le formatage du texte dans le panneau Propriétés n’est pas animable par images clés : ces propriétés n’apparaissent pas dans le panneau Montage. Mais vous pouvez y accéder avec des expressions. Les expressions de la catégorie Text vous permettent soit de récupérer ces informations pour paramétrer une autre propriété ou un autre calque de texte, ou bien de paramétrer et d’animer par expression différentes options de style de votre texte.

Ces expressions utilisent le moteur JavaScript des Paramètres du projet - Expressions. Elles ne fonctionnent pas avec l’ancien moteur d’expressions ExtendScript hérité.

Les schémas suivants montrent à quoi correspondent les expressions qui sont dans le Menu langage d’expression : Text - Styling - Text Properties / Methods et Paragraph Properties / Methods dans les panneaux Propriétés Texte et Paragraphe. La colonne à gauche présente les expressions dans l’ordre affiché dans le menu langage d’expression. Array, Boolean, Number et String indiquent le type de valeurs récupérées ou à utiliser comme argument dans les méthodes. Les méthodes pour le texte peuvent utiliser deux argument supplémentaires, notés ici s et n, pour indiquer à partir de quel caractère et sur combien de caractères s’applique la méthode.

images/16SF30V25.png
images/16SF31V25.png

Ces expressions doivent être précédées de :

style 
getStyleAt(). 

ou :

createStyle(). 

Par exemple, l’expression :

style.font 

appliquée à la propriété Texte source renvoie le nom de la police de caractères.

L’expression :

style.setFont("OpenSans") 

applique la police OpenSans au calque de texte. Consultez la section Définir un choix de police ou d’autre styles depuis une liste déroulante pour voir comment connaître le nom des polices à mettre entre les parenthèses de la méthode setFont().

Copier le style d’un calque de texte vers un autre

En utilisant ces expressions pour copier automatiquement des styles en fonction d’un calque de texte de référence, vous pourrez...

Utiliser le Sélecteur d’expression de l’animation de texte

Dans le chapitre sur l’animation de texte, vous avez vu comment animer le texte avec les Sélecteurs de plage et les Sélecteurs de tremblement. Si vous maîtrisez cette partie, vous pouvez maintenant utiliser le troisième type de sélecteur : le Sélecteur d’expression qui peut agir en fonction des index des caractères, des mots ou des lignes.

 Ajoutez un calque de texte réparti sur plusieurs lignes.

images/16SF41V25.png

 Dans le panneau Propriétés, cliquez sur images/iSF115V25.png et choisissez Position

 Dans le panneau Montage, décalez cette position en x de façon à faire sortir le texte.

 En regard d’Animation 1, cliquez sur Ajouter puis Sélecteur - Expression.

images/16SF42V25.png

 Déroulez ce sélecteur et sa propriété Valeur. L’expression suivante est affichée :

selectorValue * textIndex/textTotal 
images/16SF43V25.png

Dans un sélecteur d’expression, à chaque image, le code est calculé pour chaque élément de texte défini dans le menu Basé sur. À chaque calcul, textIndex renvoie l’index de l’élément de texte de 1 à TextTotal (l’index maximal du texte). selectorValue récupère la valeur de sélection produite par les sélecteurs au-dessus. L’expression...

Utiliser sourceRecAtTime pour les calques de texte

L’expression sourceRecAtTime() dans Layer - Sub-objects du Menu langage d’expression permet de connaître la taille d’un calque et les coordonnées de son coin supérieur gauche dans le référentiel du calque. Ces informations sont intéressantes à connaître par cette expression pour les calques de texte. En effet, les calques de texte ont une taille qui est variable, elle dépend de ce qu’il y a d’écrit, du formatage et de l’animation des caractères.

Le point d’origine dans un calque de texte, les coordonnées [0,0] dans le calque, se trouve toujours à la base de la première ligne. Son emplacement peut être à gauche, à droite ou au centre en fonction de l’alignement choisi. Nous allons voir une application de l’expression sourceRecAtTime() pour maintenir le point d’ancrage centré dans le contenu du calque.

 Créez un calque de texte. Saisissez le texte sur plusieurs lignes pour bien voir l’intérêt de cette expression.

 Ajoutez cette expression dans le point d’ancrage :

var s = sourceRectAtTime(); 
var x = s.left+s.width/2; 
var y = s.top+s.height/2; 
[x,y] 

L’expression sourceRecAtTime() peut être suivie de .top, .left, .width ou .height.

  • top donne la distance en pixels du bord supérieur...

Utiliser Path Property pour les tracés

Les expressions de la catégorie Path Property permettent d’extraire des propriétés des tracés et de créer des tracés. Les tracés peuvent être des tracés de masques, de calque de forme ou de peinture. Les trois scripts du panneau Create Nulls Form Paths et les presets Zone de texte 2D (forme), Zone de texte 2D (masque et effets), Graphique linéaireÉcrire sur la flèche utilisent ces expressions.

Nous allons voir un exemple d’utilisation de ces expressions pour souligner automatiquement une ligne de texte, puisque ce formatage n’existe pas dans la mise en forme du texte. Nous aurons également besoin de l’expression sourceRecAtTime() vu précédemment.

 Créez un calque de texte sur une ligne.

 Ajoutez un masque sur le texte, vous pouvez utiliser la commande Calque - Masque - Nouveau masque, ou créez n’importe quel masque, il sera remplacé par l’expression.

 Dans la propriété Tracé du masque, ajoutez la dernière expression située dans le Menu langage d’expression Path Property :

createPath(points = [[0,0], [100,0], [100,100], [0,100]], 
inTangents = [], outTangents = [], isClosed = true) 

 Choisissez le mode du masque Aucun pour ne pas découper le texte et sélectionnez le calque pour afficher...

Créer des animations depuis des données

After Effects peut importer du texte ou des données depuis des fichiers aux formats TSV, CSV ou JSON. Le format TSV (Tab Separated Values) sépare les valeurs par des tabulations et le format CSV (Comma Separated Values) sépare les valeurs par des virgules. Le format JSON (JavaScript Object Notation), plus complexe, permet de structurer les données en arborescence pour dépasser les limites de l’organisation en tableaux des TSV et CSV.

 Dans un premier temps vous pouvez utiliser un simple éditeur de texte pour créer vos données aux formats TSV ou CSV, mais un logiciel dédié sera rapidement nécessaire pour des données plus nombreuses. La première ligne est réservée pour les libellés des colonnes séparées par des tabulations (pour le format TSV) ou des virgules (pour le format CSV). Les lignes suivantes introduisent les données avec le même séparateur, avec autant de données par ligne qu’il y a de libellés pour les colonnes, le tout formant un tableau. Sauvegardez en encodage UTF-8 et changez l’extension du fichier, remplacez l’extension txt par tsv ou csv selon le type de séparateur choisi.

Comme le format csv utilise les virgules comme séparateur, les données de type texte doivent être placées entre guillemets pour pouvoir contenir des virgules. Ce format est utilisé dans la création des modèles d’animations graphiques pour Premiere Pro (cf. chapitre Les modèles d’animations graphiques - Utiliser un fichier de données CSV).

 Pour un premier test utilisez l’éditeur de texte par défaut comme le Bloc-notes de Windows ou TextEdit de macOS. Créez un fichier texte, écrivez dans la première ligne...