Vous êtes sur la page 1sur 17

Les Expressions sur Adobe After Effects

Formation de DuDuF
http://formations.duduf.fr
duduf@duduf.com

I - Objets, Valeurs
Que peut-on manier avec les expressions ? Quels sont les types de valeurs ? Comment les utilise-t-on ?
En pratique : manier les outils de cration dexpressions, lier des proprits, crer des contrleurs.

II - Oprations
Variables, Oprations mathmatiques, additionner, multiplier, etc.
En pratique : Combiner plusieurs proprits, utiliser les fonctions mathmatiques...

III - Conditions
If, then, else
En pratique : automatiser des vnements, insrer des conditions.

IV - Fonctions
Fonctions prdfinies, fonctions cres
En pratique : Utiliser les fonctions After Effects, crer ses propres fonctions.

Ce document nest quun rsum, un pense-bte, de la formation dispense par Duduf. Il runit les principaux points
thoriques retenir sans tre exhaustif, et de nombreuses remarques, astuces pratiques et exemples concrets ny sont
pas prsents.

2009 Nicolas Dufresne - Duduf - http://formations.duduf.fr

I - Objets, Valeurs
Adobe After Effects a un mode de fonctionnement trs proche du langage JavaScript, couramment utilis sur internet. Cest un langage de programmation orient objet . Lutilisation des expressions est intimement li ce mode de fonctionnement. Commenons donc par y jeter un oeil.
Un objet, cest quoi ?
Pour comprendre, prenons des exemples dobjets : composition, calque, chelle, rotation, flou...
Eh oui, un objet, cest tout ce quon peut manipuler dans une composition, et donc aussi avec les expressions.
Mais encore ?
Tous les objets sont classs de faon hirarchique : Le grade le plus lev est la composition,
le plus bas est le paramtre deffet.
On peut dire que les objets sont imbriqus les uns dans les autres, un peu comme des poupes russes.
Voici un exemple de quatre objets, et la hirarchie entre eux :
Composition
Calque
Transformation
Position

2009 Nicolas Dufresne - Duduf - http://formations.duduf.fr

2/17

Un autre exemple plus complexe :


Composition
Calque
Effets

Marionnette

Filet

Dformation

Coin
Position

Que faire de tous ces objets ?


Nous allons mettre des valeurs dedans ! Lobjet le plus bas dans la hirarchie est celui qui
contient une valeur (dans lexemple, la position). La plupart du temps, cette valeur est animable (reprable au chronomtre juste ct sur After Effects). Et la grande majorit (mais pas toutes) de ces
valeurs peut tre contrle par une expression !
Un objet ne peut contenir quune valeur.
Mais une position, ce ne sont pas DEUX valeurs ?
Eh non ! Il y a les valeurs simples, comme la valeur dun flou ou dun angle, mais certains objets
font appel au tableau. Cest un type de valeur qui contient en fait plusieurs autres valeurs (position X,
Y et Z pour la position par exemple). La plupart des objets font appel soit une valeur simple, soit un
tableau de valeurs, mais quelques objets utilisent des valeurs encore diffrentes, comme les tracs de
masque...

2009 Nicolas Dufresne - Duduf - http://formations.duduf.fr

3/17

Bon, et les expressions dans tout a ?


Les expressions sont donc un moyen de contrler ces valeurs. En fait, une expression, cest
une commande, une opration mathmatique le plus souvent, dont le rsultat donne la valeur appliquer lobjet.
Regardons donc comment manier ces expressions !

Affichage de la valeur : si
cest en rouge, cest le rsultat dune expression.

Alt + clic sur le chronomtre


permet dactiver les expressions sur lobjet voulu

Bibliothque de fonctions.

Permet dinsrer un lien vers une


autre valeur, sur le mme principe
que le parentage des calques.
Permet dactiver ou
de dsactiver lexpression.

Si coch, en mode courbes, permet


