Guide d'utilisation Annuler

Présentation du langage dʼexpression

Apprenez le langage d’expression et utilisez-le pour former différentes expressions dans After Effects.

Le langage d’expression After Effects est basé sur JavaScript et intègre un large ensemble d’objets. After Effects utilise le langage standard JavaScript de base et non les extensions spécifiques du navigateur web. Il contient son propre jeu d’objets d’extension, tels que Calque, Composition, Enregistrement et Caméra.

Même si le langage d’expression est basé sur un langage de script, une différence subtile mais essentielle existe entre un script et une expression. Contrairement à un script, qui commande à l’application de réaliser une action, une expression commande à une propriété de réaliser une action.

Lorsque vous créez des expressions, gardez à l’esprit les considérations suivantes :

  • La valeur d’une expression est la valeur de la dernière instruction évaluée.Il s’agit généralement de la dernière ligne de l’expression. Dans sa forme la plus simple, la valeur d’une expression est produite par la dernière variable ou la dernière fonction appelée dans l’expression en fonction de l’ordre d’évaluation. Cependant, il peut également s’agir de n’importe quelle valeur à laquelle vous faites explicitement référence comme valeur de renvoi. Cela peut inclure des valeurs utilisées beaucoup plus tôt dans l’expression à des fins de débogage ou des valeurs en dehors des variables et des fonctions explicitement déclarées qui ne sont pas traitées dans l’ordre d’écriture.
  • Le langage JavaScript respecte la casse.
  • Les fonctions ne doivent pas être déclarées au bas d’une expression.

Principes de base du langage

En JavaScript, une valeur contenue dans un objet est appelée Propriété. Dans After Effects, cependant, le terme Propriété se réfère à des composants de calque définis dans le panneau Montage. C’est pour cette raison qu’After Effects désigne les propriétés JavaScript par les termes méthodes ou attributs. Dans la pratique, la différence entre une méthode et un attribut est que la méthode réalise généralement une opération pour créer sa valeur de sortie (retour), tandis qu’un attribut fait simplement référence à une valeur existante pour déterminer sa valeur de sortie (retour). Il est plus facile de distinguer une méthode d’un attribut en observant les parenthèses suivant le nom de la méthode et entourant ses arguments d’entrée.

Un objet est un élément contenant d’autres objets, attributs et méthodes. Les compositions, les calques et les métrages sont des exemples d’objets. Plus précisément, les éléments de compositions, de calques et de métrages sont des objets globaux, ce qui signifie qu’ils peuvent être utilisés dans n’importe quel contexte sans référence à un objet de niveau supérieur.

Accès aux attributs et aux méthodes

Vous pouvez utiliser le langage des expressions pour accéder aux attributs et aux méthodes des propriétés des calques. Pour accéder à une valeur, utilisez une chaîne de références d’objet dont les éléments sont séparés par l’opérateur point (.). Vous pouvez également utiliser des parenthèses pour enchaîner des références d’objet au-delà du niveau du calque (par exemple, pour faire référence à des propriétés d’effet, des masques ou des animations de texte). Par exemple, pour lier la propriété Opacité dans le calque A à la propriété Intensité de l’effet Flou gaussien dans le calque B, saisissez l’expression suivante dans le champ d’expression pour la propriété Opacité du calque A :

thisCompayer(“Layer B”)ffect(“Gaussian Blur”)(“Blurriness”)
thisCompayer(“Layer B”)ffect(“Gaussian Blur”)(“Blurriness”)
thisCompayer(“Layer B”)ffect(“Gaussian Blur”)(“Blurriness”)

En lisant cette expression de gauche à droite, vous progressez de l’objet contenant de niveau supérieur jusqu’à la propriété spécifique :

  • L’objet global utilisé fait référence à la composition actuelle : thisComp.

  • Un objet de calque spécifique de cette composition est désigné par son nom : layer("Layer B").

  • Un objet d’effet spécifique de ce calque est désigné par son nom : effect("Gaussian Blur").

  • Une propriété spécifique de cet effet est désignée par son nom : ("Blurriness").

