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

wiggle(2,50);

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.