Les éléments d’expression d’After Effects peuvent être combinés dans les expressions à des éléments standard du langage JavaScript. Vous pouvez utiliser à tout moment le menu Langage d’expression pour ajouter des méthodes et des attributs aux expressions. Vous pouvez de même utiliser l’icône de sélection pour insérer des propriétés.

Si la description d’un argument contient le signe égal (=) et une valeur (comme t=time ou width=.2), l’argument utilisera cette valeur par défaut si vous n’en spécifiez pas une autre.

Certaines descriptions d’argument contiennent un nombre entre crochets qui indique la dimension de la propriété ou de l’ensemble attendu.

Certaines descriptions de valeurs renvoyées contiennent un nombre entre crochets qui indique la dimension de la propriété ou de l’ensemble renvoyé. Faute d’indication spécifique, la dimension de l’ensemble renvoyé dépend de la dimension initiale.

Le site Web de référence JavaScript W3Schools regorge d’informations sur le langage JavaScript standard, dont des pages pour les objets JavaScript Math et String.

Expressions : Moteur JavaScript

After Effects utilise le moteur JavaScript lors de l’évaluation des expressions. Les performances d’évaluation des expressions lors du rendu peuvent être 5 fois plus élevées que celles de l’ancien moteur ExtendScript.

Sous Windows, After Effects utilise le moteur V8 Open Source JavaScript engine. Sous macOS, After Effects utilise l’infrastructure JavaScriptCore. Ces moteurs offrent, tous deux, une version plus moderne de JavaScript que celle disponible dans le moteur ExtendScript, qui prend uniquement en charge la 3e édition de la norme ECMA-262.

Pour choisir si un projet utilise le moteur JavaScript ou l’ancien ExtendScript, cliquez sur l’onglet Expressions dans la boîte de dialogue Paramètres du projet et modifiez ensuite l’option Moteur d’expressions. Les projets enregistrés dans les versions précédentes d’After Effects utilisent, par défaut, l’ancien moteur ExtendScript.

Améliorations fournies par le moteur JavaScript

  • Précision mathématique supérieure pour les opérations en virgule flottante. 
  • Les méthodes Array (Tableau) et String (Chaîne) du moteur JavaScript moderne peuvent être utilisées.
  • D’autres objets JavaScript modernes, tels que les tableaux typés, l’utilisation des mots-clés « let » et « const », ainsi que bien d’autres ajouts effectués dans les versions récentes de la norme ECMA-262 sont disponibles.

Différences entre le moteur JavaScript et ExtendScript

  • La syntaxe des instructions if/else est stricte dans le moteur JavaScript et doit être écrite pour le langage JavaScript normalisé.
  • Lorsque vous accédez aux index de caractères sur un calque de texte sous la forme d’un tableau, utilisez text.sourceText.value[i] au lieu de text.sourceText[i].
  • Des méthodes d’expression séparées par des tirets (snake_case) plus anciennes, telles que this_comp et to_world, qui avaient été abandonnées dans ExtendScript, ne sont plus prises en charge.
  • La syntaxe « this(arg) » simplifiée n’est pas prise en charge.

Objets, attributs et méthodes Global (référence de l’expression)

comp(name)

Type de valeur renvoyé : Comp. (composition).

Type d’argument : nom est une chaîne de caractères.

Récupère une autre composition par son nom.

footage(name)

Type de valeur renvoyé : Footage (métrage).

Type d’argument : nom est une chaîne de caractères.

Récupère un métrage par son nom.

thisComp

Type de valeur renvoyé : Comp. (composition).

Représente la composition contenant l’expression.

thisLayer

Type de valeur renvoyé : Layer (calque), Light (lumière) ou Camera (caméra).

Représente le calque contenant l’expression. thisLayer étant l’objet par défaut, son utilisation est facultative. Par exemple, vous pouvez débuter une expression par thisLayer.width ou width et obtenir le même résultat.

thisProperty

Type de valeur renvoyé : Property (propriété).

Représente la propriété contenant l’expression. Par exemple, si vous rédigez une expression sur la propriété Rotation, vous pouvez la commencer par thisProperty pour faire référence à la propriété Rotation.

time

Type de valeur renvoyé : Number (nombre).

Représente l’instant de la composition (en secondes) auquel l’expression est évaluée.

colorDepth

Type de valeur renvoyé : Number (nombre).

Renvoie la valeur de codage des couleurs du projet. Par exemple, l’élément colorDepth renvoie la valeur 16 si le projet utilise un codage (ou une profondeur) des couleurs de 16 bits par couche.

posterizeTime(framesPerSecond)

Type de valeur renvoyé : Number (nombre).

Type d’argument : framesPerSecond est un nombre.

La valeur framesPerSecond est ensuite utilisée comme cadence d’images pour le reste de l’expression. Cette expression vous permet de définir la cadence d’une propriété afin qu’elle soit inférieure à la cadence de la composition. Par exemple, l’expression suivante remplace la valeur de la propriété par une valeur aléatoire toutes les secondes :

  posterizeTime(1);   random()

value

Type de valeur renvoyé : Number (nombre), Array (ensemble) ou String (chaîne).

Représente la valeur à l’instant courant de la propriété contenant l’expression.

Méthodes de conversion temporelle (référence de l’expression)

timeToFrames(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, isDuration = false)

Type de valeur renvoyé : Number (nombre).

Type d’argument : t et fps sont des nombres (Number) ; isDuration est un booléen (Boolean).

Convertit la valeur de t, qui prend par défaut la valeur de l’instant courant de la composition, en un nombre entier d’images. Le nombre d’images par seconde est défini dans l’argument fps, qui prend par défaut la valeur de la cadence de la composition actuelle (1.0 / thisComp.frameDuration). L’argument isDuration, qui prend par défaut la valeur « false », doit être positionné sur true si la valeur t représente un écart entre deux instants et non un instant absolu. Les instants absolus sont arrondis (au chiffre inférieur) vers l’infini négatif ; les durées sont arrondies par éloignement par rapport à zéro (au chiffre supérieur pour les valeurs positives).

framesToTime(frames, fps = 1.0 / thisComp.frameDuration)

Type de valeur renvoyé : Number (nombre).

Type d’argument : frames et fps sont des nombres (Number).

Il s’agit de l’inverse de timeToFrames. Renvoie l’instant correspondant à l’argument frames, qui est requis. Il ne s’agit pas nécessairement d’un entier. Voir timeToFrames pour obtenir des explications sur l’argument fps.

timeToTimecode(t = time + thisComp.displayStartTime, timecodeBase = 30, isDuration = false)

Type de valeur renvoyé : String (chaîne).

Type d’argument : t et timecodeBase sont des nombres (Number) ; isDuration est un booléen (Boolean).

Convertit la valeur de t en une chaîne (String) représentant le code temporel. Voir timeToFrames pour obtenir des explications sur les arguments t et isDuration. timecodeBase, qui prend par défaut la valeur 30, définit le nombre d’images par seconde.

timeToNTSCTimecode(t = time + thisComp.displayStartTime, ntscDropFrame = false, isDuration = false)

Type de valeur renvoyé : String (chaîne).

Type d’argument : t est un nombre (Number), ntscDropFrame et isDuration sont des booléens (Boolean).

Convertit t en une chaîne (String) représentant le code temporel NTSC. Voir timeToFrames pour obtenir des explications sur les arguments t et isDuration. Si ntscDropFrame est défini sur « false » (valeur par défaut), la chaîne (String) obtenue représente un code temporel NTSC (Image non compensée). Si ntscDropFrame est défini sur « true », la chaîne (String) obtenue représente un code temporel NTSC (Image compensée).

timeToFeetAndFrames(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, framesPerFoot = 16, isDuration = false)

Type de valeur renvoyé : String (chaîne).

Type d’argument : t, fps et framesPerFoot sont des nombres (Number) ; isDuration est un booléen (Boolean).

Convertit la valeur de t en une chaîne (String) représentant du film et des images (en pieds). Voir timeToFrames pour obtenir des explications sur les arguments t, fps et isDuration. L’argument framesPerFoot définit le nombre d’images sur un pied de film. Il prend par défaut la valeur 16, qui représente la cadence la plus fréquente pour les métrages 35 mm.

timeToCurrentFormat(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, isDuration = false)

Type de valeur renvoyé : String (chaîne).

Type d’argument : t et fps sont des nombres (Number) ; isDuration est un booléen (Boolean).

Convertit la valeur de t en une chaîne (String) représentant le temps au format d’affichage actuel sélectionné dans la boîte de dialogue Paramètres du projet. Voir timeToFrames pour obtenir une définition de tous les arguments.

Un argument ntscDropFrame facultatif a été ajouté à la fonction timeToCurrentFormat() dans After Effects CS5.5 et versions ultérieures. Valeur par défaut : ntscDropFrame = thisComp.ntscDropFrame.

Remarque :

Si vous souhaitez un plus grand contrôle sur l’aspect du code temporel dans le métrage, utilisez la méthode timeToCurrentFormat ou d’autres méthodes timeTo pour générer le code temporel au lieu d’utiliser l’effet Code temporel ou Nombres. Créez un calque de texte, ajoutez une expression à la propriété Texte source et entrez timeToCurrentFormat() dans le champ de l’expression. Avec cette méthode, vous pouvez formater et animer le texte de code temporel. Le code temporel utilise par ailleurs le même style d’affichage que celui défini par les paramètres actuels du projet.

Méthodes de calcul vectoriel (référence de l’expression)

Les fonctions de calcul vectoriel sont des méthodes globales qui effectuent des opérations sur des ensembles, en les traitant comme des vecteurs mathématiques. Contrairement aux méthodes JavaScript (comme Math.sin), il est inutile d’utiliser le préfixe Math avec ces méthodes. Sauf indication contraire, les méthodes de calcul vectoriel sont modérées en ce qui concerne les dimensions et renvoient une valeur correspondant à la dimension de l’objet d’ensemble d’entrée le plus important et remplissent les éléments manquants avec des zéros. Par exemple, l’expression add([10, 20]+[1, 2, 3]) renvoie[11, 22, 3].

Sur le site Web de JJ Gifford, vous apprendrez comment associer la géométrie et la trigonométrie simples aux expressions grâce à des explications illustrées par des exemples.

add(vec1, vec2)

Type de valeur renvoyé : Array (ensemble).

Type d’argument : vec1 et vec2 sont des ensembles (Array).

Ajoute deux vecteurs.

sub(vec1, vec2)

Type de valeur renvoyé : Array (ensemble).

Type d’argument : vec1 et vec2 sont des ensembles (Array).

Soustrait deux vecteurs.

mul(vec, amount)

Type de valeur renvoyé : Array (ensemble).

Type d’argument : vec est un ensemble (Array), amount est un nombre (Number).

Multiplie chaque élément du vecteur par la valeur amount.

div(vec, amount)

Type de valeur renvoyé : Array (ensemble).

Type d’argument : vec est un ensemble (Array), amount est un nombre (Number).

Divise chaque élément du vecteur par la valeur amount.

clamp(value, limit1, limit2)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Type d’argument : value, limit1 et limit2 sont des nombres (Number) ou des ensembles (Array).

La valeur de chaque composant de value doit être comprise entre les valeurs correspondantes de limit1 et limit2.

dot(vec1, vec2)

Type de valeur renvoyé : Number (nombre).

Type d’argument : vec1 et vec2 sont des ensembles (Array).