Pour le n-ième composant d’une propriété multidimensionnelle, tel que le composant y d’un point de contrôle d’effet, ajoutez [n] à la fin, comme suit :

thisCompayer(“Layer B”)ffect(“Advanced Lightning”)(“Origin”1]
thisCompayer(“Layer B”)ffect(“Advanced Lightning”)(“Origin”1]
thisCompayer(“Layer B”)ffect(“Advanced Lightning”)(“Origin”1]

L’objet par défaut de toute expression est la propriété sur laquelle elle est rédigée, suivi du calque contenant l’expression ; il est donc inutile de spécifier la propriété. Par exemple, une expression de tremblement écrite sur la propriété Position d’un calque peut être écrite des deux façons suivantes :

wiggle(5, 10)
position.wiggle(5, 10)
thisProperty.wiggle(5, 10)
wiggle(5, 10) position.wiggle(5, 10) thisProperty.wiggle(5, 10)
wiggle(5, 10)
position.wiggle(5, 10)
thisProperty.wiggle(5, 10)

Insérez le calque et la propriété lorsque vous les extrayez d’un autre calque, ainsi que la propriété sur laquelle l’expression est rédigée. Par exemple, une expression écrite sur la propriété Opacité du calque B, la liant à la propriété Rotation du calque A aurait l’aspect suivant :

thisCompayer(“Layer A”)otation
thisCompayer(“Layer A”)otation
thisCompayer(“Layer A”)otation
Remarque :

Pour étudier d’autres exemples de fonctionnement des expressions, utilisez l’icône de sélection pour relier une propriété de calque à une autre et examinez les expressions qui en résultent.

Ensembles et propriétés multidimensionnelles

Un ensemble (Array) est un type d’objet qui stocke un jeu ordonné de plusieurs nombres. Il se présente sous la forme d’une liste de nombres séparés par des virgules, apparaissant entre crochets, comme dans cet exemple :

[10, 23]
[10, 23]
[10, 23]

Vous pouvez affecter un objet Tableau à une variable, afin de faciliter les références aux valeurs de tableau dans le reste de l’expression. Par exemple :

myArray = [10, 23]
myArray = [10, 23]
myArray = [10, 23]

La dimension d’un objet Tableau correspond au nombre d’éléments dans le tableau. La dimension de myArray est 2. Dans After Effects, les propriétés peuvent avoir des dimensions différentes en fonction du nombre de leurs arguments de valeur. Dans le langage d’expression, les valeurs des propriétés sont soit des valeurs uniques (objets Nombre) soit des tableaux (objets Tableau).

Le tableau suivant donne des exemples de propriétés et de dimensions associées :

Dimension

Propriété

1

Rotation °

Opacité %

2

Échelle [x=largeur, y=hauteur]

Position [x, y]

Point d’ancrage [x, y]

Niveaux audio [gauche, droit]

3

Échelle [largeur, hauteur, profondeur]

Position 3D [x, y, z]

Point d’ancrage 3D [x, y, z]

Orientation [x, y, z]

4

Couleur [rouge, vert, bleu, alpha]

Vous pouvez accéder aux éléments individuels d’un objet Tableau en utilisant des parenthèses et un numéro d’index pour indiquer l’élément requis. Les éléments d’un objet Tableau sont indexés à partir de 0. Selon l’exemple précédent, myArray[0] est 10 et myArray[1] est 23.

Les deux expressions suivantes sont équivalentes :

[myArray[0], 5] [10, 5]
[myArray[0], 5] [10, 5]
[myArray[0], 5] [10, 5]

Tableaux de la propriété Position

Les tableaux de la propriété Position sont indexés comme suit :

  • position[0] indique la coordonnée x de la position.

  • position[1] indique la coordonnée y de la position.

  • position[2] indique la coordonnée z de la position.