dafficher la courbe rsultant de lexpression au lieu de la courbe de la
valeur dorigine (avant calcul de lexpression).

Essayons de crer une expression !


La plus simple de toutes : la valeur.
- Sur un calque, ouvrez les proprits de transformation, et alt+clic sur le chronomtre de lopacit.
- Tapez 20 , par exemple, dans le champ de lexpression.
On remarque deux choses : laffichage de la valeur de lopacit est devenu rouge, pour indiquer quelle est le rsultat dune expression, et si on modifie cette valeur en cliquant dessus, elle se
remet toujours 20. En effet, quoiquil arrive, le rsultat de lexpression est une constante, 20.
- Cliquez sur le bouton =. Laffichage de la valeur change et redevient jaune. Ce nest plus le rsultat
de lexpression, mais la valeur dfinie pour le calque.

2009 Nicolas Dufresne - Duduf - http://formations.duduf.fr

4/17

Et la position ?
Essayons !
- Sur un calque, activez les expressions sur la position.
- Tapez 20 .
Ae, a ne marche pas, After me parle de dimensions...
Souvenez-vous, la position prend un tableau de valeurs !
Cest pour a quAfter Effects demande un rsultat de dimension 2 (un tableau deux valeurs) et pas
1!
- Entrez maintenant [20,20] .
Maintenant a fonctionne. Vous venez de dcouvrir comment entrer un tableau dans une expression, entre crochets, les valeurs spares par des virgules.
Mais, et les valeurs virgule alors ? comment les crire, si la virgule sert de sparateur entre
deux valeurs ?
Nous arrivons un point trs important : les dveloppeurs de After Effects sont amricains !
Les expressions sont donc en anglais et en anglais, les sparateurs sont des virgules, et les nombres
dcimaux scrivent avec un point ! Il va falloir sy faire...
Une constante cest bien, mais le but cest quand mme danimer...
Crons notre premire expression dont le rsultat change dans le temps ! Oui, cest juste a une
animation, un rsultat qui change en fonction de linstant.
La plus simple des expressions animes, cest le lien entre deux valeurs.
- Crez deux solides, dpliez leurs transformations.
- Activez les expressions sur lopacit du premier, et alors que le champ de saisie est actif, utilisez le
lasso pour pointer la valeur de lopacit du deuxime puis validez.
Lexpression ressemble alors thisComp.layer("Nom du Calque").transform.opacity .
On y retrouve la hirarchie des objets, et comment on les dsigne :
La composition thisComp qui montre la composition actuelle.
Le calque layer("Nom du Calque") que lon peut remplacer par layer(X) o X reprsente son
index.
La transformation, et lopacit (toujours en anglais).
Maintenant, si on anime lopacit du deuxime calque, le premier suit exactement la mme animation !

2009 Nicolas Dufresne - Duduf - http://formations.duduf.fr

Exerons nous pour terminer ce chapitre ! Crons nos premires expressions !


- Sur un solide noir, appliquez un effet gnration/lumire parasite.
- Crez un objet nul.
- Utilisez une expression pour lier le Centre de la source lumineuse la position de lobjet nul.
Cest une utilisation trs pratique des expressions pour animer certains effets ; dans ce cas
particulier il est nettement plus facile danimer la position dun calque que le centre dun effet !
- Sur le solide noir, ajoutez un effet nettet/flou radial.
- Liez le centre du flou la position de lobjet nul avec une expression.
- Ajoutez sur lobjet nul un effet options pour expressions/paramtre glissire.
- Liez lintensit du flou au curseur du paramtre glissire.
- Liez lintensit de la lumire parasite au paramtre glissire.
Ici nous crons un contrleur : un objet trs utile avec les expressions, pour contrler plusieurs
effets en mme temps, pour donner des paramtres des expressions... Et qui permet par ailleurs de
rassembler tous les paramtres animer sur le mme calque (ici, lobjet nul).
Un autre exemple de lutilisation dun tel contrleur, cest de sparer les diffrentes valeurs dun objet
plusieurs dimensions, comme la position :
- Crez un solide, et ajoutez-y deux paramtres glissire.
- Activez les expressions sur la position, tapez un premier crochet [ puis avec le lasso liez le curseur
du premier paramtre glissire, ajoutez une virgule ,, liez le deuxime paramtre glissire, et enfin
fermez les crochets ].
Nous venons de recrer leffet Sparer la position XYZ ! Aucun intrt puisquil existe dj,
mais vous savez maintenant le faire aussi sur nimporte quelle position, le centre dun effet, un point
de marionnette, etc. !
Pensez dj toutes les possibilits des expressions en combinant ces simples bases !