Renvoie le produit (interne) des arguments vectoriels.

cross(vec1, vec2)

Type de valeur renvoyé : Array (ensemble) [2 ou 3].

Type d’argument : vec1 et vec2 sont des ensembles (Array) [2 ou 3].

Renvoie le produit croisé de vec1 et vec2. Pour plus de détails, reportez-vous à un manuel de mathématiques ou à un manuel JavaScript.

normalize(vec)

Type de valeur renvoyé : Array (ensemble).

Type d’argument : vec est un ensemble (Array).

Normalise le vecteur afin que sa longueur soit de 1,0. L’utilisation de la méthode normalize constitue un raccourci pour exécuter l’opération div(vec, length(vec)).

length(vec)

Type de valeur renvoyé : Number (nombre).

Type d’argument : vec est un ensemble (Array).

Renvoie la longueur du vecteur vec.

length(point1, point2)

Type de valeur renvoyé : Number (nombre).

Type d’argument : point1 et point2 sont des ensembles (Array).

Renvoie la distance entre deux points. L’argument point2 est facultatif. Par exemple, length(point1, point2) est identique à length(sub(point1, point2)).

Vous pouvez, par exemple, ajouter cette expression à la propriété Distance de mise au point d’une caméra pour verrouiller le plan focal sur le point ciblé de la caméra, de telle sorte que la mise au point soit effectuée sur celui-ci :

  length(position, pointOfInterest)

lookAt(fromPoint, atPoint)

Type de valeur renvoyé : Array (ensemble) [3].

Type d’argument : fromPoint et atPoint sont des ensembles (Array) [3].

L’argument fromPoint représente la position dans l’espace univers du calque à orienter. L’argument atPoint représente le point de l’espace univers vers lequel orienter le calque. La valeur renvoyée peut être utilisée comme expression pour la propriété Orientation afin de pointer l’axe z du calque sur atPoint. Cette méthode est particulièrement utile pour les caméras et les lumières. En cas d’utilisation de cette expression avec une caméra, veillez à désactiver l’orientation automatique. Par exemple, cette expression sur la propriété Orientation d’un projecteur positionne le point lumineux sur le point d’ancrage du calque numéro 1 de la même composition : lookAt(position, thisComp.layer(1).position)

Méthodes des nombres aléatoires (référence de l’expression)

Remarque :

la méthode de tremblement, utilisée pour faire varier une valeur de propriété de façon aléatoire, se trouve dans la catégorie Méthodes et attributs Property Pour plus d'informations, reportez-vous à Attributs et méthodes Property (référence d'expression).

seedRandom(offset, timeless=false)

Type de valeur renvoyé : aucun.

Type d’argument : offset est un nombre (Number), timeless est un booléen (Boolean).

Les méthodes random et gaussRandom utilisent une valeur de générateur qui contrôle la séquence de nombres. Par défaut, la valeur est calculée en tant que fonction d’un identifiant de calque unique, de la propriété à l’intérieur du calque, de l’instant courant et d’une valeur de décalage de 0. Appelez seedRandom pour définir le décalage sur une valeur différente de 0 et créer une séquence aléatoire différente.

Utilisez true pour l’argument timeless afin de ne pas utiliser l’instant courant comme générateur aléatoire. L’utilisation de true pour l’argument timeless vous permet de générer un nombre aléatoire ne variant pas en fonction du moment d’évaluation.

La valeur offset, contrairement à la valeur timeless, permet également de contrôler la valeur initiale de la fonction wiggle (tremblement).

Par exemple, cette expression attribue à la propriété Opacité une valeur aléatoire sans variation temporelle :

  seedRandom(123456, true);   random()*100

La multiplication par 100 dans cet exemple convertit la valeur entre 0 et 1 renvoyée par la méthode random en un nombre compris entre 0 et 100. Cette plage est plus généralement utilisée pour la propriété Opacité dont la valeur est comprise entre 0 % et 100 %.

random()

Type de valeur renvoyé : Number (nombre).

Renvoie un nombre aléatoire dans la plage 0 à 1.

Dans After Effects CC et CS6, le comportement de l’expression random() a été modifié afin d’accentuer le caractère aléatoire lorsque les ID de calque sont proches les uns des autres. L’expression wiggle() n’est pas concernée.

random(maxValOrArray)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Type d’argument : maxValOrArray est un nombre (Number) ou un ensemble (Array).

Si maxValOrArray est un nombre, cette méthode renvoie un nombre compris entre 0 et maxValOrArray. Si maxValOrArray est un ensemble (Array), cette méthode renvoie un ensemble de même dimension que maxValOrArray, dont chaque composant se situe entre 0 et le composant correspondant de maxValOrArray.

random(minValOrArray, maxValOrArray)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Type d’argument : minValOrArray et maxValOrArray sont des nombres (Number) ou des ensembles (Array).

Si minValOrArray et maxValOrArray sont des nombres, cette méthode renvoie un nombre compris entre minValOrArray et maxValOrArray. Si les arguments sont des ensembles, cette méthode renvoie un ensemble ayant la même dimension que l’argument doté de la plus grande dimension, chaque composant dans la plage du composant correspondant de minValOrArray au composant correspondant de maxValOrArray. Par exemple, l’expression random([100, 200], [300, 400]) renvoie un ensemble dont la première valeur se situe dans la plage 100 à 300 et dont la deuxième valeur est dans la page 200 à 400. Si les dimensions des deux ensembles d’entrée ne correspondent pas, les valeurs de dimension supérieure de l’ensemble le plus court sont complétées par des zéros.

gaussRandom()

Type de valeur renvoyé : Number (nombre).

Renvoie un nombre aléatoire. Les résultats ont une distribution gaussienne. Environ 90 % des résultats se situent entre 0 et 1, et les 10 % restant se situent hors de cette plage.

gaussRandom(maxValOrArray)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Type d’argument : maxValOrArray est un nombre (Number) ou un ensemble (Array).

Lorsque maxValOrArray est un nombre (Number), cette méthode renvoie un nombre aléatoire. Environ 90 % des résultats se situent entre 0 et maxValOrArray, et les 10 % restant se situent hors de cette plage. Lorsque maxValOrArray est un ensemble (Array), cette méthode renvoie un ensemble de valeurs aléatoires, de même dimension que maxValOrArray. 90 % des valeurs se situent entre 0 et maxValOrArray, et les 10 % restant se situent hors de cette plage. Les résultats ont une distribution gaussienne.

gaussRandom(minValOrArray, maxValOrArray)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Type d’argument : minValOrArray et maxValOrArray sont des nombres (Number) ou des ensembles (Array).

Si minValOrArray et maxValOrArray sont des nombres (Number), cette méthode renvoie un nombre aléatoire. Environ 90 % des résultats se situent entre minValOrArray et maxValOrArray, et les 10 % restant se situent hors de cette plage. Si les arguments sont des ensembles, cette méthode renvoie un ensemble de nombres aléatoires de même dimension que l’argument de dimension maximale. Pour chaque composant, environ 90% des résultats se situent dans la plage entre le composant correspondant de minValOrArray et le composant correspondant de maxValOrArray, et les 10 % restant se situent hors de cette plage. Les résultats ont une distribution gaussienne.

noise(valOrArray)

Type de valeur renvoyé : Number (nombre).

Type d’argument : valOrArray est un nombre (Number) ou un ensemble (Array) [2 ou 3].

Renvoie un nombre dans la plage -1 à 1. Le bruit n’est pas véritablement aléatoire : il s’appuie sur le bruit Perlin, ce qui signifie que les valeurs renvoyées par deux valeurs d’entrée proches sont généralement proches l’une de l’autre. Ce type de bruit est utile lorsque vous souhaitez obtenir une séquence de nombres apparemment aléatoires à faible variation comme c’est généralement le cas pour l’animation d’un mouvement naturel apparemment aléatoire. Par exemple, rotation + 360*noise(time)

Méthodes d’interpolation (référence de l’expression)

Pour toutes les méthodes d’interpolation, l’argument t est souvent le temps ou la valeur, mais il peut aussi représenter d’autres valeurs. Si t représente le temps, l’interpolation entre les valeurs se produit sur une durée. Si t représente la valeur, l’expression fait correspondre une plage de valeurs à une nouvelle plage de valeurs.

Pour plus d’explications et d’exemples sur les méthodes d’interpolation, visitez le site Web de JJ Gifford.

Chris et Trish Meyer proposent des informations et des exemples complémentaires sur ces méthodes dans un article sur le site Web ProVideo Coalition.

Ian Haigh propose, sur le site Web After Effects Scripts, un script permettant d’appliquer aisément des expressions de méthode d’interpolation évoluées, telles que les rebonds, aux propriétés.

Andrew Devis propose sur le site Web de Creative COW deux didacticiels vidéo qui détaillent l’utilisation de la méthode d’expression linéaire en conjonction avec l’option Convertir les données audio en images clés.

linear(t, tMin, tMax, value1, value2)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Type d’argument : t, tMin et tMax sont des nombres (Number) ; value1 et value2 sont des nombres (Number) ou des ensembles (Array).

Renvoie value1 si t <= tMin. Renvoie value2 si t >= tMax. Renvoie une interpolation linéaire entre value1 et value2 si tMin < t < tMax.

Par exemple, si cette expression est rédigée sur la propriété Opacité, on obtient un dégradé linéaire des valeurs d’opacité de 20 % à 80 % entre 0 seconde et 6 secondes :

  linear(time, 0, 6, 20, 80)

Cette méthode, comme toutes les méthodes d’interpolation, peut également être utilisée pour effectuer une conversion d’une plage de données à une autre. Par exemple, cette expression sur la propriété Opacité convertit les valeurs d’opacité de la plage 0 %-100 % à la plage 20 %-80 % :

  linear(value, 0, 100, 20, 80)

linear(t, value1, value2)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Type d’argument : t est un nombre (Number) ; value1 et value2 sont des nombres (Number) ou des ensembles (Array).

Renvoie une valeur qui représente l’interpolation linéaire entre value1 et value2 si t est compris entre 0 et 1. Renvoie value1 si t <= 0. Renvoie value2 si t >= 1.

ease(t, value1, value2)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Type d’argument : t est un nombre (Number) ; value1 et value2 sont des nombres (Number) ou des ensembles (Array).

Identique à linear avec les mêmes arguments, si ce n’est que l’interpolation définit une vitesse d’ajustement intérieur et extérieur de 0 aux points de départ et d’arrivée. Cette méthode permet de réaliser des animations lissées.

ease(t, tMin, tMax, value1, value2)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Type d’argument : t, tMin et tMax sont des nombres (Number) ; value1 et value2 sont des nombres (Number) ou des ensembles (Array).

Identique à linear avec les mêmes arguments, si ce n’est que l’interpolation définit une vitesse d’ajustement intérieur et extérieur de 0 aux points de départ et d’arrivée. Cette méthode permet de réaliser des animations lissées.

easeIn(t, value1, value2)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Type d’argument : t est un nombre (Number) ; value1 et value2 sont des nombres (Number) ou des ensembles (Array).

Identique à ease, mais avec une tangente de 0 sur le côté value1 seulement et une interpolation linéaire sur le côté value2.

easeIn(t, tMin, tMax, value1, value2)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Type d’argument : t, tMin et tMax sont des nombres (Number) ; value1 et value2 sont des nombres (Number) ou des ensembles (Array).