Représentation des couleurs dans les tableaux

Les couleurs sont représentées en tant que tableaux 4D :

  • Rouge
  • Vert
  • Bleu
  • Alpha

Dans les projets ayant un codage des couleurs de 8bpc ou 16 bpc, chaque valeur d’un ensemble va de 0 (noir) à 1 (blanc). Le rouge, par exemple, peut aller de 0 (aucune couleur) à 1 (rouge). [0,0,0,0] correspond donc à du noir transparent et [1,1,1,1] à du blanc complètement opaque. Dans les projets ayant un codage des couleurs de 32 bpc, les valeurs inférieures à 0 et supérieures à 1 sont autorisées.

Si vous utilisez un index supérieur à l’index du composant de dimension maximale d’un objet d’ensemble, After Effects renvoie une erreur. Par exemple, myArray[2] génère une erreur, mais position[2] renvoie la coordonnée z de la position.

Dans le langage des expressions After Effects, de nombreuses propriétés et méthodes utilisent des objets d’ensemble en tant qu’arguments ou en renvoient en tant que valeurs. Par exemple, thisLayer.position est un objet d’ensemble bidimensionnel ou tridimensionnel, selon qu’il s’agit d’un calque 2D ou 3D.

Exemples

Pour écrire une expression qui garde la valeur y d’une animation de Position, mais fixe la valeur x à 9, utilisez l’expression suivante :

y = position[1]; [9,y]
y = position[1]; [9,y]
y = position[1]; [9,y]

Ou plus succinctement encore :

[9, position[1]]
[9, position[1]]
[9, position[1]]

Il s’agit d’une règle importante : voici donc un autre exemple. Si vous voulez combiner la valeur de position x du calque A avec la valeur de position y du calque B, vous devez utiliser l’expression suivante :