2009 Nicolas Dufresne - Duduf - http://formations.duduf.fr

II - Oprations
Nous savons maintenant assigner une valeur et rcuprer la valeur dun autre objet. Cest dj
pratique, mais encore loin des possibilits des expressions. Il sera encore bien plus utile de pouvoir
associer plusieurs valeurs et raliser des calculs. Pour cela nous allons utiliser des oprateurs, pour
raliser des oprations entre diffrentes oprandes.
Un oprateur, cest le signe de lopration (+, -, =, etc.). Il y en a plein, pour faire plein de
choses.
Une oprande, cest llment sur lequel travaille loprateur (dans 2+2=4, les 2 et le 4 sont les
oprandes).
Commenons par les maths, niveau cole primaire.
Quatre oprations, quatre oprateurs : addition +, soustraction -, division /, multiplication *. Rien de bien sorcier... Une expression 20+30 donnera 50, 20*30 donnera 600.
Et puisque cest trop simple, ajoutons un cinquime oprateur, le modulo %. Il retourne le
reste de la division entire des deux oprandes. 10%8 donnera 2. 30%8 donnera 6.
Si on crit une opration plus de deux oprandes, cest comme sur le papier, il y a des priorits : *, /, % auront la priorit sur + et -. Et bien sr, si a ne nous plait pas, on peut ajouter
des parenthses. 2+2*4 donnera 10 et (2+2)*4 donnera 16. Toujours rien de bien sorcier, mais
revenons du plus concret...
Utiliser des expressions pour y mettre des valeurs que lon peut trouver avec une calculatrice,
ce nest pas trs utile. Mais remplaons nos oprandes numriques par des liens vers les valeurs
dautres objets...
- Crez trois solides, animez diffremment lopacit de deux dentre eux, et ajoutez une expression sur
le troisime.
- Liez la valeur dopacit du premier solide, ajoutez +, puis liez la valeur dopacit du deuxime solide. Vous obtenez une expression du type :
thisComp.layer("calque1").transform.opacity + thisComp.layer("calque2").transform.opacity
(on peut ajouter des espaces pour y voir plus clair, les espaces ninfluencent aucunement les expressions).
La valeur dopacit du troisime calque est donc la somme des deux autres, nimporte quel
moment dans le temps. L a commence devenir intressant.

2009 Nicolas Dufresne - Duduf - http://formations.duduf.fr

Dis donc, a risque de devenir illisible et dur organiser si on a beaucoup doprandes !


