| After Effects CS4 |
|
|
Langage des expressionsLe langage des expressions After Effects est basé sur JavaScript 1.2 et intègre des objets complémentaires. After Effects n’utilise que le noyau standard de JavaScript 1.2 et non les extensions spécifiques aux navigateurs Web. After Effects contient son propre ensemble d’objets complémentaires (comme Layer, Comp, Footage et Camera), lesquels vous permettent d’obtenir la plupart des valeurs d’un projet After Effects. Bien que le langage des expressions soit basé sur un langage de script, il existe une différence subtile, mais néanmoins essentielle, entre un script et une expression : tandis qu’un script invite une application à réaliser une action, une expression indique qu’une propriété est égale à une valeur. Pour plus de détails sur JavaScript, reportez-vous à un ouvrage de référence JavaScript. Lorsque vous créez des expressions, gardez à l’esprit les considérations suivantes :
En JavaScript, une valeur contenue dans un objet est appelée propriété. Dans After Effects, cependant, le terme propriété se réfère à des composants de calque définis dans le panneau Montage. C’est pour cette raison qu’After Effects désigne les propriétés JavaScript par les termes méthodes ou attributs. Dans la pratique, la différence entre une méthode et un attribut est que la méthode réalise généralement une opération pour créer sa valeur de sortie (retour), tandis qu’un attribut fait simplement référence à une valeur existante pour déterminer sa valeur de sortie (retour). Il est plus facile de distinguer une méthode d’un attribut en observant les parenthèses suivant le nom de la méthode et entourant ses arguments d’entrée. Un objet est un élément contenant d’autres objets, attributs et méthodes. Les compositions, les calques et les métrages sont des exemples d’objets. Plus précisément, les éléments de compositions, de calques et de métrages sont des objets globaux, ce qui signifie qu’ils peuvent être utilisés dans n’importe quel contexte sans référence à un objet de niveau supérieur. Accès aux attributs et aux méthodesVous pouvez utiliser le langage des expressions pour accéder aux attributs et aux méthodes des propriétés des calques. Pour accéder à une valeur, utilisez une chaîne de références d’objet dont les éléments sont séparés par l’opérateur point (.). Vous pouvez également utiliser des parenthèses pour chaîner des références d’objet au-delà du niveau du calque (par exemple, pour faire référence à des propriétés d’effet, des masques ou des animations de texte). Par exemple, pour lier la propriété Opacité dans le calque A à la propriété Intensité de l’effet Flou gaussien dans le calque B, entrez l’expression suivante dans le champ d’expression pour la propriété Opacité du calque A : thisComp.layer("Layer B").effect("Gaussian Blur")("Blurriness")
En lisant cette expression de gauche à droite, vous progressez de l’objet contenant de niveau supérieur jusqu’à la propriété spécifique :
L’objet par défaut de toute expression est la propriété sur laquelle elle est rédigée, suivi du calque contenant l’expression ; il est donc inutile de spécifier la propriété. Par exemple, une expression de tremblement écrite sur la propriété Position d’un calque peut être écrite des deux façons suivantes : wiggle(5, 10) position.wiggle(5, 10) Il est inutile d’inclure le calque et la propriété lorsque vous les extrayez à partir d’un autre calque, ainsi que la propriété sur laquelle l’expression est rédigée. Par exemple, une expression écrite sur la propriété Opacité du calque B, la liant à la propriété Rotation du calque A aurait l’aspect suivant : thisComp.layer("Layer A").rotation
Pour étudier d’autres exemples, utilisez l’icône de sélection pour relier une propriété de calque à une autre et examinez les expressions qui en résultent.Sur son site Web, Jeff Almasol propose un script grâce auquel vous pouvez déterminer comment faire référence à n’importe quelle propriété dans des expressions : www.adobe.com/go/learn_ae_jeffgimmeproppath_fr. Ensembles et propriétés multidimensionnellesUn ensemble (Array) est un type d’objet qui stocke un jeu ordonné de plusieurs nombres. Il se présente sous la forme d’une liste de nombres séparés par des virgules, apparaissant entre crochets, comme dans cet exemple : [10, 23] Vous pouvez affecter un objet d’ensemble (Array) à une variable, afin de faciliter les références aux valeurs d’ensemble dans le reste de l’expression. Par exemple : myArray = [10, 23] La dimension d’un objet d’ensemble correspond au nombre d’éléments dans l’ensemble. La dimension de monEnsemble est 2. Dans After Effects, les propriétés peuvent avoir des dimensions différentes en fonction du nombre de leurs arguments de valeur. Dans le langage des expressions, les valeurs des propriétés sont soit des valeurs uniques (objets de nombre Number) ou des ensembles (objets d’ensemble Array). Le tableau suivant donne des exemples de propriétés et de dimensions associées :
Vous pouvez accéder aux éléments individuels d’un objet d’ensemble en utilisant des parenthèses et un numéro d’index pour indiquer l’élément requis. Les éléments d’un objet d’ensemble sont indexés à partir de 0. Si l’on se base sur l’exemple précédent, l’élément monEnsemble[0] a la valeur 10 et l’élément monEnsemble[1] a la valeur 23. Les deux expressions suivantes sont équivalentes : [myArray[0], 5] [10, 5] Les ensembles de la propriété Position sont indexés comme suit :
Les couleurs sont représentées par des ensembles en quatre dimensions [rouge, vert, bleu, alpha]. Dans les projets ayant un codage des couleurs de 8bpc ou 16 bpc, chaque valeur d’un ensemble va de 0 (noir) à 1 (blanc). Le rouge, par exemple, peut aller de 0 (aucune couleur) à 1 (rouge). [0,0,0,0] correspond donc à du noir transparent et [1,1,1,1] à du blanc complètement opaque. Dans les projets ayant un codage des couleurs de 32 bpc, les valeurs inférieures à 0 et supérieures à 1 sont autorisées. Si vous utilisez un index supérieur à l’index du composant de dimension maximale d’un objet d’ensemble, After Effects renvoie une erreur. Par exemple, monEnsemble[2] génère une erreur mais position[2] renvoie la coordonnée z de la position. Dans le langage des expressions After Effects, de nombreuses propriétés et méthodes utilisent des objets d’ensemble en tant qu’arguments ou en renvoient en tant que valeurs. Par exemple, thisLayer.position est un objet d’ensemble bidimensionnel ou tridimensionnel, selon qu’il s’agit d’un calque 2D ou 3D. Si vous voulez écrire une expression qui garde la valeur y d’une animation de Position, mais fixe la valeur x à 9, utilisez l’expression suivante : y = position[1]; [9,y] Ou plus succinctement encore : [9, position[1]] Il s’agit d’une règle importante : voici donc un autre exemple. Si vous voulez combiner la valeur de position x du calque A avec la valeur de position y du Calque B, vous devez utiliser l’expression suivante : x = thisComp.layer("Layer A").position[0];
y = thisComp.layer("Layer B").position[1];
[x,y]
Vous pouvez créer une expression faisant référence à une seule valeur de l’ensemble d’une propriété 2D ou 3D. Sauf indication contraire, c’est la première valeur qui est utilisée. Par exemple, si vous faites glisser l’icône de sélection de la propriété Rotation du calque A à la propriété Echelle du calque B, l’expression suivante apparaît : thisComp.layer("Layer B").scale[0]
Par défaut, cette expression utilise la première valeur de la propriété Echelle, qui est la largeur. Si vous préférez utiliser la hauteur, faites glisser l’icône de sélection directement vers la deuxième valeur (et non plus sur le nom de la propriété) ou modifiez l’expression comme suit : thisComp.layer("Layer B").scale[1]
A l’inverse, si vous faites glisser l’icône de sélection de la propriété Echelle du calque B à la propriété Rotation du calque A, After Effects crée automatiquement une variable, lui attribue la valeur à une dimension de la propriété Rotation, puis utilise cette variable pour les deux dimensions de la propriété Echelle : temp = thisComp.layer(1).transform.rotation; [temp, temp] VecteursDe nombreuses méthodes et propriétés d’After Effects utilisent ou renvoient des vecteurs. After Effects utilise un vecteur pour faire référence à un ensemble si ce dernier représente un point ou une direction dans l’espace. La propriété position d’After Effects, par exemple, renvoie un vecteur. Toutefois, une fonction telle qu’audioLevels, qui renvoie un ensemble à deux dimensions (les niveaux des canaux droite et gauche), n’est pas appelée vecteur puisqu’elle ne représente ni un point ni une direction. Certaines fonctions d’After Effects acceptent les vecteurs en tant qu’arguments, mais cela n’est généralement utile que lorsque les valeurs représentent une direction. cross(vec1, vec2), par exemple, calcule un troisième vecteur à angle droit par rapport aux vecteurs d’entrée. Le produit croisé est utile si vec1 et vec2 sont deux vecteurs représentant des directions dans l’espace ; elle n’est d’aucune utilité s’ils représentent simplement deux ensembles arbitraires de nombres. Indices et libellésL’indexation des éléments Layer, Effect et Mask d’After Effects part de 1. Par exemple, le premier calque du panneau Montage est layer(1). Il est généralement préférable d’utiliser le nom du calque, de l’effet ou du masque au lieu d’un nombre pour éviter les confusions et les erreurs s’ils sont déplacés ou en cas de modification des arguments lors des mises à jour et des mises à niveau du produit. Lorsque vous spécifiez un nom, entourez-le toujours de guillemets droits. Par exemple, la première de ces expressions est plus lisible que la seconde et continuera à fonctionner même si vous modifiez l’ordre des effets : effect("Colorama").param("Get Phase From")
effect(1).param(2)
Temps d’expressionL’instant d’une expression est toujours celui de la composition (non du calque) et se mesure en secondes. L’instant par défaut de toute expression est l’instant de la composition auquel elle est évaluée. Les deux expressions suivantes utilisent le temps de composition par défaut et renvoient les mêmes valeurs : thisComp.layer(1).position thisComp.layer(1).position.valueAtTime(time) Pour utiliser un instant relatif, ajoutez une valeur temporelle incrémentielle à l’argument time. Par exemple, pour obtenir une valeur Position 5 secondes avant l’instant courant, utilisez l’expression suivante : thisComp.layer(1).position.valueAtTime(time-5) Par défaut, les références temporelles aux propriétés dans les compositions imbriquées utilisent le temps par défaut initial des compositions et non le temps redistribué. Toutefois, si vous utilisez la fonction source pour récupérer une propriété, le temps redistribué est utilisé. Par exemple, si la source d’un calque de la composition réceptrice est une composition imbriquée et que la composition réceptrice comporte un remappage temporel, lorsque vous obtenez les valeurs de position d’un calque de la composition imbriquée avec l’expression suivante, ces valeurs utilisent le temps par défaut de la composition : comp("nested composition").layer(1).position
Néanmoins, si vous accédez au calque 1 grâce à la fonction source, les valeurs de position utilisent le temps redistribué : thisComp.layer("nested composition").source.layer(1).position
Remarque : si vous utilisez un instant spécifique dans une expression, le temps redistribué est ignoré.
Dans la mesure où les expressions opèrent sur le temps en unités de secondes (et non en images), il peut parfois s’avérer nécessaire d’utiliser des méthodes de conversion temporelle pour convertir les valeurs temporelles de manière à réaliser des opérations sur les images (voir la section Méthodes « Time conversion »). |