Identique à ease, mais avec une tangente de 0 sur le côté tMin seulement et une interpolation linéaire sur le côté tMax.

easeOut(t, value1, value2)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Type d’argument : t est un nombre (Number) ; value1 et value2 sont des nombres (Number) ou des ensembles (Array).

Identique à ease, mais avec une tangente de 0 sur le côté value2 seulement et une interpolation linéaire sur le côté value1.

easeOut(t, tMin, tMax, value1, value2)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Type d’argument : t, tMin et tMax sont des nombres (Number) ; value1 et value2 sont des nombres (Number) ou des ensembles (Array).

Identique à ease, mais avec une tangente de 0 sur le côté tMax seulement et une interpolation linéaire sur le côté tMin.

Méthodes de conversion des couleurs (référence de l’expression)

Sur son site Web graymachine, Harry Frank propose un didacticiel vidéo décrivant l’utilisation de ces méthodes de conversion chromatique pour changer la couleur des ondes produites par l’effet Ondes radio.

rgbToHsl(rgbaArray)

Type de valeur renvoyé : Array (ensemble) [4].

Type d’argument : rgbaArray est un ensemble (Array) [4].

Convertit une couleur RVBA en couleur TSLA. L’entrée est un ensemble de valeurs normalisées comprises entre 0.0 et 1.0 pour les couches rouge, verte, bleue et alpha. La valeur résultante est un ensemble de valeurs (également comprises entre 0.0 et 1.0) pour la teinte, la saturation, la luminosité et la couche alpha. Exemple :

  rgbToHsl.effect("Change Color")("Color To Change")

hslToRgb(hslaArray)

Type de valeur renvoyé : Array (ensemble) [4].

Type d’argument : hslaArray est un ensemble (Array) [4].

Convertit une couleur TSLA en couleur RVBA. Cette conversion est l’opposé de la conversion effectuée par la méthode rgbToHsl.

Autres méthodes mathématiques (référence de l’expression)

degreesToRadians(degrees)

Type de valeur renvoyé : Number (nombre).

Type d’argument : degrees est un nombre (Number).

Convertit les degrés en radians.

radiansToDegrees(radians)

Type de valeur renvoyé : Number (nombre).

Type d’argument : radians est un nombre (Number).

Convertit les radians en degrés.

Méthodes et attributs Comp (référence de l’expression)

layer(index)

Type de valeur renvoyé : Layer (calque), Light (lumière) ou Camera (caméra).

Type d’argument : index est un nombre (Number).

Récupère un calque en fonction de son numéro (dans l’ordre du panneau Montage). Par exemple, thisComp.layer(3).

layer(name)

Type de valeur renvoyé : Layer (calque), Light (lumière) ou Camera (caméra).

Type d’argument : nom est une chaîne de caractères.

Récupère un calque en fonction de son nom. Les correspondances sont évaluées par nom de calque ou par nom source en l’absence de nom de calque. S’il existe des doublons, le premier calque (situé en haut) du panneau Montage sera retenu. Exemple :

  thisComp.layer("Solid 1")

layer(otherLayer, relIndex)

Type de valeur renvoyé : Layer (calque), Light (lumière) ou Camera (caméra).

Type d’argument : otherLayer est un objet Layer et relIndex est un nombre (Number).

Récupère le calque situé relIndex niveaux de calques au-dessus ou en dessous de otherLayer. Par exemple, thisComp.layer(thisLayer, 1).active renvoie la valeur « true » si le calque suivant du panneau Montage est actif.

marker

Type de valeur renvoyé : MarkerProperty.

Remarque :

le numéro de repère ne permet pas d’accéder à un repère de composition. Si vous avez créé un projet dans une version antérieure d’After Effects qui utilise les numéros de repères de composition dans les expressions, vous devez remplacer ces noms par marker.key(name). Le nom par défaut d’un repère de composition étant un numéro, la conversion de la référence pour utiliser le nom revient généralement à placer le numéro entre guillemets.

marker.key(index)

Type de valeur renvoyé : MarkerKey (clé de repère).

Type d’argument : index est un nombre (Number).

Renvoie l’objet MarkerKey du repère avec l’index spécifié. L’index fait référence à l’ordre du repère dans la composition (et non pas à son nom). Par exemple, cette expression renvoie l’instant du premier repère de composition :

  thisComp.marker.key(1).time

marker.key(name)

Type de valeur renvoyé : MarkerKey (clé de repère).

Type d’argument : nom est une chaîne de caractères.

Renvoie l’objet MarkerKey du repère avec le nom spécifié. La valeur name est le nom du repère, tel qu’il a été entré dans le champ Commentaires de la boîte de dialogue Repère, par exemple, marker.key("1"). Le nom par défaut d’un repère de composition est un nombre. Si plusieurs repères d’une composition portent le même nom, cette méthode renvoie le repère qui apparaît en premier dans le temps de la composition. La valeur d’une clé de repère est une chaîne de caractères (String), et non un nombre (Number). Par exemple, cette expression renvoie l’instant du repère de composition portant le nom « 0 » :

  thisComp.marker.key("0").time

marker.nearestKey(t)

Type de valeur renvoyé : MarkerKey (clé de repère).

Type d’argument : t est un nombre (Number).

Renvoie le repère le plus proche de t dans le temps. Par exemple, cette expression renvoie l’instant du repère de composition le plus proche de l’instant 1 seconde :

  thisComp.marker.nearestKey(1).time

Cette expression renvoie l’instant du repère de composition le plus proche de l’instant présent :

  thisComp.marker.nearestKey(time).time

marker.numKeys

Type de valeur renvoyé : Number (nombre).

Renvoie le nombre total de repères de la composition.

numLayers

Type de valeur renvoyé : Number (nombre).

Renvoie le nombre de calques de la composition.

activeCamera

Type de valeur renvoyé : Camera (caméra).

Renvoie l’objet Camera à travers lequel s’effectue le rendu de la composition pour l’image actuelle. Cette caméra n’est pas nécessairement la caméra par laquelle vous regardez dans le panneau Composition.

width

Type de valeur renvoyé : Number (nombre).

Renvoie la largeur en pixels de la composition.

Appliquez l’expression suivante à la propriété Position d’un calque pour centrer celui-ci dans la composition :

  [thisComp.width/2, thisComp.height/2]

height

Type de valeur renvoyé : Number (nombre).

Renvoie la hauteur en pixels de la composition.

duration

Type de valeur renvoyé : Number (nombre).

Renvoie la durée en secondes de la composition.

ntscDropFrame

Type de valeur renvoyé : Boolean (booléen).

Renvoie la valeur « true » si le code temporel est au format compensé (After Effects CS5.5 et versions ultérieures.)

displayStartTime

Type de valeur renvoyé : Number (nombre).

Renvoie l’instant de départ de la composition, en secondes.

frameDuration

Type de valeur renvoyé : Number (nombre).

Renvoie la durée en secondes de l’image.

shutterAngle

Type de valeur renvoyé : Number (nombre).

Renvoie la valeur en degrés de l’angle d’obturateur de la composition.

shutterPhase

Type de valeur renvoyé : Number (nombre).

Renvoie la valeur en degrés de la phase d’obturateur de la composition.

bgColor

Type de valeur renvoyé : Array (ensemble) [4].

Renvoie la couleur de fond de la composition.

pixelAspect

Type de valeur renvoyé : Number (nombre).

Renvoie le format des pixels de la composition.

name

Type de valeur renvoyé : String (chaîne).

Renvoie le nom de la composition.

Attribut de zone protégée pour les repères de composition

L’option Zone protégée pour les repères de composition peut être lue avec l’attribut du repère de composition protectedRegion.

Attributs et méthodes de métrage (référence de l’expression)

Pour utiliser un métrage du panneau Projet en tant qu’objet d’une expression, utilisez la méthode footage globale (comme dans footage("nom_fichier")). Vous pouvez également accéder à un objet de métrage en utilisant l’attribut source d’un calque dont la source est un métrage.

width

Type de valeur renvoyé : Number (nombre).

Renvoie la largeur du métrage en pixels.

height

Type de valeur renvoyé : Number (nombre).

Renvoie la hauteur du métrage en pixels.

duration

Type de valeur renvoyé : Number (nombre).

Renvoie la durée du métrage en secondes.

frameDuration

Type de valeur renvoyé : Number (nombre).

Renvoie la durée d’une image du métrage en secondes.

ntscDropFrame

Type de valeur renvoyé : Boolean (booléen).

Renvoie la valeur « true » si le code temporel est au format compensé (After Effects CS5.5 et versions ultérieures).

pixelAspect

Type de valeur renvoyé : Number (nombre).

Renvoie le format des pixels du métrage.

name

Type de valeur renvoyé : String (chaîne).

Renvoie le nom du métrage tel qu’il apparaît dans le panneau Projet.

Méthodes et attributs des sous-objets du calque (référence de l’expression)

Remarque :

Dans After Effects CC et CS6, le menu Langage d’expression, « Sous-objets de calque », « Calque - Général », « Propriétés du calque », « Calque 3D » et « Transformations de l’espace de calque » ont été réorganisés dans un sous-menu « Calque ».

source

Type de valeur renvoyé : Comp (composition) ou Footage (métrage).

Renvoie l’objet Comp ou Footage source du calque. Le temps par défaut est ajusté sur le temps source. Par exemple, source.layer(1).position.

sourceTime(t = time)

Type de valeur renvoyé : Number (nombre).

Renvoie la source des calques correspondant au temps t (After Effects CS5.5 et versions ultérieures.)

sourceRectAtTime(t = time, includeExtents = false)

Type de retour : Objet Javascript avec quatre attributs : [top, left, width, height]. Les étendues s'appliquent uniquement aux calques de forme, augmentant la taille des contour du calque selon les besoins, et aux calques de texte de paragraphe (After Effects 15.1 et versions ultérieures), où ils renvoient les contours de la boîte de dialogue de paragraphe. Exemple : myTextLayer.sourceRectAtTime().width.

effect(name)

Type de valeur renvoyé : Effect (effet).

Type d’argument : nom est une chaîne de caractères.

L’effet est récupéré selon son nom dans le panneau Effets. Le nom peut être le nom par défaut ou celui choisi par l’utilisateur. Si plusieurs effets portent le même nom, l’effet le plus proche du haut du panneau Options d’effet est utilisé. Exemple :

  effect("Fast Blur")("Blurriness")

effect(index)

Type de valeur renvoyé : Effect (effet).

Type d’argument : index est un nombre (Number).

L’effet est récupéré selon son indexation dans le panneau Effets (de 1 en partant du haut).

mask(name)

Type de valeur renvoyé : Mask (masque).

Type d’argument : nom est une chaîne de caractères.

Le nom peut être le nom par défaut ou celui choisi par l’utilisateur. Si plusieurs masques portent le même nom, le premier masque (le plus haut) est employé. Exemple :

  mask("Mask 1")

mask(index)

Type de valeur renvoyé : Mask (masque).

Type d’argument : index est un nombre (Number).

Le masque est retrouvé en fonction de son index dans le panneau Montage (1 en haut).

Méthodes et attributs généraux du calque (référence de l’expression)

width

Type de valeur renvoyé : Number (nombre).

Renvoie la largeur en pixels du calque. Identique à source.width.

height

Type de valeur renvoyé : Number (nombre).

Renvoie la hauteur en pixels du calque. Identique à source.height.