Dans les cas o on lie beaucoup dobjets, o les oprandes sont nombreuses, et plus forte
raison dans les cas o on utilise plusieurs fois la mme oprande, il y a un outil trs pratique : la variable ! Elle permet dassigner une oprande un nom de notre choix, plus simple. Par exemple au lieu
de mettre thisComp.layer("calque1").transform.opacity, on va pouvoir utiliser calque1Opacit par
exemple. Pour crer (on dit dclarer en programmation) une variable, cest tout bte :
- Reprenez les trois solides de tout lheure. Celui o on a mis lexpression, vous allez effacer lancienne et crer celle ci :
calque1Opacit = thisComp.layer("calque1").transform.opacity;
calque2Opacit = thisComp.layer("calque2").transform.opacity;
calque1Opacit + calque2Opacit
Le rsultat est exactement le mme que tout lheure, mais la dernire opration est bien plus
facile lire. Cest une mthode trs utile lors de la cration dexpressions plus compliques.
Notons au passage la syntaxe utilise par les expressions : un point-virgule la fin de chaque
ligne pour sparer les oprations, sauf la dernire ligne, celle dont le rsultat doit servir de valeur
pour lobjet dans lequel lexpression est applique.
Et aussi, ce nouvel oprateur =, qui permet daffecter loprande de gauche la valeur de
celle de droite. (attention, ce nest pas un oprateur dgalit, mais un oprateur daffectation). Comme
tous les oprateurs, il subit les priorits. Il vient aprs + et - dans lordre des priorits.
Maintenant, nous connaissons donc les 6 oprateurs de calcul (en comptant laffectation), ajoutons-y 5 autres oprateurs pas indispensables mais qui peuvent servir simplifier nos expressions : les
oprateurs daffectation. Exemple : dans certains cas, vous aurez besoin de modifier une variable, dy
additionner ou soustraire une valeur, avant de la rutiliser. Vous pourriez le faire de la faon suivante :
variableA = variableA + 23. Loprateur daffectation simplifie cette expression de la faon suivante :
variableA += 23. Il y en a donc 5 : +=, -=, *=, /=, %=. Ils ont tous les 5 la mme priorit
que loprateur daffectation =.
Il y a encore deux oprateurs, trs utiles en programmation, mais peu utiliss par les expressions : les oprateurs dincrmentation : ++ et -- qui additionnent ou soustrayent une unit loprande place juste gauche. Exemple : variableA++ est quivalent variableA += 1 ou encore
variableA = variableA + 1. Ces deux oprateurs ont la priorit sur *, / et %, ils sont donc ceux
dont la priorit est la plus haute.

2009 Nicolas Dufresne - Duduf - http://formations.duduf.fr

Il est temps dentrer au collge !


Trs vite, vous aurez besoin deffectuer des calculs un peu plus complexes... Rcuprer des
valeurs absolues, calculer des puissances, des racines carres, travailler des angles, etc. After Effects
dispose dun certain nombre de fonctions prtes faire a pour vous !
Prenons un tout petit peu davance sur le dernier chapitre et regardons o trouver ces fonctions,
et comment les utiliser :

Bibliothque de fonctions.

Dans longlet JavaScript Math vous y trouverez par exemple :


le cosinus : Math.cos(valeur)
le cosinus invers : Math.acos(valeur)
la puissance : Math.pow(valeur, puissance)
la valeur absolue : Math.abs(valeur)
ou encore, larrondi suprieur : Math.ceil(valeur)
Et dans Other Math, pour la conversion de radian en degrs : radiansToDegrees(valeur) ou le
contraire degreesToRadians(valeur).
Attention aux majuscules/minuscules, elles sont importantes dans les expressions !

2009 Nicolas Dufresne - Duduf - http://formations.duduf.fr

Exerons nous pour terminer ce chapitre !


- Crez trois solides (dune taille plus petite que celle de la compo, pour bien voir leur position)
- Animez la position des deux premiers, et ajoutez lexpression suivante en position sur le troisime :
positionA = thisCompiayer("calque1").transform.position;
positionB = thisCompiayer("calque2").transform.position;
(positionA + positionB) / 2
Vous venez de faire la moyenne des positions, le calque 3 est toujours a mi-chemin des deux
autres. Vous commencez trouver des applications de plus en plus utiles aux expressions... Essayez
aussi avec des coefficients !
positionA = thisCompiayer("calque1").transform.position;
positionB = thisCompiayer("calque2").transform.position;
(positionA*2 + positionB) / 3
Essayez avec encore plus de calques, faites la moyenne de 3, 4 ou mme 5 positions... Au passage notons que nous travaillons sur des tableaux de valeurs 2 ou mme 3 dimensions (puisque ce
sont des positions), exactement de la mme faon que si ctaient des valeurs simples. After Effects
se charge du calcul vectoriel pour nous !

