Expressions/Aléatoire/Tremblement
Il existe deux principales méthodes pour obtenir de l'aléatoire dans une animation: la méthode
wiggle()
traitée dans cette partie et la méthode
random()
qui fera l'objet de la partie suivante. On a rapidement évoqué
dans l'introduction la méthode wiggle()
avec une instruction du type
La méthode wiggle()
agit comme un tremblement de la valeur de la
propriété, un tremblement autour de sa valeur initiale. L'expression précédente appliquée sur
l'opacité, qui serait de 50 initialement, ferait varier l'opacité entre 0 et 100 avec une fréquence
de 2 tremblements par seconde. Plus la fréquence sera grande, plus le tremblement sera rapide.
Le deuxième argument désigne l'amplitude du tremblement.
Pour se fixer les idées, on crée un solide sur lequel on applique successivement l'expression précédente sur les différentes propriétés du calque (pour l'opacité on a initialisé sa valeur à 50 pour avoir un effet en permanence visible).

Barre-graphe
À titre d'exemple on va chercher à reproduire un petit barre-graphe au comportement aléatoire. On commence par créer un solide qui fera office d'une seule barre. Pour cet exemple on travaille avec une composition de taille 320x150 et un solide de taille 3x80. On écrit l'expression suivante sur la propriété de position, cette expression va permettre, en dupliquant le calque, de faire apparaître les nouveaux calques décalés de quelques pixels à chaque duplication
dec = 10; // décalage entre 2 barres, en pixels position + [(index - 1) * dec,0];
Ainsi lorsque l'index du calque va augmenter, sa position sur
l'axe horizontal (première composante) va également augmenter (d'une quantité de
dec
pixels vers la droite). On a écrit index - 1
pour ne pas décaler le premier calque, et on le positionne manuellement sans que sa position soit
affectée par l'expression (on rappelle l'index du premier calque est égal à 1).
On ajoute une deuxième expression mais cette fois sur la propriété d'échelle. On souhaite que les
barres augmentent puis diminuent leur taille verticale. On utilise l'expression suivante
wiggle()
pour le réaliser
freq = 5; // nb de tremblements par seconde ampl = 70; // amplitude en pixels [100,wiggle(freq,ampl)[1]];
La méthode wiggle()
retourne une valeur qui est de même dimension que
celle de la propriété sur laquelle l'expression est appliquée. Ici, la valeur produite par
wiggle()
est de dimension 2. Or dans l'exemple on souhaite n'avoir qu'un
tremblement vertical des barres, c'est pour cela que la première composante reste fixe (la largeur
des barres ne variera pas) et que l'on récupère seulement la valeur du tremblement vertical représentée
par wiggle(...)[1]
.
Pour finir on ajoute une expression similaire sur l'opacité pour donner un côté plus vivant à l'animation
(on règle l'opacité initiale à 50%). La différence par rapport à l'expression précédente est le fait
qu'ici on applique l'expression sur une propriété de dimension 1, et l'on peut donc directement utiliser
la valeur fournie par wiggle()
comme le montre l'expression ci-dessous
freq = 5; // nb de tremblements par seconde op = 50; // amplitude en pourcentage wiggle(freq,op);
On positionne maintenant le calque en bordure gauche de la composition et on le duplique autant de fois que l'on souhaite. La prévisualisation ressemble à cela

Remarque
Il est souvent pratique de créer des "Paramètres glissières" pour les paramètres de fréquence et
d'amplitude de la méthode wiggle()
(voir section suivante). Cela permet entre
autre de pouvoir contrôler le tremblement par l'intermédiaire d'images clés sur ces "Paramètres glissières",
et par exemple de choisir de n'avoir un tremblement qu'à certains instants de l'animation.