Aide pour After Effect, techniques, expressions.

vendredi 4 janvier 2008

EXPRESSIONS : random

RANDOM. En anglais, cela signifie hasard. Cette fonction va nous permettre de creer un ou plusieurs chiffres complètement au hasard. Plongeons nous dans le concret:

On crée une composition de 600 x 400, on fait un solide de 50 x 50, on ouvre sa position, et ecrit ça:
X=random ( 0 , 600 );
Y=random ( 0 , 400 );
[ X , Y ]

Lançons l'animation; a chaque image le calque se place à une position différente.
X=random ( 0 , 600 ); cette ligne demande donc à ce que X varie entre 0 et 600.

Voilà les autres possibilités:
random ( [0,0,0 ] , [0,3,5 ] ) : cela va donc creer une variable à 3 dimensions fluctuant entre les deux valeurs. A noter que lorsqu'une des "extrémités" est égale à 0, on peut ne pas la noter:
random ( [0,3,5] ) correspond à la meme ligne que la précédente.

random ( ) : la valeur fluctue de 0 à 1.

Un point important: dupliquez ce calque, et lancez l'animation. Le clone n'a pas la meme position que l'original:
random creer une valeur différente pour chaque calque.

A présent, imaginons qu'on veuille une valeur au hasard, mais fixe; on ne veut pas que la valeur change à chaque image. Nous devons rajouter une ligne:

seedRandom ( 5,true );

Oula, qu'est ce que c'est que ce truc immonde qui ressemble à de la programmation !!!
On se calme, et on regarde. La fonction seedRandom est à intégrer avant la fonction random, car c'est elle qui demande à ce que le random soit fixe ou pas.

( 5 , true ) :
le chiffre 5 a été bien evidemment choisi au hasard ici. Imaginez que la fonction random possède une liste infinie de suites de chiffres. Le chiffre 5 appel donc la liste numero 5.
En gros, ça veut dire que si vous remplacez 5 par 8, la fonction random crachera d'autres chiffres aux hasard. Remettez 5, vous retrouvez les memes chiffres qu'auparavant.
true : il demande à ce que la prochaine ligne "random" soit une valeur fixe.

donc si vous écrivez ceci:
seedRandom ( 5,true );
X=random (0,600);
Y=random (0,400);
[X,Y]

Notre calque prend bien une position au hasard, mais s'y tient. Dupliquez le calque, la copie est ailleurs.

Dans le cas d'un random non fixe, il faut bien comprendre la différence avec wiggle: random crée une valeur différente pour chaque image sans aucun lien avec la valeur sur l'image précédente, alors que wiggle crée 'une courbe" de valeur aléatoire.

13 commentaires:

  1. j'avais laissé un commentaire afin de vous demander comment vous nommiez le paramètre glissiére, j'ai trouvé, il suffisait de taper sur entrée...
    merci pour vos explications, je fais suis maintenant les mouches ...passionnant, bravo encore... et merci mille fois.

    RépondreSupprimer
  2. Bonjour monsieur saucisse.
    Un grand merci pour cette excellente approche des expressions dans After!
    Je voulais savoir comment faire pour que le random ne soit pas different pour chaque frame et ainsi avoir un tremblement moins violent?

    RépondreSupprimer
  3. Bonjour Tigrelab.
    Tu trouveras la réponse dans le dernier article :

    http://lefreelancesaucisse.blogspot.com/2010/03/random-vs-wiggle.html

    RépondreSupprimer
  4. Bonjour mr saucisse

    Je voulais savoir si il était possible de gerer la vitesse du random ?

    RépondreSupprimer
  5. Le random crée une valeur aléatoire par image, sans aucun lien avec la précédente. Il n'y a donc pas de notion de vitesse. Si l'on veut avoir une valeur qui varie dans le temps plus ou moins vite, il faut utiliser le wiggle.

    RépondreSupprimer
  6. Pour avoir une valeur aléatoire toutes les x images, on peut ajouter posterizeTime() au tout début. Entre parenthèse on entre le chiffre qui correspond au nombre de changement de valeur par seconde.

    RépondreSupprimer
  7. Je comprends pas bien à quoi sert le 'true', le 5 aussi impose une valeur fixe à la prochaine ligne random, non?

    RépondreSupprimer
  8. Je crois que tout est expliqué dans le post...

    RépondreSupprimer
  9. Ok, je crois que j'ai compris mais je suis pas sur. Si on écrit juste seedRandom (5); au lieu de seedRandom(5,true); ça fonctionne pas c'est ça?
    Desolé si je fais le boulet mais je veux être sur d'avoir compris.

    RépondreSupprimer
  10. la meilleure solution :
    essaye, tu verras bien ce qu'il se passe.

    RépondreSupprimer
  11. Bonjour, j'ai une petite question. La fonction seedrandom ne "synchronise" que les wiggles ? En effet, je voudrais avoir les mêmes valeurs aléatoires sur différentes expression en utilisant seedrandom(x) + random(), mais quand je fais ça, les valeurs ne se "synchronisent" pas que ce soit sur des calques différents ou des propriétés du même calque. Je dois mal m'y prendre, mais est-ce possible ?

    RépondreSupprimer
  12. La fonction "seedRandom' synchronise également la fonction random, mais de façon différente.
    Si les wiggles peuvent en effet être les mêmes sur plusieurs calques avec seedRandom, pour random, même si le seedRandom est le même, une valeur aléatoire est appliquée pour chaque calque. En gros, la liste aléatoire est la même, mais elle est prise avec un décalage pour chaque calque.
    Donc si on veut avoir une même valeur aléatoire pour plusieurs calques, il faut la créer à part, et que chaque calque viennent la piocher.
    J'espere être clair.

    RépondreSupprimer