2009 Nicolas Dufresne - Duduf - http://formations.duduf.fr

Regardons maintenant une autre expression :


- Crez un solide de 200pixels sur 200 (dans une compo plus
grande...) - Ajoutez cette expression dans la rotation :
centre = thisLayer.position;
R = 100;
radiansToDegrees(centre[0]/R)
Vous venez dinventer la roue ! Cette expression est presque la mme que celle que cre loutil
roue de Duik (http://ik.duduf.fr). Elle automatise la rotation du calque en fonction de son dplacement horizontal pour faire rouler le calque. (videmment, si vous mettez un masque en cercle ce
sera plus parlant).
Analysons lexpression :
thisLayer.position est un abrg de thisComp.thisLayer.transform.position. Dailleurs, on
aurait mme pu mettre simplement position tout court, mais on naurait pas dcouvert le terme thisLayer en passant ;-). La premire ligne assigne donc la variable nomme centre la valeur de la
position du calque courant.
R = 100 assigne btement la valeur 100 une variable R. Pourquoi 100 ? si le calque fait
200 pixels de large, cest tout simplement le rayon de la roue...
centre[0], encore quelque chose de nouveau : a permet de rcuprer la premire valeur du
tableau centre (centre est une variable qui contient une position, donc un tableau de 2 ou 3 valeurs),
donc la valeur de la position en X, horizontale. centre[1], la valeur en Y, centre[2], la valeur en Z.
Si on se souvient des cours de maths du collge, en radians : 2*R cest la circonfrence
du cercle, donc la distance parcourue quand il fait un tour complet. Dailleurs, 2, en radians, cest
langle correspondant un tour complet (360, en degrs). Doooooonc (vous me suivez toujours ?) :
Angle*Rayon=Distance (en radians, toujours). Et donc on a Angle=Distance/rayon. Bah voil :
centre[0]/R quon na plus qu convertir en degrs, puisque After Effects travaille en degrs,
radiansToDegrees(centre[0]/R) et le tour est jou !
Pour faire monter la roue la verticale, changez pour centre[1]/R !
Ces deux exemples montrent des expressions pour lanimation de transformations, mais nous
avons maintenant un attirail trs complet pour crer des expressions pour contrler prcisment tous
les effets, que ce soit leurs intensits, leurs positions, etc.

2009 Nicolas Dufresne - Duduf - http://form

III - Conditions
Maintenant que nous savons manipuler toutes sortes de valeurs, les lier, les associer, calculer,
il ne reste plus que : A partir de l, change de sens ou encore Si je te met droite, devient transparent. Cest dire les conditions, if(){} else{}
Une seule condition.
Le principe est simple : on veut quun calque devienne transparent si il passe sur la droite de la
composition.
La syntaxe est la suivante :
if (condition) {ce qui se passe si la condition est remplie}
else {ce qui se passe si la condition nest pas remplie}
On mettra donc une expression dans lopacit :
if (transform.position[0] < thisComp.width/2) {100}
else {50}
Notons en passant thisComp.width : la largeur de la compo, en pixels, et le nouvel oprateur
infrieur < dont la priorit passe aprs *, /, %.
Nous allons dailleurs avoir besoin de toute une srie doprateurs de comparaison pour tablir
nos conditions. Les voici :
infrieur <
suprieur >
infrieur ou gal <=
suprieur ou gal >=
galit == ( ne pas confondre avec affectation =)
diffrence !=
Dans les effets/options pour expressions, le paramtre case permettra de crer un bouton pour
allumer ou teindre un calque par exemple :
if (effect("Paramtre case")("Case")==1) {100}
else {50}
La case vaut 1 si elle est coche, 0 si elle est dcoche...

