Aide pour After Effect, techniques, expressions.

vendredi 21 décembre 2007

EXPRESSIONS : position rotation ...

position : ce mot fait évidemment référence à la position du calque concerné. Il en va de même pour rotation, scale (échelle), opacity , anchorPoint (point d’ancrage).

Un point important à comprendre : Lorsque l’on utilise ces mots, AE va cherche la valeur correspondante dans le calque en question.

Explication :

Créez un nouveau solide, et ouvrez les transformations dans la timeline (position, rotation…)

Créez une expression pour l’opacité, effacer l’expression écrite (transorm.opacity), cliquez-maintenez sur la spirale, et pointer sur le mot le rotation. Lâchez tout, respirez, et voyons ce qui se passe…







Tout d’abord, notre calque à disparu, en effet, son opacité est égal à 0. Tout comme la valeur de rotation. Faites tourner votre carré de 45 degrés (ou n’importe quelle valeur positive entre 0 et 100), l’opacité est maintenant égale à 45. C’EST MAGIQUE !!!!!

Comme vous l’aurez compris, vous avez demandé à ce que l’opacité soit égale à la valeur de la rotation. A noter qu’AE a écrit transform.rotation. Pourquoi pas juste rotation? Parce que la rotation fait partie des transformations. C’est une sorte de hiérarchie. Toutefois, sachez qu’étant donné la fréquence de ces mots, le transform n’est pas nécessaire.

Comprenez également que l’utilisation de la corde n’est pas obligatoire, il s’agit juste d’un moyen pour qu’AE écrive à votre place une liaison avec une autre valeur.

Effacez l’expression, et écrivez simplement le mot rotation dans l’expression de l’opacité : le résultat est le même. Par défaut, AE va donc chercher la propriété demandée DANS le même calque.

A présent, créer un autre solide, et ouvrez ses transformations dans la timeline.

Effacez le mot rotation, prenez la corde, et attachez la à la propriété rotation de L’AUTRE SOLIDE.

Vous vous retrouvez avec une expression qui ressemble à ça :

thisComp.layer("Rouge sombre uni 1").transform.rotation

oulala quelle horreur !.... Nous vous inquiétez pas, ça n’est rien de compliqué, et comme vous vous en doutez, le principale est que maintenant, l’opacité de votre calque sera égale à la valeur de rotation de l’autre calque.

C’est ici qu’apparait un des principal interet des expressions :

L’interactivité des calques entre eux.

Etant donné que dans AE, tout se fait avec les chiffres (transparence, volume du son, niveau de flou…), on comprend vite qu’on peut lier n’importe quelle valeur avec n’importe qu’elle autre.

Ici, nous avons créé une liaison simplissime, puis qu’on demandait à ce qu’une valeur soit égale à une autre.

Ces liaisons peuvent devenir plus évoluées, en voici quelques exemples :

Cliquez sur le texte de votre expression, et placez vous à la fin. Appuyez sur espace histoire de faire propre, et écrivez *2 . vous vous doutez bien du résultat, la valeur de l’opacité sera égale au double de la rotation (dans une limite de 0 à 100 bien entendu).