index

Type de valeur renvoyé : Number (nombre).

Renvoie le numéro du calque (index) dans la composition.

parent

Type de valeur renvoyé : Layer (calque), Light (lumière) ou Camera (caméra).

Renvoie l’objet Layer parent du calque (s’il en existe un). Par exemple, position[0] + parent.width.

hasParent

Type de valeur renvoyé : Boolean (booléen).

Renvoie la valeur « true » si le calque a un parent et « false » dans le cas contraire.

L’attribut hasParent permet de déterminer si le calque possède un parent. Vous pouvez utiliser cet attribut même si le calque n’a pas de calque parent pour le moment. L’expression ci-dessous, par exemple, indique que le calque sur lequel vous l’appliquez tremble en fonction de la position du calque parent. Si le calque n’a pas de parent, il tremble en fonction de sa propre position. Si le calque obtient un parent ultérieurement, son comportement change en conséquence :

  idx = index;   if (hasParent) {     idx = parent.index;   }   thisComp.layer(idx).position.wiggle(5,20)

inPoint

Type de valeur renvoyé : Number (nombre).

Renvoie l’instant en secondes du point d’entrée du calque.

Remarque :

en général, la valeur de outPoint est supérieure à celle de inPoint. Cependant, si un calque est inversé dans le temps, la valeur de inPoint est supérieure à celle de outPoint. De même, la valeur de startTime peut être supérieure à celle de inPoint.

outPoint

Type de valeur renvoyé : Number (nombre).

Renvoie l’instant en secondes du point de sortie du calque.

startTime

Type de valeur renvoyé : Number (nombre).

Renvoie l’instant de départ du calque en secondes.

hasVideo

Type de valeur renvoyé : Boolean (booléen).

Renvoie la valeur « true » si le calque est vidéo et « false » dans le cas contraire.

hasAudio

Type de valeur renvoyé : Boolean (booléen).

Renvoie la valeur « true » si le calque est audio et « false » dans le cas contraire.

active

Type de valeur renvoyé : Boolean (booléen).

Renvoie true (vrai) si le bouton d’option Vidéo est activé pour le calque et que l’instant courant se trouve dans la plage comprise entre le point d’entrée du calque et le point de sortie du calque ; false (faux) dans les autres cas.

enabled

Type de valeur renvoyé : Boolean (booléen).

Renvoie true (vrai) si le bouton d’option Vidéo est activé pour le calque ; false (faux) dans les autres cas.

audioActive

Type de valeur renvoyé : Boolean (booléen).

Renvoie true (vrai) si le bouton d’option Audio est activé pour le calque et que l’instant courant se trouve dans la plage comprise entre le point d’entrée du calque et le point de sortie du calque ; false (faux) dans les autres cas.

sampleImage(point, radius = [.5, .5], postEffect=true, t=time)

Type de valeur renvoyé : Array (ensemble) [4].

Type d’argument : point est un ensemble (Array) [2], radius est un ensemble (Array) [2], postEffect est un booléen (Boolean) et t est un nombre (Number).

Echantillonne les valeurs chromatiques et de couche alpha d’un calque et renvoie la moyenne pondérée de la valeur alpha des pixels à une distance spécifiée du point, en tant qu’ensemble : [rouge, vert, bleu, alpha]. Si postEffect est défini sur « true », les valeurs échantillonnées sont destinées au calque après le rendu des masques et des effets sur ce calque ; si postEffect est défini sur « false », les valeurs échantillonnées sont destinées au calque avant le rendu des masques et des effets. La valeur d’entrée point se situe dans l’espace calque ; le point [0,0] est le centre du pixel supérieur gauche du calque. La valeur d’entrée radius définit la distance (verticale et horizontale) entre le centre de l’échantillon et les bords du rectangle échantillonné. La valeur par défaut échantillonne un pixel.

Remarque :

le paramètre postEffect fait référence aux effets appliqués directement au calque, et non aux effets appliqués indirectement comme avec un calque de réglage.

Remarque :

L’utilisation de sampleImage dans une expression ne désactive plus le multitraitement.

Dans cet exemple, un rectangle de 4 pixels de large sur 3 pixels de haut, centré sur un point situé 100 pixels plus bas, à droite du coin supérieur gauche du calque, est échantillonné :

  thisComp.layer(1).sampleImage([100, 100], [2, 1.5])

Dan Ebberts propose un exemple d’utilisation de la méthode sampleImage sur son site Web Motionscript.

Todd Kopriva, pour sa part, explique comment utiliser la méthode sampleImage et l’effet Paramètre point d’effet pour un point donné au cours d’une correction colorimétrique. Pour en savoir plus, rendez-vous sans attendre sur son blog After Effects Region of Interest.

Attributs et méthodes des propriétés du calque (référence de l’expression)

Lorsque vous ajoutez des masques, des effets, de la peinture ou du texte à un calque, After Effects ajoute de nouvelles propriétés dans le panneau Montage. Ces propriétés sont trop nombreuses pour être énumérées ici ; utilisez l’icône de sélection pour en apprendre la syntaxe et y faire référence dans vos expressions.

anchorPoint

Type de valeur renvoyé : Property (propriété) [2 ou 3].

Renvoie la valeur du point d’ancrage du calque dans le système de coordonnées du calque (espace calque).

position

Type de valeur renvoyé : Property (propriété) [2 ou 3].

Renvoie la valeur de position du calque, en espace univers si le calque n’a pas de parent. Si le calque a un parent, il renvoie la valeur de position du calque dans le système de coordonnées du calque parent (dans l’espace calque du calque parent).

scale

Type de valeur renvoyé : Property (propriété) [2 ou 3].

Renvoie la valeur de l’échelle du calque, en pourcentage.

rotation

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur de rotation du calque, en degrés. Pour un calque 3D, la valeur en degrés de rotation de l’axe Z.

opacity

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur d’opacité du calque, en pourcentage.

audioLevels

Type de valeur renvoyé : Property [2].

Renvoie la valeur de la propriété Niveaux audio du calque, en décibels. Il s’agit d’une valeur 2D ; la première indique le niveau du canal de gauche et la seconde de celui de droite. La valeur n’est pas l’amplitude de la piste audio du matériel source. Il s’agit plutôt de la propriété Niveaux audio, qui peut être affectée par des images clés.

timeRemap

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur en secondes de la propriété Remappage temporel (si elle est activée).

marker.key(index)

Type de valeur renvoyé : MarkerKey (clé de repère).

Type d’argument : index est un nombre (Number).

Renvoie l’objet MarkerKey du repère de calque avec l’index spécifié.

marker.key(name)

Type de valeur renvoyé : MarkerKey (clé de repère).

Type d’argument : nom est une chaîne de caractères.

Renvoie l’objet MarkerKey du repère de calque avec le nom spécifié. name est le nom du repère, tel qu’il a été entré dans le champ Commentaires de la boîte de dialogue Repère, par exemple, marker.key("ch1"). Si plusieurs repères du calque portent le même nom, cette méthode renvoie le repère qui apparaît en premier dans le temps (du calque). La valeur d’une clé de repère est une chaîne de caractères (String), et non un nombre (Number).

Cette expression sur une propriété effectue un dégradé de la valeur de la propriété de 0 à 100 entre deux repères identifiés par un nom :

  m1 = marker.key("Start").time;   m2 = marker.key("End").time;   linear(time, m1, m2, 0, 100);

marker.nearestKey(t)

Type de valeur renvoyé : MarkerKey (clé de repère).

Type d’argument : t est un nombre (Number).

Renvoie le repère de calque le plus proche de t dans le temps. Par exemple, cette expression renvoie l’instant du repère du calque le plus proche de l’instant 1 seconde :

  marker.nearestKey(1).time

Cette expression renvoie l’instant du repère sur le calque le plus proche de l’instant présent :

  marker.nearestKey(time).time

marker.numKeys

Type de valeur renvoyé : Number (nombre).

Renvoie le nombre total de repères du calque.

name

Type de valeur renvoyé : String (chaîne).

Renvoie le nom du calque.

Méthodes et attributs 3D du calque (référence de l’expression)

orientation

Type de valeur renvoyé : Property [3].

Renvoie la valeur en degrés de l’orientation 3D d’un calque 3D.

rotationX

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur de rotation de l’axe x d’un calque 3D, en degrés.

rotationY

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur de rotation de l’axe y d’un calque 3D, en degrés.

rotationZ

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur de rotation de l’axe z d’un calque 3D, en degrés.

lightTransmission

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur de la propriété Transmission de la lumière d’un calque 3D.

castsShadows

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur 1,0 si le calque projette des ombres.

acceptsShadows

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur 1,0 si le calque accepte les ombres.

acceptsLights

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur 1,0 si le calque accepte les lumières.

ambient

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur en pourcentage de la composante ambiante.

diffuse

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur en pourcentage de la composante diffuse.

specular

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur en pourcentage de la composante spéculaire.

shininess

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur en pourcentage de la composante brillance.

metal

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur en pourcentage de la composante métal.

Méthodes de conversion de l’espace calque (référence de l’expression)

Les méthodes de conversion de l’espace calque permettent de convertir les valeurs d’un espace à un autre, par exemple de l’espace du calque à l’espace univers. Les méthodes « from » convertissent les valeurs de l’espace nommé (composition ou univers) dans l’espace calque. Les méthodes « to » convertissent les valeurs de l’espace calque dans l’espace nommé (composition ou univers). Chacune de ces méthodes utilise un argument optionnel pour déterminer l’instant auquel la transformation est calculée. Cependant, il est pratiquement toujours possible d’utiliser l’instant courant (par défaut).

Utilisez les méthodes de conversion vectorielles (« vec ») pour convertir un vecteur directionnel (différence entre deux valeurs de position, par exemple). Utilisez les méthodes non vectorielles pour convertir un point (une position, par exemple). Les espaces composition et univers sont identiques pour les calques 2D. Pour les calques 3D, l’espace composition est relatif à la caméra active, alors que l’espace univers en est indépendant.

toComp(point, t=time)

Type de valeur renvoyé : Array (ensemble) [2 ou 3].

Type d’argument : point est un ensemble (Array) [2 ou 3] et t est un nombre (Number).

Convertit un point de l’espace calque dans l’espace composition.

fromComp(point, t=time)

Type de valeur renvoyé : Array (ensemble) [2 ou 3].

Type d’argument : point est un ensemble (Array) [2 ou 3] et t est un nombre (Number).

Convertit un point de l’espace composition dans l’espace calque. Le point résultant dans un calque 3D peut avoir une valeur différente de zéro, même s’il se situe dans l’espace calque. Exemple : fromComp(thisComp.layer(2).position)

toWorld(point, t=time)

Type de valeur renvoyé : Array (ensemble) [2 ou 3].

Type d’argument : point est un ensemble (Array) [2 ou 3] et t est un nombre (Number).

Convertit un point de l’espace calque dans l’espace univers (indépendant de la vue). Exemple :

  toWorld.effect("Bulge")("Bulge Center")

Dan Ebberts propose, sur son site Web MotionScript, une expression qui utilise la méthode toWorld pour orienter automatiquement un calque le long d’un seul axe. Cela se révèle particulièrement utile, par exemple, pour retourner des caractères latéralement afin de suivre le mouvement de la caméra, tout en les laissant verticaux.