2009 Nicolas Dufresne - Duduf - http://formations.duduf.fr

Et si jai plusieurs conditions poser ?


Essayons de runir les deux cas prcdents : si la case est coche, alors si le calque est sur la
droite, allumons le. Sinon, il reste teint. Dis comme a, on a envie de crer lexpression suivante :
if (effect("Paramtre case")("Case")==1) {
if (transform.position[0] < thisComp.width/2) {100}
}
else {50}
Non ce nest pas un pige, a fonctionne. Mais il y a plus simple... Pourquoi ne pas se dire simplement si la case est coche ET si le calque est sur la droite, allumons le, sinon il reste teint.
if (effect(Paramtre case)(Case)==1 && transform.position[0] < thisComp.width/2) {
100
} else {50}
Voil encore un nouvel oprateur, celui l fait partie des oprateurs logiques : et &&. Il y a
aussi le ou || (qui se fait avec la touche 6 du clavier) et la ngation !.
Il est donc possible de mettre autant de conditions que lon veut en combinant les oprateurs
logiques. Il est possible dutiliser des parenthses pour prciser la priorit :
- Sur un solide, en opacit, mettez lexpression suivante :
m=12;
n=8;
if ( m<10 && n==7 || m==12 ) {100}
else {50}
Le solide est allum. En effet, pour tre allum il doit remplir SOIT la condition m<10 et n=7,
SOIT m=12. La deuxime des deux conditions est remplie, il est donc allum. Ajoutons des parenthses de la faon suivante :
m=12;
n=8;
if ( m<10 && ( n==7 || m==12 ) ) {100}
else {50}
Le solide est maintenant teint, puisquil doit remplir deux conditions, la premire, m<10, nest
pas remplie, tandis que la deuxime n=7 ou m=12 est remplie.

2009 Nicolas Dufresne - Duduf - http://formations.duduf.fr

www.cours-ofppt.com
IV - Fonctions
Nous savons maintenant tout faire avec les expressions ! Il ne manque que les fonctions, pour
les plus compliques des expressions, qui permettent daccder certaines proprits de After Effects,
certains calculs, ou encore de simplifier certaines oprations rptitives...
Cest quoi, une fonction ?
Nous en avons dj utilise une... souvenez vous de radianToDegrees(valeur) qui utilisait la
valeur et la convertissait en degrs. Cest a une fonction, cest le fait de prendre une entre ou plusieurs entres (ici la valeur, mais a peut tre des objets, des tableaux...), de faire un certain nombre
doprations avec ces entres, et den resortir (retourner on dit en programmation) quelque chose. Ici
en loccurence, la valeur convertie en degrs.
Il y en a de nombreuses toutes faites et prtes tre utilises dans After Effects, accessible
comme on la vu prcdemment par la bibliothque de fonctions. Chacune est dfinie par son nom,
puis entre parenthses, ses arguments (ce quon doit rentrer). (attention, il y a aussi de simples objets
dans la bibliothque, tout ce qui na rien entre parenthse...).
Nous allons en aborder trois trs utiles titre dexemples.
Wiggle
wiggle(freq, amp, octaves = 1, amp_mult = .5, t = time)
Cest une fonction qui cre une valeur qui varie dans le temps, selon une certaine frquence
et une certaine amplitude. On distingue deux types darguments : les obligatoires (freq et amp) et les
optionnels (les autres, reprables au signe =). Cest dire que dans lusage le plus courant de la
fonction, crire par exemple wiggle(15,20) est suffisant, les autres arguments sont remplacs par
ceux par dfaut. Cest donc exactement quivalent wiggle(15,20,1,.5,time).
Pour tester, essayez sur la position dun calque. On constate en passant que le type de valeur
que cre le wiggle est bien un tableau deux dimensions, puisque a fonctionne sur la position. En
fait, le wiggle sadapte la valeur en cours, et la variation se fait autour de la valeur existante.
freq : cest la frquence, en Hertz, autrement dit en nombre de changements par secondes,
laquelle la variation de valeur se fait. La vitesse du wiggle en quelque sorte.
amp : cest lamplitude du wiggle, sa force.
octave : cette valeur permet de rendre le wiggle fractal. Cest dire, plus simplement, de mettre un wiggle sur le wiggle. La valeur par dfaut 1, fait une variation correspondant la frquence et
lamplitude des deux premiers arguments, la valeur 2 ajoute par dessus une variation a une frquence
deux fois plus leve et une amplitude multiplie par le quatrime argument, amp_mult.
amp_mult : cette valeur doit tre comprise entre 0 et 1, cest le multiplicateur de lamplitude des
wiggles supplmentaires dfinis par loctave.
t : cette valeur dfinit comment le wiggle est gr dans le temps. La valeur par dfaut, time,
permet dutiliser le droulement logique de la timeline. Si lon entre une constante, le wiggle ne se
fait plus (il faut que cette valeur varie dans le temps). Si lon met par exemple time*2 ca revient
doubler la frquence. Si lon met time+2, a dcalle le wiggle de deux secondes dans le temps.