Car finalement, aussi longue que soit la ligne thisComp.layer("Rouge sombre uni « ).transform.rotation , il ne s’agit que d’un simple nombre.

La ligne thisComp.layer("Rouge sombre uni 1").transform.rotation * 2 est finalement équivalente à time*2 dans sa complexité/simplicité.

Voyons un moyen pour ranger un peu tout ça. En effet, on se retrouve souvent avec beaucoup de liaisons, et donc beaucoup de ligne.

Voilà ce que l’on peut écrire :

R= thisComp.layer("Rouge sombre uni 1").transform.rotation ;

R*2

Qu’ai-je fait ? Une variable. J’ai dit à AE que R est égal à la rotation de l’autre calque, puis j’ai demandé à ce que la rotation soit égal à R*2. Il s’agit donc exactement de la meme chose, mais en mieux rangé. Prenez immédiatement ce reflexe, car vous serez sinon vite perdu.

J’ai appelé R la rotation. Il s’agit d’un choix complètement libre. Vous pouvez appeler vos variables comme bon vous semble, excepté par les mots existant déjà comme time, rotation… Choisissez bien vos mots pour vous y retrouver, c’est plus pratique. On arrive vite à des expressions à 10 variables, alors si c’est pour avoir R*V/s + (G/T-L), non merci. Utilisez plutôt des mots logiques.

Notez le ; en fin de première ligne. Il indique la fin d’une phrase.

Imaginons à présent un cas :

Créez un solide carré (ou pas), et créez une expression pour la position :

R=rotation ;

[ R*2 , 200 ]





Faites tourner le solide (vers une valeur positive), le carré part à droite en meme temps. Rien de bien compliqué ici, on demande que la position sur X du carré soit égale à 2 fois la valeur de la rotation. La position sur Y est fixe, 200.

Autre possibilité (et enfin le premier cas concret d’utilisation des expressions !!!!)

Effacez toutes les expressions, et créez une autre solide (en gros il vous en faut 2)

Ouvrez les position de chaque solide.

Créez une expression pour un des deux solides, et écrivez ceci :

P=

Puis prenez votre corde préférée, et attachez la à la position de l’autre calque.

Vous Aurez donc quelque chose qui ressemble à ça :

p=thisComp.layer("Rouge sombre uni 1").transform.position;

rajoutez à la fin le ; et allez à la ligne. Rajoutez ceci :

[ p[0] , 200 ]

Maintenant, animez (ou faites juste bouger dans la compo) l’autre calque. Et hop, le 1er calque suit le mouvement, mais en restant sur une ligne horizontale.

Cela est impossible à faire avec une simple liaison parent-enfant.

Mais revenons sur ce que l’on a écrit.

P=thisComp.layer("Rouge sombre uni 1").transform.position;

[p[0],200]

La premiere ligne est simple, elle demande que P soit égal à la position de l’autre calque.

Ensuite, on a la position que l’on désire pour notre calque, à savoir [p[0],200].

Donc apparemment, x est égal à p[0], et y est égale à 200. Y=200, c'est pas compliqué.

Mais qu’elle est ce p[0] ? C’est très simple :

Une position est faite de deux valeurs, x et y. On dit donc que la position est une variable à deux dimensions. L’opacité, la rotation sont des variables à une dimension.

Donc, ce p[0] est donc égal au 1er nombre de p. si on voulait l’autre nombre de p, on aurait écrit p[1]

Si on avait écrit [ p , 200 ] , AE nous aurait gentiment craché à la gueule, car il est important de toujours fournir le bon nombre de valeur. P étant déjà un nombre à deux dimension, [ p , 200 ] n’a pas beaucoup de sens.

De la meme manière, vous ne pouvez pas écrire position dans l'expression d'opacité.

7 commentaires:

  1. mec, merci pour cette clarté

    et au passage, ton "AE vous aurait craché à la gueule" ca m'a bcp fait marrer :)

    RépondreSupprimer
  2. xD Chatton je viens de voir le 'Cracher à la gueule' et je me suis dit qu'il y avait sûrement qurelqu'un qui avait du mettre un commentaire là dessus. Moi aussi ça m'a fait rire
    Il est vrai que Adobe aurait pu sortir un autre son que celui par défaut, il me stresse ... :p

    RépondreSupprimer
  3. Ah, je comprends pourquoi j'ai 6 litres de glaire sur mon clavier à chaque fois que j'essaye d'écrire un script ,lol.

    RépondreSupprimer
  4. Je comprends pas tout. C'est quoi "p"?

    RépondreSupprimer
  5. "p" est le nom de la variable que j'ai créée. c'est complètement arbitraire, j'aurais écrire "popo", "légume", mais en revanche, on ne peut pas utiliser comme nom de variable un mot déjà utilisé par AE, comme position ou rotation.

    RépondreSupprimer
  6. Ok, super merci, ça parait évident une fois que c'est dit.

    RépondreSupprimer
  7. Hello, moi si je ne met pas [P[0],200] donc avec une majuscule, cela ne fonctionne pas :(

    RépondreSupprimer