Sur son site Web AE Portal, Rich Young propose un ensemble d’expressions qui utilisent la méthode toWorld pour lier une caméra et la lumière à un calque avec l’effet CC Sphere.

fromWorld(point, t=time)

Type de valeur renvoyé : Array (ensemble) [2 ou 3].

Type d’argument : point est un ensemble (Array) [2 ou 3] et t est un nombre (Number).

Convertit un point de l’espace univers dans l’espace calque. Par exemple : fromWorld(thisComp.layer(2).position).

Pour obtenir un exemple d’utilisation possible de cette méthode, voir Exemple d’expressions : création d’un renflement entre deux calques.

toCompVec(vec, t=time)

Type de valeur renvoyé : Array (ensemble) [2 ou 3].

Type d’argument : vec est un ensemble (Array) [2 ou 3] et t est un nombre (Number).

Convertit un vecteur de l’espace calque dans l’espace composition. Par exemple : toCompVec([1,0])

fromCompVec(vec, t=time)

Type de valeur renvoyé : Array (ensemble) [2 ou 3].

Type d’argument : vec est un ensemble (Array) [2 ou 3] et t est un nombre (Number).

Convertit un vecteur de l’espace composition dans l’espace calque. Par exemple (calque 2D) :

  dir=sub(position, thisComp.layer(2).position);   fromCompVec(dir)

toWorldVec(vec, t=time)

Type de valeur renvoyé : Array (ensemble) [2 ou 3].

Type d’argument : vec est un ensemble (Array) [2 ou 3] et t est un nombre (Number).

Convertit un vecteur de l’espace calque dans l’espace univers. Exemple :   p1 = effect("Eye Bulge 1")("Bulge Center");    p2 = effect("Eye Bulge 2")("Bulge Center");     toWorld(sub(p1, p2))

fromWorldVec(vec, t=time)

Type de valeur renvoyé : Array (ensemble) [2 ou 3].

Type d’argument : vec est un ensemble (Array) [2 ou 3] et t est un nombre (Number).

Convertit un vecteur de l’espace univers dans l’espace calque. Par exemple : fromWorld(thisComp.layer(2).position).

fromCompToSurface(point, t=time)

Type de valeur renvoyé : Array (ensemble) [2].

Type d’argument : point est un ensemble (Array) [2 ou 3] et t est un nombre (Number).

Projette un point de l’espace composition à la surface du calque (valeur z à zéro) à l’endroit où il apparaît vu par la caméra active. Cette méthode est utile pour positionner des points de contrôle des effets. A n’utiliser qu’avec des calques 3D.

Méthodes et attributs Camera (référence de l’expression)

Les objets Camera ont les mêmes attributs et suivent les mêmes méthodes que les objets Layer à l’exception de source, effect, mask, width, height, anchorPoint, scale, opacity, audioLevels, timeRemap et de toutes les propriétés de surface.

pointOfInterest

Type de valeur renvoyé : Property [3].

Renvoie les valeurs de points ciblés d’une caméra dans l’espace univers.

zoom

Type de valeur renvoyé : Property (propriété).

Renvoie les valeurs de zoom d’une caméra en pixels.

Voici une expression pour la propriété Échelle d’un calque qui conserve la taille relative du calque dans l’image, tout en modifiant la position z du calque (profondeur) ou la valeur de zoom d’une caméra :

  cam = thisComp.activeCamera;    distance = length(sub(position, cam.position));    scale * distance / cam.zoom;

depthOfField

Type de valeur renvoyé : Property (propriété).

Renvoie 1 si la propriété Profondeur de champ d’une caméra est activée, ou renvoie 0 si la propriété Profondeur de champ est désactivée.

focusDistance

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur de distance de mise au point d’une caméra en pixels.

aperture

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur d’ouverture d’une caméra en pixels.

blurLevel

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur de niveau de flou d’une caméra sous forme de pourcentage.

active

Type de valeur renvoyé : Boolean (booléen).

Renvoie true (vrai) si la caméra est la caméra active pour la composition à l’instant courant : le bouton d’option Vidéo est activé pour le calque de caméra, l’instant courant est dans la plage située entre le point d’entrée et le point de sortie du calque de caméra, et c’est le premier (le plus haut) de ces calques de caméra figurant dans le panneau Montage. Renvoie la valeur « false » dans tous les autres cas.

Méthodes et attributs Light (référence de l’expression)

Les objets Light ont les mêmes attributs et suivent les mêmes méthodes que les objets Layer à l’exception de source, effect, mask, width, height, anchorPoint, scale, opacity, audioLevels, timeRemap et de toutes les propriétés de surface.

pointOfInterest

Type de valeur renvoyé : Property [3].

Renvoie les valeurs de points ciblés d’une lumière dans l’espace univers.

intensity

Type de valeur renvoyé : Property (propriété).

Renvoie les valeurs d’intensité d’une lumière sous forme de pourcentage.

color

Type de valeur renvoyé : Property [4].

Renvoie la valeur de couleur d’une lumière.

coneAngle

Type de valeur renvoyé : Property (propriété).

Renvoie l’angle du cône d’une lumière, en degrés.

coneFeather

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur du contour du cône d’une lumière sous forme de pourcentage.

shadowDarkness

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur d’obscurité de l’ombre d’une lumière sous forme de pourcentage.

shadowDiffusion

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur de diffusion de l’ombre d’une lumière en pixels.

Sur son blog omino pixel, David Van Brink a posté un article pédagogique et un projet-type qui expliquent comment utiliser les expressions avec les éclairages.

Méthodes et attributs Effect (référence de l’expression)

active

Type de valeur renvoyé : Boolean (booléen).

Renvoie la valeur true (vrai) si l’effet est activé (l’option Effet est sélectionnée).

param(name)

Type de valeur renvoyé : Property (propriété).

Type d’argument : nom est une chaîne de caractères.

Renvoie une propriété d’un effet. Les points de contrôle des effets se situent toujours dans l’espace calque. Exemple :

  effect("Bulge").param("Bulge Height")

param(index)

Type de valeur renvoyé : Property (propriété).

Type d’argument : index est un nombre (Number).

Renvoie une propriété d’un effet. Les points de contrôle des effets se situent toujours dans l’espace calque. Par exemple, effect("Bulge").param(4) renvoie la propriété de hauteur du renflement.

Méthodes et attributs Mask (référence de l’expression)

Remarque :

vous pouvez relier les propriétés de forme de masque à d’autres propriétés de tracé (tracés d’un calque de forme et tracés du pinceau), mais les propriétés ne peuvent pas être soumises à une manipulation numérique directe au moyen d’expressions.

MaskOpacity

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur d’opacité d’un masque sous forme de pourcentage.

MaskFeather

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur de contour d’un masque, en pixels.

MaskExpansion

Type de valeur renvoyé : Property (propriété).

Renvoie la valeur d’expansion d’un masque, en pixels.

invert

Type de valeur renvoyé : Boolean (booléen).

Renvoie la valeur « true » si le masque est inversé et la valeur « false » dans le cas contraire.

Méthodes et attributs Property (référence de l’expression)

value

Type de valeur renvoyé : Number (nombre), Array (ensemble) ou String (chaîne).

Renvoie la valeur d’une propriété à l’instant courant.

valueAtTime(t)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Type d’argument : t est un nombre (Number).

Renvoie la valeur d’une propriété à l’instant indiqué, en secondes.

Par exemple, pour que la valeur de la propriété de chaque image soit choisie de manière aléatoire parmi quatre valeurs, définissez vos quatre valeurs comme des images clés à 0, 1, 2 et 3 secondes, puis appliquez l’expression suivante à la propriété :

valueAtTime(random(4))

Remarque :

Sur son site Web MotionScript, Dan Ebberts fournit d’autres exemples et techniques d’utilisation des méthodes valueAtTime et velocityAtTime.

velocity

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Renvoie la valeur de la vitesse temporelle à l’instant courant. Pour les propriétés spatiales, comme Position, il renvoie la valeur du vecteur tangent. Le résultat est de même dimension que la propriété.

velocityAtTime(t)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Type d’argument : t est un nombre (Number).

Renvoie la valeur de la vitesse temporelle à l’instant indiqué.

speed

Type de valeur renvoyé : Number (nombre).

Renvoie une valeur de vitesse (1D et positive) égale à la vitesse à laquelle la propriété change à l’instant par défaut. Cet élément ne peut être utilisé que pour les propriétés spatiales.

speedAtTime(t)

Type de valeur renvoyé : Number (nombre).

Type d’argument : t est un nombre (Number).

Renvoie la valeur de la vitesse spatiale à l’instant indiqué.

wiggle(freq, amp, octaves=1, amp_mult=.5, t=time)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Type d’argument : freq, amp, octaves, amp_mult et t sont des nombres (Number).

Applique un tremblement aléatoire (secousses) à la valeur de la propriété.

La valeur freq est la fréquence en tremblements par seconde.

La valeur amp est l’amplitude en unités de la propriété à laquelle elle est appliquée.

La valeur octaves est le nombre d’octaves de bruit à cumuler. Cette valeur permet de contrôler le niveau de détail dans le tremblement. Choisissez une valeur supérieure à 1 (par défaut) pour inclure des fréquences plus élevées, ou inférieure pour inclure des harmoniques d’amplitude dans le tremblement.

amp_mult est la valeur par laquelle amp est multiplié pour chaque octave. Cette valeur permet de contrôler la vitesse de filtrage des harmoniques. La valeur par défaut est 0,5 ; une valeur plus proche de 1 permet d’ajouter des harmoniques de même amplitude que la fréquence de base, alors qu’une valeur plus proche de 0 permet d’ajouter moins de détails.

t représente l’instant de départ de base. Cette valeur est établie par défaut à l’instant courant. Utilisez ce paramètre si vous souhaitez obtenir un tremblement de la valeur de la propriété échantillonnée à un instant différent.

Exemple : position.wiggle(5, 20, 3, .5) génère environ 5 tremblements par seconde avec une taille moyenne de 20 pixels. En plus du tremblement principal, il est possible de produire deux niveaux supplémentaires de tremblements détaillés à une fréquence de 10 et 20 tremblements par seconde, et des tailles respectives de 10 et 5 pixels.

Dans cet exemple, qui porte sur une propriété à deux dimensions telle que Echelle, les deux dimensions tremblent avec la même intensité :

  v = wiggle(5, 10);   [v[0], v[0]]

Cet exemple, sur une propriété à deux dimensions, tremble uniquement le long de l’axe y :

  freq = 3;   amp = 50;   w = wiggle(freq,amp);   [value[0],w[1]];

Dan Ebberts propose, sur son site Web MotionScript, un exemple d’expression, assorti d’une explication détaillée, qui illustre l’utilisation du paramètre temporel de la méthode de tremblement pour créer une animation en boucle.

temporalWiggle(freq, amp, octaves=1, amp_mult=.5, t=time)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Type d’argument : freq, amp, octaves, amp_mult et t sont des nombres (Number).

Echantillonne la propriété à l’instant de tremblement. La valeur freq mesure la fréquence en tremblements par seconde ; amp mesure l’amplitude en unités de la propriété à laquelle il s’applique ; octaves est le nombre d’octaves à cumuler ; amp_mult est le multiplicateur de amp pour chaque octave et t est l’instant de départ de base. Pour que cette fonction soit significative, la propriété qu’elle échantillonne doit être animée puisqu’elle n’altère que le moment de l’échantillonnage et non sa valeur. Par exemple : scale.temporalWiggle(5, .2).