2009 Nicolas Dufresne - Duduf - http://formations.duduf.fr

Length
length(point1, point2)
Cette fonction nest pas trs complique, mais trs utile. Les deux arguments sont des tableaux
deux ou trois dimensions, reprsentant des coordonnes. La fonction retourne la distance entre les
deux points. Elle permet par exemple de mesurer la distance entre une camra et le point dancrage
dun calque, permettant de faire varier lopacit ou la couleur du calque par rapport sa distance avec
la camra. Essayons, vous verrez quel point cest utile :
- Crez une camra, en position, mettez la valeur de Z 0.
- Crez un solide, mettez le en mode 3D, et mettez le en Z 1000 (ou -1000, suivant dans quel sens
pointe la camra)
- Dans lopacit du solide, mettez cette expression :
distance = length(thisComp.layer(Camera 1).transform.position,transform.position);
if(distance<1000) { distance/10 }
if(distance>1500) { 200-distance/15 }
if(1000<distance && distance<1500) { 100 }
Dplacez votre solide en Z, a se passe de commentaires...
toWorld
toWorld(vec, t = time)
Cette fonction a deux aspects trs utiles... Lun spatial, qui permet de convertir des coordonnes
pour quelles soient absolues, lautre temporel. Un exemple pour comprendre lutilit de la fonction :
- Crez un solide noir, appliquez-y leffet lumire parasite.
- Crez un objet nul.
- Avec une expression, liez le centre de la lumire parasite la position de lobjet nul, puis dplacez
cet objet nul.
- Jusque l, tout va bien. Cest mme pratique. Mais maintenant, crez un deuxime nul, et liez le
premier ce nouveau nul. Ah mince ! Regardez bien la valeur de la position de lobjet nul : elle change
quand vous le liez un autre objet, donc forcment, le centre de la lumire parasite adopte cette
nouvelle valeur ! Mais pourquoi ? Parce que dans After, les coordonnes de position sont donnes
par rapport au parent ! Si il ny a pas de parent, tout va bien, les coordonnes sont par rapport la
composition. Mais si il y a un parent, la position [0,0] se retrouve sur le point dancrage de ce parent... Cest la quintervient notre fonction toWorld. toWorld sutilise de la faon suivante : objet.
toWorld(coordonnes, t = time). Les coordonnes, ce sont les coordonnes ramener en coordonnes absolues. Lobjet, cest lobjet par rapport auquel les coordonnes avant convertion sont traites
(dans notre cas, le deuxime objet nul, parent du premier). Lusage est donc simple :
- Dans le centre de la lumire parasite mettez lexpression :
thisComp.layer(objet nul 2).toWorld(thisComp.layer(objet nul 1).transform.position)