x = thisCompayer(“Layer A”)osition[0
y = thisCompayer(“Layer B”)osition[1
[x]
x = thisCompayer(“Layer A”)osition[0 y = thisCompayer(“Layer B”)osition[1 [x]
  x = thisCompayer(“Layer A”)osition[0  
  y = thisCompayer(“Layer B”)osition[1  
  [x]

Vous pouvez créer une expression faisant référence à une seule valeur de l’ensemble d’une propriété 2D ou 3D. Sauf indication contraire, c’est la première valeur qui est utilisée. Par exemple, si vous faites glisser l’icône de sélection de la propriété Rotation du calque A à la propriété Échelle du calque B, l’expression suivante apparaît :

thisCompayer(“Layer B”)cale[0]
thisCompayer(“Layer B”)cale[0]
  thisCompayer(“Layer B”)cale[0]

Par défaut, cette expression utilise la première valeur de la propriété Échelle, qui est la largeur. Si vous préférez utiliser la valeur de la hauteur à la place, faites glisser l’icône de sélection directement vers la deuxième valeur (et non plus sur le nom de la propriété) ou modifiez l’expression comme suit :

thisCompayer(“Layer B”)cale[1]
thisCompayer(“Layer B”)cale[1]
  thisCompayer(“Layer B”)cale[1]

À l’inverse, si vous faites glisser l’icône de sélection de la propriété Échelle du calque B à la propriété Rotation du calque A, After Effects crée automatiquement une variable, lui attribue la valeur à une dimension de la propriété Rotation, puis utilise cette variable pour les deux dimensions de la propriété Échelle :

temp = thisComp.layer(1).transform.rotation; [temp, temp]
temp = thisComp.layer(1).transform.rotation; [temp, temp]
temp = thisComp.layer(1).transform.rotation; [temp, temp]

Vecteurs

De nombreuses méthodes et propriétés d’After Effects utilisent ou renvoient des vecteurs. After Effects utilise un vecteur pour faire référence à un ensemble si ce dernier représente un point ou une direction dans l’espace. La propriété position d’After Effects, par exemple, renvoie un vecteur.

Toutefois, une fonction telle qu’audioLevels, qui renvoie un ensemble à deux dimensions (les niveaux des canaux droit et gauche), n’est pas appelée vecteur puisqu’elle ne représente ni un point ni une direction. Certaines fonctions d’After Effects acceptent les vecteurs en tant qu’arguments, mais cela n’est généralement utile que lorsque les valeurs représentent une direction. cross(vec1, vec2), par exemple, calcule un troisième vecteur à angle droit par rapport aux vecteurs d’entrée. Le produit croisé est utile si vec1 et vec2 sont deux vecteurs représentant des directions dans l’espace ; elle n’est d’aucune utilité s’ils représentent simplement deux ensembles arbitraires de nombres.

Indices et libellés

L’indexation des éléments Calque, Effet et Masque d’After Effects part de 1. Par exemple, le premier calque du panneau Montage est layer(1).

Il est généralement préférable d’utiliser le nom du calque, de l’effet ou du masque au lieu d’un nombre pour éviter les confusions et les erreurs s’ils sont déplacés ou en cas de modification des arguments lors des mises à jour et des mises à niveau du produit. Lorsque vous spécifiez un nom, entourez-le toujours de guillemets droits. Par exemple, la première de ces expressions est plus lisible que la seconde et continue de fonctionner même si vous modifiez l’ordre des effets :

effect(“Colorama”)aram(“Get Phase From”)
effect(1)aram(2)
effect(“Colorama”)aram(“Get Phase From”) effect(1)aram(2)
  effect(“Colorama”)aram(“Get Phase From”)  
  effect(1)aram(2)

Temps d’expression

Le temps d’une expression correspond toujours au temps de la composition (et non au temps du calque). Il est mesuré en secondes (ce n’est pas le cas avec l’expression sourceRectAtTime()). L’instant par défaut de toute expression est l’instant de la composition auquel elle est évaluée. Les deux expressions suivantes utilisent le temps de composition par défaut et renvoient les mêmes valeurs :

thisComp.layer(1).position thisComp.layer(1).position.valueAtTime(time)
thisComp.layer(1).position thisComp.layer(1).position.valueAtTime(time)
thisComp.layer(1).position thisComp.layer(1).position.valueAtTime(time)

Pour utiliser un instant relatif, ajoutez une valeur temporelle incrémentielle à l’argument time. Par exemple, pour obtenir une valeur Position 5 secondes avant l’instant courant, utilisez l’expression suivante :

thisComp.layer(1).position.valueAtTime(time-5)
thisComp.layer(1).position.valueAtTime(time-5)
thisComp.layer(1).position.valueAtTime(time-5)

Par défaut, les références temporelles aux propriétés dans les compositions imbriquées utilisent le temps par défaut initial des compositions et non le temps redistribué. Toutefois, si vous utilisez la fonction source pour récupérer une propriété, le temps redistribué est utilisé.

Par exemple, si la source d’un calque de la composition réceptrice est une composition imbriquée et que la composition réceptrice comporte une redistribution temporelle, lorsque vous obtenez les valeurs de position d’un calque de la composition imbriquée avec l’expression suivante, ces valeurs utilisent le temps par défaut de la composition :

comp(“nested composition”)ayer(1)osition
comp(“nested composition”)ayer(1)osition
comp(“nested composition”)ayer(1)osition

Néanmoins, si vous accédez au calque 1 grâce à la fonction source, les valeurs de position utilisent le temps redistribué :

thisCompayer(“nested composition”)ourceayer(1)osition
thisCompayer(“nested composition”)ourceayer(1)osition
thisCompayer(“nested composition”)ourceayer(1)osition
Remarque :

Si vous utilisez un instant spécifique dans une expression, le temps redistribué est ignoré dans After Effects.

Dans la mesure où les expressions opèrent sur le temps en unités de secondes (et non en images), il peut parfois se révéler nécessaire d’utiliser des méthodes de conversion temporelle pour convertir les valeurs temporelles de manière à réaliser des opérations sur les images.

Exemple : utilisation des éléments du langage d’expressions pour écrire une expression

Pour apprendre à écrire des expressions, consultez l’exemple pour vous familiariser avec les éléments du langage d’expressions After Effects. L’expression créée dans cet exemple relie la propriété Position de Solid 2 à la propriété Position de Solid 1, le mouvement de Solid 2 étant décalé de deux secondes par rapport à celui de Solid 1.

  1. Créez deux calques solides : Solid 1 et Solid 2.

  2. Utilisez des images clés pour animer les valeurs de la propriété Position du calque Solid 1. (voir la section À propos de l’animation, des images clés et des expressions).

  3. Sélectionnez la propriété Position pour Solid 2 et choisissez Animation > Ajouter l’expression ou cliquez en maintenant enfoncée la touche Alt (Windows) ou Option sur le bouton chronomètre de la propriété. L’expression suivante est alors proposée par défaut :

    transform.position
    transform.position
    transform.position
  4. Saisissez directement le texte suivant sur transform.position :

    thisComp
    thisComp
    thisComp
  5. L’élément thisComp est un attribut global dont la valeur est un objet Comp représentant la composition actuelle. Pour déterminer ce qui peut suivre thisComp dans votre expression, recherchez la valeur renvoyée par thisComp à la section Objets, attributs et méthodes globaux.

    Notez que thisComp renvoie un objet Comp. Reportez-vous ensuite à la section Méthodes et attributs de composition pour connaître les attributs et les méthodes que vous pouvez utiliser avec un objet Composition. layer(index) est une des options possibles. L’index (nombre) entre parenthèses indique le calque que vous souhaitez utiliser. Dans cet exemple, on considère que Solid 1 est le premier calque de la composition. Pour récupérer les valeurs du premier calque de la composition active, saisissez .layer(1) à la fin de l’expression pour obtenir ce qui suit :

    thisComp.layer(1)
    thisComp.layer(1)
    thisComp.layer(1)
  6. Une fois encore, vérifiez dans la référence des éléments d’expression que layer(index) renvoie un objet Calque. Reportez-vous à la section Méthodes et attributs généraux des calques, puis recherchez-y l’élément à utiliser. Par exemple, pour obtenir les valeurs de la propriété Position du calque, saisissez .position à la fin de l’expression pour obtenir ce qui suit :

    thisComp.layer(1).position
    thisComp.layer(1).position
    thisComp.layer(1).position
  7. En consultant la section Méthodes et attributs généraux des calques, vous constatez que l’attribut position renvoie une propriété. Reportez-vous à la section Méthodes et attributs des propriétés, qui explique que vous pouvez ajouter un facteur de temps à l’expression. Pour ajouter un instant spécifique, l’instant actuel plus deux secondes, par exemple, saisissez .valueAtTime(time+2) à la fin de l’expression pour obtenir ce qui suit :

    thisComp.layer(1).position.valueAtTime(time+2)
    thisComp.layer(1).position.valueAtTime(time+2)
    thisComp.layer(1).position.valueAtTime(time+2)
  8. En consultant la section Méthodes et attributs des propriétés, vous constatez que la méthode valueAtTime renvoie une valeur Nombre ou Tableau. Lorsqu’une expression renvoie un nombre, un tableau ou une valeur booléenne (« true » ou « false »), il n’est plus possible d’ajouter d’autres attributs ni méthodes à l’expression. En revanche, vous pouvez ajouter des opérateurs arithmétiques comme +, -, * et /.

En savoir plus sur les ressources dʼexpression

Maintenant que vous avez assimilé certains concepts sous-jacents aux expressions, rejoignez la communauté pour découvrir des exemples concrets et partager votre travail.

Vous trouverez pléthore d’exemples et d’informations sur les expressions, assortis de scripts et d’animations prédéfinies sur le forum AE Enhancers.

Recevez de l’aide plus rapidement et plus facilement

Nouvel utilisateur ?