smooth(width=.2, samples=5, t=time)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Type d’argument : width, samples et t sont des nombres (Number).

Lisse la valeur de la propriété dans le temps, en convertissant les variations importantes et brèves de la valeur en variations plus petites et réparties de manière uniforme. Ce lissage s’effectue en appliquant à la valeur de la propriété un filtre « Box » à l’instant indiqué. width est la plage de temps (en secondes) sur laquelle la moyenne du filtre est évaluée. La valeur samples est égale au nombre d’échantillons discrets, répartis uniformément dans le temps. Une valeur plus élevée permet d’obtenir un meilleur lissage (mais une performance moindre). Il est préférable que samples soit impair afin que la valeur à l’instant courant soit incluse dans la moyenne. Par exemple : position.smooth(.1, 5).

loopIn(type="cycle", numKeyframes=0)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Lit en boucle, vers l’avant, un segment de durée mesuré à partir de la première image clé du calque jusqu’au point de sortie du calque. La boucle est lue à partir du point d’entrée du calque. La valeur numKeyframes définit le segment qui est lu en boucle : ce segment correspond à la partie du calque qui va de la première image clé à l’image clé numKeyframes+1. Par exemple, loopIn("cycle", 3) lit en boucle le segment délimité par la première et la quatrième image clé. La valeur par défaut, 0, indique que toutes les images clés sont lues en boucle.

Les méthodes de lecture en boucle des images clés permettent de répéter une série d’images clés. Vous pouvez utiliser ces méthodes sur la plupart des propriétés. Sont exclues les propriétés qu’il est impossible d’exprimer par des valeurs numériques simples dans le panneau Montage, notamment la propriété Texte source, les propriétés de tracés de formes et la propriété Histogramme de l’effet Niveaux. Si elles sont trop grandes, les valeurs d’images clés ou de durées indiquées sont ramenées à la valeur maximale autorisée. De trop petites valeurs produisent une boucle constante.

 

Type de boucle

result

cycle

(par défaut) Répète le segment spécifié.

pingpong

Répète le segment spécifié en alternant les répétitions vers l’avant et vers l’arrière.

offset

Répète le segment spécifié tout en décalant chaque cycle selon la différence de la valeur de la propriété au début et à la fin du segment, multipliée par le nombre de lectures en boucle du segment.

continue

Ne répète pas le segment spécifié, mais continue à animer une propriété en fonction de la rapidité de la première ou de la dernière image clé. Par exemple, si la dernière image clé de la propriété Echelle d’un calque indique 100 %, le calque continue sa mise à l’échelle, à partir de la valeur 100 % jusqu’au point de sortie au lieu de retourner directement au point de sortie. Ce type n’accepte pas les arguments images clés ou de durée.

loopOut(type="cycle", numKeyframes=0)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Lit en boucle, vers l’arrière, un segment de durée mesuré à partir de la dernière image clé du calque jusqu’au point d’entrée du calque. La boucle est lue jusqu’au point de sortie du calque. Le nombre spécifié d’images clés détermine le segment à lire en boucle. La valeur numKeyframes indique le nombre de segments d’images clés à lire en boucle ; la plage spécifiée est mesurée à partir de la dernière image clé. Par exemple, loopOut("cycle", 1) lit en boucle le segment délimité par la dernière image clé et l’avant-dernière image clé. La valeur par défaut, 0, indique que toutes les images clés sont lues en boucle. Consultez l’entrée loopIn pour plus de détails.

David Van Brink a publié, sur son blog omino pixelshow un article pédagogique et un projet-type qui expliquent comment utiliser les effets Écho et Laboratoire de particules, ainsi que la méthode loopOut, pour animer un nid grouillant de bactéries stylisées.

loopInDuration(type="cycle", duration=0)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Lit en boucle, vers l’avant, un segment de durée mesuré à partir de la première image clé du calque jusqu’au point de sortie du calque. La boucle est lue à partir du point d’entrée du calque. La durée spécifiée détermine le segment à lire en boucle. La valeur Duration indique le nombre de secondes de la composition à lire en boucle dans le segment ; la plage spécifiée est mesurée à partir de la première image clé. Par exemple, loopInDuration("cycle", 1) lit en boucle la première seconde de la totalité de l’animation. La valeur par défaut, 0, indique que le segment à lire en boucle doit commencer au point de sortie du calque. Consultez l’entrée loopIn pour plus de détails.

loopOutDuration(type="cycle", duration=0)

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Lit en boucle, vers l’arrière, un segment de durée mesuré à partir de la dernière image clé du calque jusqu’au point d’entrée du calque. La boucle est lue jusqu’au point de sortie du calque. La durée spécifiée détermine le segment à lire en boucle. La valeur Duration indique le nombre de secondes de la composition à lire en boucle dans le segment ; la plage spécifiée est mesurée à partir de la dernière image clé. Par exemple, loopOutDuration("cycle", 1) lit en boucle la dernière seconde de la totalité de l’animation. La valeur par défaut, 0, indique que le segment à lire en boucle doit commencer au point d’entrée du calque. Consultez l’entrée loopIn pour plus de détails.

key(index)

Type de valeur renvoyé : Key (clé) ou MarkerKey (clé de repère).

Type d’argument : index est un nombre (Number).

Renvoie l’objet Key ou MarkerKey en fonction de son numéro. Par exemple, key(1) renvoie la première image clé.

key(markerName)

Type de valeur renvoyé : MarkerKey (clé de repère).

Type d’argument : markerName est une chaîne de caractères (String).

Renvoie l’objet MarkerKey portant ce nom. À n’utiliser qu’avec les propriétés de repère.

nearestKey(t)

Type de valeur renvoyé : Key (clé) ou MarkerKey (clé de repère).

Renvoie l’objet Key ou MarkerKey le plus proche de l’instant spécifié.

numKeys

Type de valeur renvoyé : Number (nombre).

Renvoie le nombre d’images clés d’une propriété. Renvoie le nombre de repères d’une propriété de repère.

Remarque :

si vous utilisez la commande Séparer les dimensions pour séparer les dimensions de la propriété Position afin d’obtenir des composants individuels, le nombre d’images clés change et la valeur renvoyée par cette méthode est alors modifiée.

propertyGroup(countUp = 1)

Type de valeur renvoyé : Group.

Renvoie un groupe de propriétés lié à la propriété sur laquelle l’expression est écrite. Si, par exemple, vous ajoutez l’expression propertyGroup(1) à la propriété Rotation d’un tracé, l’expression prend comme cible le groupe de propriétés Transformer qui contient la propriété Rotation. Si, en revanche, vous ajoutez propertyGroup(2), l’expression prend comme cible le groupe de propriétés Pinceau. Cette méthode vous permet d’établir des relations entre des propriétés, indépendamment de leur nom. Cette méthode s’avère particulièrement utile lors de la duplication de propriétés contenant des expressions.

La méthode numProperties pour propertyGroup renvoie le nombre de propriétés dans le groupe de propriétés.

Cet exemple renvoie le nombre de propriétés du groupe contenant la propriété sur laquelle l’expression est rédigée :

  thisProperty.propertyGroup(1).numProperties

propertyIndex

Type de valeur renvoyé : Number (nombre).

Renvoie l’index d’une propriété par rapport à d’autres propriétés de son groupe de propriétés, y compris les groupes de propriétés contenus dans les masques, effets, animations de texte, sélecteurs, formes, suivis et points de suivi.

name

Type de valeur renvoyé : String (chaîne).

Renvoie le nom de la propriété ou du groupe de propriétés.

Exemple : réalisation d’une animation à l’aide de la méthode propertyGroup et de l’attribut propertyIndex

Valeurs de propertyGroup relatives à la propriété Position du tracé d’un pinceau
Valeurs de propertyGroup relatives à la propriété Position du tracé d’un pinceau

A. propertyGroup(4) B. propertyGroup(3) C. propertyGroup(2) D. propertyGroup(1) E. La valeur propertyIndex de la propriété Position est 2 ; la valeur propertyIndex de la propriété Rotation est 4. 

Dans cet exemple, la méthode propertyGroup de chaque tracé prend comme cible le groupe de propriétés Pinceau car ce groupe se trouve deux groupes de propriétés plus haut que la propriété Rotation. L’attribut propertyIndex de chaque tracé renvoie alors une valeur unique pour chaque tracé. La valeur obtenue est alors multipliée par l’instant et par 200 ; elle est ensuite appliquée à chacune des valeurs de rotation, ce qui fait pivoter chaque tracé selon un angle unique et crée des tracés de peinture tourbillonnants :  propertyGroup(2).propertyIndex * time * 200

  propertyGroup(2).propertyIndex * time * 200
Animation d’un tracé à l’aide d’une expression
Animation d’un tracé à l’aide d’une expression

Propriétés de projet (référence de l’expression)

Méthode d’expression :

  • Objet thisProject thisProject : représente le projet qui contient l’expression.

Type :

Objet de projet, en lecture seule

  • Attribut de projet fullPath thisProject.fullPath : chemin d’accès absolu, propre à la plateforme, au fichier contenant le nom de fichier de projet. Si le projet n’a pas été enregistré, il renvoie une chaîne vide.
Type :
Chaîne, en lecture seule
  • Attribut de projet bitsPerChannel thisProject.bitsPerChannel : profondeur de couleur du projet en bits par canal (bpc), définie dans Paramètres du projet > Gestion des couleurs. Valeur possible : 8, 16 ou 32. Équivalent à l’attribut de projet de script app.project.bitsPerChannel.
Type :
Nombre, en lecture seule
  • Attribut de projet linearBlending thisProject.linearBlending : état de l’option Fusionner les couleurs à l’aide d’un gamma de 1,0 dans Paramètres du projet > Gestion des couleurs. Équivalent à l’attribut de projet de script app.project.linearBlending.
Type :
Booléen, en lecture seule

Méthodes et attributs des objets Key (référence de l’expression)

Lorsque vous accédez à un objet Key, vous pouvez obtenir les propriétés time, index et value. L’expression suivante, par exemple, vous indique la valeur de la troisième image clé Position : position.key(3).value.

L’expression suivante, lorsqu’elle est écrite sur une propriété Opacité avec des images clés, ignore les valeurs des images clés et utilise uniquement leur position dans le temps pour déterminer le déclenchement d’un flash : d = Math.abs(time - nearestKey(time).time); easeOut(d, 0, .1, 100, 0)

  d = Math.abs(time - nearestKey(time).time); 
  easeOut(d, 0, .1, 100, 0)

value

Type de valeur renvoyé : Number (nombre) ou Array (ensemble).

Renvoie la valeur de l’image clé.

time

Type de valeur renvoyé : Number (nombre).

Renvoie l’instant de l’image clé.

index

Type de valeur renvoyé : Number (nombre).

Renvoie l’index de l’image clé.

Attributs MarkerKey (référence de l’expression)

Vous pouvez utiliser les mêmes méthodes pour accéder aux valeurs des repères de composition et de calque. Utilisez l’objet thisLayer.marker pour accéder aux repères de calque et l’objet thisComp.marker pour accéder aux repères de composition.

Dans le cas d’expressions, les repères consistent en un type spécial d’objet Key. Vous pouvez donc accéder aux repères à l’aide de méthodes de type nearestKey(time). Les repères ont également des attributs time et index. L’attribut index n’est pas le numéro (nom) du repère, mais le numéro d’index de l’image clé. Il représente la place du repère sur l’échelle de temps.

