Boucle et expressions¶
Avertissement
Attention : vérifiez bien si votre cible pour l’export supporte bien les expressions, et si ce n’est pas le cas, pensez à les transformer en images clés !
contexte¶
Ici nous allons considérer que nous travaillons sur une boucle de 3 secondes.
Nous avons donc :
Nom | Valeur/étendue |
---|---|
time | [0→3] |
thisComp.duration | 3 |
Nous souhaitons utiliser la fonction Math.sin()
afin d’obtenir une oscillation régulière.
Rappel sur Math.sin()¶
La fonction Math.sin() effectue une boucle tous les 2 * PI :
Nous devons donc fournir une étendu égale à 2PI pour obtenir une valeur bouclant parfaitement entre -1 et 1.
étape 1 : obtenir une valeur de 0 à 1¶
Pour commencer, nous allons essayer d’obtenir une valeur allant de 0 à 1 au fur et à mesure du déroulement de time
.
Pour cela effectuons un premier calcul : time
/ thisComp.duration
.
On obtiens les courbes suivantes :
- en bleu
time
, de 0 àthisComp.duration
- en bordeau
time
/thisComp.duration
, de 0 à 1
On obtient ici une valeur de 0 à 1, mais qui ne boucle pas.
étape 2 : obtenir une boucle¶
Il est maintenant facile d’obtenir une valeur de [0-2PI] : on multiplie le calcul précédent par 2PI :
- en bleu
time
, de 0 àthisComp.duration
- en bordeau
time / thisComp.duration
, de 0 à 1 - en jaune
time
/thisComp.duration
*Math.PI
*2
, de 0 à 2PI
Ce qui nous donne une fois passé par la fonction Math.sin()
:
- en bleu
time
, de 0 àthisComp.duration
- en bordeau
time / thisComp.duration
, de 0 à 1 - en jaune
time / thisComp.duration * Math.PI * 2
, de 0 à 2PI - en vert
Math.sin( time / thisComp.duration * Math.PI * 2 )
étape 3 : nombre de boucles¶
Nous avons donc ici une oscillation par thisComp.duration
.
Mais si l’on souhaite deux, trois oscillations ?
On multiplie tout simplement 2PI par 2, 3 etc…
Exemple ici où l’on multiplie 2PI par 3 :
- en bleu
time
, de 0 àthisComp.duration
- en bordeau
time / thisComp.duration
, de 0 à 1 - en jaune
time / thisComp.duration * Math.PI * 2 * 3
, de 0 à 2PI - en vert
Math.sin( time / thisComp.duration * Math.PI * 2 * 3)
étape 4 : étendue¶
Maintenant, on peut se dire qu’une variation de -1 à 1 pixels ne vont pas donner grand chose sur After Effects… Il faut encore effectuer quelques calculs.
De [-1→1] à [0→1]¶
Si l’on veut une oscillation de [0→1], on prend [-1→1] à quoi on ajoute un pour obtenir [0→2] et l’on divise par 2 pour obtenir [0→1]
étendue de base | opération | résultat |
---|---|---|
[-1→1] | +1 | [0→2] |
[0→2] | / 2 | [0→1] |
- en bleu :
Math.sin( time / thisComp.duration * 2 * Math.PI * 3 )
- en bordeau :
1 + Math.sin( time / thisComp.duration * 2 * Math.PI * 3 )
- en jaune :
(1 + Math.sin( time / thisComp.duration * 2 * Math.PI * 3 )) / 2
Un peu plus loin¶
Il est aussi possible de composer des fonctions à l’aide de plusieurs sinusoïdes.
Par exemple cette boucle :
La même avec ses composantes :