2009 Nicolas Dufresne - Duduf - http://formations.duduf.fr

toWorld sutilise de la faon suivante : objet.toWorld(coordonnes, t = time). Les coordonnes, ce sont les coordonnes ramener en coordonnes absolues. Lobjet, cest lobjet par rapport
auquel les coordonnes avant convertion sont traites (dans notre cas, le deuxime objet nul, parent
du premier). Lusage est donc simple :
- Dans le centre de la lumire parasite mettez lexpression :
thisComp.layer(objet nul 2).toWorld(thisComp.layer(objet nul 1).transform.position)
Maintenant tout fonctionne. Mais il faut avouer que ce nest pas trs pratique... Il faut savoir par
rapport quoi les coordonnes de position sont donnes, ce nest pas forcment vident. Par contre,
les coordonnes dun point dancrage sont toujours donnes par rapport son calque. Donc cest plus
facile de transformer les coordonnes du point dancrage en coordonnes absolu, plus besoin de se
soucier des liens entre les calques. Utilisons maintenant lexpression :
thisComp.layer("objet nul 1").toWorld(thisComp.layer("objet nul 1").transform.anchorPoint) et le tour
est jou !
Quant au deuxime argument, il permet de rcuprer des coordonnes un moment donn
(valeur en secondes). La valeur par dfaut time reprsente linstant courant.
Il y a donc plein de fonctions dans After, mais ne peut-on pas crer les notres ?
La cration de fonction est assez simple : il suffit dutiliser la syntaxe suivante :
function moyenne(argument1,argument2) {
A = argument1 + argument2;
return A/2 ;
}
Le mot return dfinit ce qui sera retourn par la fonction. Ici, le rsultat de lopration A/2.
Et lutilisation de la fonction ainsi cre se fait de la faon suivante :
moyenne(10,12), qui retournera la valeur 11.
Un exemple de fonction utile, revenons nos trois solides de la page 10 :
- Crez trois solides (dune taille plus petite que celle de la compo, pour bien voir leur position)
- Animez la position des deux premiers, et ajoutez lexpression suivante en position sur le troisime :
positionA = thisComp.layer(calque1).transform.position;
positionB = thisComp.layer(calque2).transform.position;
(positionA + positionB) / 2
On pourra remplacer cette expression par la suivante, maintenant quon connait toWorld :
positionA = thisComp.layer("calque1").toWorld(thisComp.layer("calque1").transform.anchorPoint);
positionB = thisComp.layer("calque2").toWorld(thisComp.layer("calque1").transform.anchorPoint);
(positionA + positionB) / 2
Ce qui fera fonctionner lexpression mme si les calques ont des liens. Et en crant une fonction
on pourra encore simplifier cette expression :
function positionAbsolue(calque) {
calque.toWorld(calque.transform.anchorPoint);
}
(positionAbsolue(thisComp.layer("calque1"))+ positionAbsolue(thisComp.layer("calque2"))) / 2
Ce qui est trs utile si on doit manipuler de nombreux calques...

2009 Nicolas Dufresne - Duduf - http://formations.duduf.fr

ANNEXE
Liste des oprateurs :
Calcul :
+ addition
- soustraction
/ division
* multiplication
% modulo
= affectation

Affectation :

Comparaison :

+= addition
-= soustraction
/= division
*= multiplication
%= modulo

< strictement infrieur


> strictement suprieur
<= infrieur
>= suprieur
== galit
!= diffrence

Incrmentation :
++ addition
-- soustraction

Logiques :
|| ou
&& et
! ngation

Classement de ces oprateurs par priorit


priorit maximale
()
-*
+
<
==
&&
=

[]
++
/
>
!=
||
+=

!
%
<=

>=

-=

*=

/=

%=

,
priorit minimale

2009 Nicolas Dufresne - Duduf - http://formations.duduf.fr