Les expressions ont accès à toutes les valeurs d’un repère définies dans la boîte de dialogue Repère de composition ou Repère de calque. Cette expression inscrite dans la propriété Texte source d’un calque de texte affiche différentes données (instant, durée, index, commentaire (nom), chapitre, URL, image cible et nom du signal de départ du repère de calque le plus proche de l’instant courant) et indique si le repère est destiné à un signal de départ d’événement :

  m = thisLayer.marker.nearestKey(time);  
  s = "time:" + timeToCurrentFormat(m.time) + "\r" +  
      "duration: " + m.duration + "\r" +  
      "key index: " + m.index + "\r" +  
      "comment:" + m.comment + "\r" +  
      "chapter:" + m.chapter + "\r" +  
      "URL:" + m.url + "\r" +  
      "frame target: " + m.frameTarget + "\r" +  
      "cue point name: " + m.cuePointName + "\r" +  
      "Event cue point? " + m.eventCuePoint + "\r";  
  for (param in m.parameters){  
       s += "parameter: " + param + " value: " + m.parameters[param] + "\r";  
  } 
  s

Etant donné que les métadonnées XMP d’un élément de métrage peuvent être converties en repères de calque sur la base de cet élément, les expressions peuvent interagir avec des métadonnées XMP. Pour plus d’informations, voir Métadonnées XMP dans After Effects.

Dan Ebberts propose, dans la section After Effects Developer Center du site Web d’Adobe, un didacticiel illustrant l’utilisation de métadonnées XMP avec des expressions.

duration

Type de valeur renvoyé : Number (nombre).

Durée des repères (en secondes).

comment

Type de valeur renvoyé : String (chaîne).

Contenu du champ Commentaires de la boîte de dialogue Repère.

chapter

Type de valeur renvoyé : String (chaîne).

Contenu du champ Chapitre de la boîte de dialogue Repère.

url

Type de valeur renvoyé : String (chaîne).

Contenu du champ URL de la boîte de dialogue Repère.

frameTarget

Type de valeur renvoyé : String (chaîne).

Contenu du champ Image cible de la boîte de dialogue Repère.

eventCuePoint

Type de valeur renvoyé : Boolean (booléen).

Type de signal de départ paramétré dans la boîte de dialogue Repère. « True » pour Evénement ; « false » pour Navigation.

cuePointName

Type de valeur renvoyé : String (chaîne).

Contenu du champ Nom du signal de départ de la boîte de dialogue Repère.

parameters

Type de valeur renvoyé : ensemble associatif (Array) de valeurs de chaîne (String).

Contenu des champs Nom du paramètre et Valeur du paramètre de la boîte de dialogue Repère.

Par exemple, s’il existe un paramètre appelé « background color » (couleur d’arrière-plan), vous pouvez utiliser l’expression suivante pour accéder à sa valeur au niveau du repère le plus proche :

  thisComp.marker.nearestKey(time).parameters["background color"]

MarkerValue.protectedRegion (référence de l’expression)

Méthode d’expression :

thisComp.marker.key(index).protectedRegion

Description :

Si la valeur est « true », le repère de composition se comporte comme une zone protégée.

Type :

Booléen ; lecture seule.

Accès des expressions à des points de tracé sur les formes, masques et contours (référence de l’expression)

Vous pouvez utiliser des expressions pour lire et écrire les coordonnées x et y de points de tracé, ou de sommets, pour les éléments suivants :

  • Masques de fusion
  • Formes de Bézier
  • Contours sur les effets Peinture, Roto-pinceau et Améliorer le contour.

Méthodes d’expression :

  • Méthode de points() de tracé : {pathProperty}.points (t = time) Obtenir les coordonnées x, y de tous les points d’un tracé. Les coordonnées des points de tracé du masque de fusion sont déterminées en fonction de l’origine du calque dans son coin supérieur gauche. Les coordonnées des points de tracé des formes de Bézier sont déterminées en fonction du point d’ancrage du groupe de formes du tracé, par exemple, Transformation : Forme 1 > Point d’ancrage. Les coordonnées des points de tracé de l’effet Animer peinture sont relatives au début du contour ; le premier point étant [0,0]. Vous pouvez également spécifier l’heure à laquelle réaliser l’échantillonnage sur le tracé. Vous pouvez transmettre cette méthode à la méthode createPath() pour le paramètre points lors de la duplication d’un tracé.

Paramètres :

t Nombre, facultatif. Heure de la composition (en secondes) à laquelle échantillonner le tracé. La valeur par défaut est time (l’heure actuelle).

Renvoie :

ensemble de tableaux de paires de nombres, arrondis à la quatrième décimale.

  • Méthode de tracé inTangents() : {pathProperty}.inTangents(t = time) Obtenir les coordonnées x, y de la poignée de tangente entrante pour tous les points sur un tracé. Les valeurs des coordonnées de tangente sont décalées par rapport aux coordonnées du point parent, c’est-à-dire que la valeur [0,0] ne crée aucune courbure au niveau de la tangente entrante. Cette méthode peut être transmise à la méthode createPath() pour le paramètre inTangents lors de la duplication d’un tracé. Vous pouvez également spécifier l’heure à laquelle réaliser l’échantillonnage sur le tracé.

Paramètres :

t Nombre, facultatif. Heure de la composition (en secondes) à laquelle échantillonner le tracé. La valeur par défaut est time (l’heure actuelle).

Renvoie :

ensemble de tableaux de paires de nombres, arrondis à la quatrième décimale.

  • Méthode de tracé outTangents() : {pathProperty}.outTangents(t = time) Obtenir les coordonnée x, y de la poignée de tangente sortante pour tous les points sur un tracé. Les valeurs des coordonnées de tangente sont décalées par rapport aux coordonnées du point parent, c’est-à-dire que la valeur [0,0] ne crée aucune courbure au niveau de la tangente sortante. Cette méthode peut être transmise à la méthode createPath() pour le paramètre outTangents lors de la duplication d’un tracé. Vous pouvez également spécifier l’heure à laquelle réaliser l’échantillonnage sur le tracé.

Paramètres :

t Nombre, facultatif. Heure de la composition (en secondes) à laquelle échantillonner le tracé. La valeur par défaut est time (l’heure actuelle).

Renvoie :

ensemble de tableaux de paires de nombres, arrondis à la quatrième décimale.

  • Méthode de tracé isClosed() {pathProperty}.isClosed()Détermine si le tracé est ouvert ou fermé. Renvoie la valeur true si le tracé est fermé et false s’il est ouvert. Cette méthode peut être transmise à la méthode createPath() pour le paramètre is_closed lors de la duplication d’un tracé.

Paramètres :

Aucun

Renvoie :

Booléen

  • Méthode de tracé pointOnPath() {pathProperty}.pointOnPath(percentage = 0.5, t = time)Obtenir les coordonnées x, y d’un point arbitraire le long d’un tracé. Le point est exprimé en pourcentage de la longueur d’arc du tracé. 0 % est le premier point et 100 % le dernier. Lorsque le tracé est fermé, 0 % et 100 % renvoient les mêmes coordonnées. Le pourcentage de longueur d’arc sert à garantir une vitesse uniforme le long du tracé. Hormis les valeurs 0 % et 100 %, les pourcentages ne correspondent pas forcément aux points de Bézier sur le tracé. Pour un tracé à trois points, le deuxième point n’est pas nécessairement à 50 %. Cela signifie également que pour un tracé ouvert et un tracé fermé comportant des points identiques, le pourcentage le long du tracé ouvert ne renvoie pas les mêmes coordonnées que le tracé fermé en raison de la longueur supplémentaire du tracé fermé. Vous pouvez également spécifier l’heure à laquelle réaliser l’échantillonnage sur le tracé.

Paramètres :

percentage Nombre compris entre 0 et 1, facultatif. Pourcentage le long de la longueur d’arc du tracé à échantillonner. Les valeurs inférieures à 0 et supérieures à 1 sont écrêtées. La valeur par défaut est 0,5.
t Nombre, facultatif. Heure de la composition (en secondes) à laquelle échantillonner le tracé. La valeur par défaut est time (l’heure actuelle).

Renvoie :

Un ensemble de paires de nombres.

  • Méthode de tracé tangentOnPath() {pathProperty}.tangentOnPath(percentage = 0.5, t = time) Obtenir les coordonnées x, y de la poignée de tangente sortante pour un point arbitraire sur un tracé. Les valeurs des coordonnées de tangente sont décalées par rapport aux coordonnées du point parent, c’est-à-dire que la valeur [0,0] ne crée aucune courbure au niveau de la tangente sortante. La poignée de la tangente entrante est l’inverse de cette valeur (multipliez les coordonnées x, y par -1). Le point parent de la tangente est exprimé en pourcentage de la longueur d’arc du tracé. Les coordonnées renvoyées par tangentOnPath() sont calculées à partir de son point parent et sont différentes de celles renvoyées par outTangents() si un point défini par l’utilisateur existe également à ce pourcentage de longueur d’arc. La distance linéaire entre les coordonnées du point parent et les coordonnées tangentOnPath() sera toujours égale à 1. Vous pouvez multiplier les coordonnées renvoyées pour créer une tangente plus longue, par ex. (myPath.tangentOnPath() * 100). Vous pouvez également spécifier l’heure à laquelle réaliser l’échantillonnage sur le tracé.

Paramètres :

percentage Nombre compris entre 0 et 1, facultatif. Pourcentage le long de la longueur d’arc du tracé à échantillonner. Les valeurs inférieures à 0 et supérieures à 1 sont écrêtées. La valeur par défaut est 0,5.
t Nombre, facultatif. Heure de la composition (en secondes) à laquelle échantillonner le tracé. La valeur par défaut est time (l’heure actuelle).

Renvoie :

Un ensemble de paires de nombres.

  • Méthode de tracé normalOnPath() {pathProperty}.normalOnPath(percentage = 0.5, t = time) Obtenir les coordonnées x, y calculées de la normale pour un point arbitraire le long d’un tracé. Les valeurs des coordonnées des normales sont décalées par rapport aux coordonnées du point parent - La valeur [0,0] est identique à celle du point parent. Le point parent de la normale est exprimé en pourcentage de la longueur d’arc du tracé. Lisez la description de la méthode pointOnPath() pour plus d’informations sur le pourcentage de longueur d’arc. Les coordonnées renvoyées par normalOnPath() sont calculées à partir de son point parent. La distance linéaire entre les coordonnées du point parent et les coordonnées normalOnPath() sera toujours égale à 1. Vous pouvez multiplier les coordonnées renvoyées pour créer une tangente plus longue, par ex. (myPath.normalOnPath() * 100). Vous pouvez également spécifier l’heure à laquelle réaliser l’échantillonnage sur le tracé.

Paramètres :

percentage Nombre compris entre 0 et 1, facultatif. Pourcentage le long de la longueur d’arc du tracé à échantillonner. Les valeurs inférieures à 0 et supérieures à 1 sont écrêtées. La valeur par défaut est 0,5.
t Nombre, facultatif. Heure de la composition (en secondes) à laquelle échantillonner le tracé. La valeur par défaut est time (l’heure actuelle).

Renvoie :

Un ensemble de paires de nombres.

  • Méthode de tracé createPath() {pathProperty}.createPath(points = [[0,0], [100,0], [100,100], [0,100]], inTangents = [], outTangents = [], is_closed = true) Créer un objet de tracé à partir d’un ensemble de points et de tangentes. Les points sont définis par un ensemble de tableaux de paires de nombres représentant leurs coordonnées x, y. La longueur du tableau doit être supérieure ou égale à 1. Les poignées de tangentes entrantes et sortantes des points sont définies par un ensemble de tableaux de paires de nombres représentant leurs coordonnées x, y décalées. La longueur des matrices tangentielles doit être identique à celle des paramètres de points. Les valeurs des coordonnées de tangente sont décalées par rapport aux coordonnées du point parent, c’est-à-dire que la valeur [0,0] ne crée aucune courbure au niveau de la tangente entrante. Les méthodes points(), inTangents(), outTangents() et isClosed() d’un tracé peut être transmise aux paramètres points, inTangents, outTangents et is_closed pour dupliquer un tracé. Les points et les tangentes d’un même tracé peuvent être transmis à createPath() avec des modifications pour générer un résultat différent. Par exemple, l’expression suivante supprime les courbes du Masque 1 en ne transmettant pas les paramètres inTangents ou outTangents :

myMask = mask("Mask 1").path;
myMask.createPath(myMask.points());

L’exemple suivant transmet les points et les tangentes du Masque 1 et les convertit en un tracé ouvert en définissant is_closed sur false :

myMask = mask("Mask 1").path;
myMask.createPath(myMask.points(), myMask.inTangents(), myMask.outTangents(), false);

 

points Tableau de longueur 1 ou supérieure contenant des tableaux de paires de nombres représentant les coordonnées [x, y] des points de tracé. Requis si aucun paramètre n’est transmis (c.-à-d. CreatePath()). La valeur par défaut est [[0,0], [100,0], [100,100], [0,100]].
is_closed Booléen, facultatif. Détermine si le masque est fermé. Si la valeur est true, le dernier point est connecté au premier. La valeur par défaut est true.
inTangents Tableau contenant des ensembles de paires de nombres représentant les coordonnées de décalage [x, y] des poignées de tangentes sortantes aux points du tracé. Requis si aucun paramètre n’est transmis (c.-à-d. CreatePath()). La longueur du tableau doit être identique à celle des points, ou vous pouvez transmettre un tableau vide ([]), qui aura la même longueur que celui des points et [0,0] pour toutes les tangentes. La valeur par défaut est un tableau vide.
outTangents Tableau contenant des ensembles de paires de nombres représentant les coordonnées de décalage [x, y] des poignées de tangentes entrantes aux points du tracé. Requis si aucun paramètre n’est transmis (c.-à-d. CreatePath()). La longueur du tableau doit être identique à celle des points, ou vous pouvez transmettre un tableau vide ([]), qui aura la même longueur que celui des points et [0,0] pour toutes les tangentes. La valeur par défaut est un tableau vide.

Renvoie :

Un objet de tracé.

Exemples :

  • Exemple 1

L’exemple écrit, dans une chaîne, la liste des coordonnées des points et des tangentes du Tracé 1 de la Forme 1 sur le Calque de forme 1, à l’instant t = 0. Appliquez ceci à la propriété du texte source d’un calque de texte pour une lecture des coordonnées et des tangentes entrantes et sortantes de la forme.

pointsList = "";
sampleTime = 0;

myShape = thisComp.layer("Shape Layer 1").content("Shape 1").content("Path 1").path;

for (i = 0; i < myShape.points(sampleTime).length; i++) {
    pointsList += "c: " + myShape.points(sampleTime)[i].toString() + "  i: " + myShape.inTangents(sampleTime)[i].toString() + " o: " + myShape.outTangents(sampleTime)[i].toString() + "\n";
}

pointsList;

  • Exemple 2

L’exemple lit les coordonnées du premier sommet du Masque 1 sur le Solide gris foncé 1 et les convertit en coordonnées de composition. Appliquez ceci à un paramètre de point d’effet 2D, tel qu’un tracé dynamique ou Particle Systems II de Creative Cloud, pour que l’effet transmette ou suive le premier point d’un masque animé. Dupliquez l’effet et modifiez la valeur de l’indice des points de tracé ([0]) pour tracer ou suivre les autres points du masque.

myLayer = thisComp.layer("Dark Gray Solid 1");
myLayer.toComp(myLayer.mask("Mask 1").maskPath.points()[0]);

Animation orientée données (référence de l’expression)

Méthodes d’expression :

  • Attribut de métrage sourceText {footageItem}.sourceText renvoie le contenu d’un fichier .JSON sous forme de chaîne. La méthode eval() peut être utilisée pour convertir la chaîne en tableau d’objets sourceData, identique aux résultats de l’attribut sourceData, à partir duquel les différents flux de données peuvent être référencés comme attributs hiérarchiques des données. Par exemple : 

var myData = eval(footage("sample.json").sourceText);

myData.sampleValue;

Type :

Chaîne, contenu du fichier .JSON ; en lecture seule.

  • Attribut de métrage sourceData {footageItem}.sourceData renvoie les données d’un fichier .JSON sous forme de tableau d’objets sourceData. La structure du fichier .JSON détermine la taille et la complexité du tableau. Différents flux de données peuvent être référencés comme attributs hiérarchiques des données. Par exemple, étant donné un flux de données appelé Color, l’exemple suivant renvoie la valeur de Color du premier objet de données : footage("sample.json").sourceData[0].Color

L’usage standard consiste à affecter l’attribut sourceData d’un fichier .JSON à une variable, puis à référencer le flux de données souhaité. Par exemple :

var myData = footage("sample.json").sourceData;

myData[0].Color;

Type :

Tableau d’objets sourceData ; en lecture seule.

  • La méthode de métrage dataValue() {footageItem}.dataValue(dataPath) renvoie la valeur du flux de données statique ou dynamique indiqué dans un fichier .mgJSON. Accepte une seule valeur de tableau pour définir le tracé dans la hiérarchie jusqu’à un flux de données souhaité. Par exemple :

footage("sample.mgjson").dataValue([0]) renvoie les données du premier enfant.

footage("sample.mgjson").dataValue([1][0]) renvoie les données du premier enfant dans le second groupe.

Paramètres :

dataPath  Tableau, requis. Tracé dans la hiérarchie jusqu’à un flux de données statique ou dynamique.

Renvoie :

Valeur du flux de données.

  • La méthode de métrage dataKeyCount() {footageItem}.dataKeyCount(dataPath) renvoie le nombre d’échantillons dans un flux de données dynamique spécifié dans un fichier .mgJSON. Accepte une seule valeur de tableau pour définir le tracé dans la hiérarchie jusqu’à un flux de données dynamique souhaité. 

Par exemple :

  • footage("sample.mgjson").dataKeyCount([0]) renvoie le nombre d’échantillons pour le premier enfant.
  • footage("sample.mgjson").dataKeyCount([1][0]) renvoie le nombre d’échantillons pour le deuxième groupe.

Paramètres :

dataPath  Tableau, requis. Tracé dans la hiérarchie jusqu’à un flux de données statique ou dynamique.

Renvoie :

Nombre d’échantillons dans un flux de données dynamique.

  • La méthode de métrage dataKeyTimes() {footageItem}.dataKeyTimes(dataPath, t0 = startTime, t1=endTime) renvoie la durée en secondes des échantillons d’un flux de données dynamique spécifié dans un fichier .mgJSON. Il est possible de spécifier l’étendue temporelle à partir de laquelle les échantillons doivent être renvoyés. Par défaut, la durée de tous les échantillons entre les paramètres startTime et endTime dans le flux de données dynamique est renvoyée, telle que définie par la propriété samplesTemporalExtent du fichier .mgJSON. Accepte une seule valeur de tableau pour définir le tracé dans la hiérarchie jusqu’à un flux de données dynamique souhaité.

L’exemple suivant renvoie les durées des échantillons entre 1 et 3 secondes pour le premier enfant :

footage("sample.mgjson").dataKeyTimes([0], 1, 3)

Paramètres :

dataPath Tableau, requis. Tracé dans la hiérarchie jusqu’à un flux de données dynamique.
t0 Nombre, facultatif. Heure de début (en secondes) de la plage à partir de laquelle les échantillons doivent être renvoyés. Par défaut, startTime.
t1
Nombre, facultatif. Heure de fin, en secondes, de la plage à partir de laquelle les échantillons doivent être renvoyés. Par défaut, endTime.

Renvoie :

Tableau de nombres représentant les durées des échantillons.

  • La méthode de métrage dataKeyValues() {footageItem}.dataKeyValues(dataPath, t0 = startTime, t1=endTime) renvoie les valeurs des échantillons d’un flux de données dynamique spécifié dans un fichier .mgJSON. Il est possible de spécifier l’étendue temporelle à partir de laquelle les échantillons doivent être renvoyés. Par défaut, la durée de tous les échantillons entre les paramètres startTime et endTime dans le flux de données dynamique est renvoyée, telle que définie par la propriété samplesTemporalExtent du fichier .mgJSON. Accepte une seule valeur de tableau pour définir le tracé dans la hiérarchie jusqu’à un flux de données dynamique souhaité.

Par exemple :

footage("sample.mgjson").dataKeyValues([0], 1, 3) renvoie les valeurs des échantillons entre 1 et 3 secondes pour le premier enfant.

Paramètres :

dataPath Tableau, requis. Tracé dans la hiérarchie jusqu’à un flux de données dynamique.
t0 Nombre, facultatif. Heure de début (en secondes) de la plage à partir de laquelle les échantillons doivent être renvoyés. Par défaut, startTime.
t1
Nombre, facultatif. Heure de fin, en secondes, de la plage à partir de laquelle les échantillons doivent être renvoyés. Par défaut, endTime.

Renvoie :

Tableau de nombres représentant les valeurs des échantillons.

Méthode de conversion des couleurs Hex vers RVB (référence d’expression)

Cette méthode de conversion des couleurs, hexToRgb(), convertit les valeurs de couleur hexadécimales (#FF00FF, par exemple) en valeurs de couleur RVBA. Cela peut s’avérer utile pour associer des paramètres de couleur à des valeurs de couleur représentées en tant que chaînes hexadécimales dans des sources de données JSON ou CSV/TSV.

Méthode d’expression :

hexToRgb(hexString) Convertit une couleur dans l’espace de triplet hexadécimal en RVB ou une couleur dans l’espace de quartet hexadécimal en RVBA. Dans le cas des triplets hexadécimaux, la valeur alpha par défaut est 1,0.

Paramètres :

hexString Chaîne représentant un triplet hexadécimal (6 chiffres, aucun canal alpha) ou un quartet (8 chiffres, avec un canal alpha), composé uniquement de chiffres ou des caractères A à F. Les caractères de début facultatifs 0x, 0X ou # sont ignorés. Les caractères au-delà de 8 chiffres sont ignorés.

Résultat :

Tableau de valeurs de couleur RVBA.

Exemples :

Les méthodes suivantes renvoient toutes [1,0, 0,0, 1,0, 1,0] :

  • hexToRgb("FF00FF")
  • hexToRgb("#FF00FF")
  • hexToRgb("0xFF00FF")
  • hexToRgb("0XFF00FFFF") Remarque : Quartet hexadécimal à 8 chiffres ; les deux derniers chiffres définissent la valeur alpha sur 1,0.

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne