Du hasard, mais lissé
Un bruit purement aléatoire — une valeur indépendante en chaque point — est inexploitable pour de l'animation : il « grésille ». Le bruit de Perlin, et sa variante que j'utilise ici, le value noise, résolvent ce problème. Je ne tire des valeurs pseudo-aléatoires que sur les nœuds d'un réseau entier, puis j'interpole entre eux avec une courbe d'adoucissement. Résultat : un champ continu et lisse, aléatoire à grande échelle mais parfaitement régulier de proche en proche. Le tout est déterministe : une graine, toujours le même relief.
Une troisième dimension pour le temps
Un champ figé serait vite ennuyeux. J'échantillonne donc le bruit non pas en deux dimensions mais en trois : les deux coordonnées de la particule, et le temps comme troisième axe. En faisant avancer très lentement cette coordonnée temporelle, le relief se déforme en douceur — les tourbillons naissent, dérivent et se dissolvent au lieu de rester gravés. La même interpolation qui lisse l'espace lisse aussi le temps : aucune saccade.
Du bruit au champ de vecteurs
Le bruit me donne, en chaque point, un nombre. Je le convertis en angle, et cet angle définit un vecteur unitaire : une direction à suivre. Répété sur tout le plan, cela dessine un champ de vecteurs — une carte invisible de courants. Parce que le bruit sous-jacent est continu, deux points voisins pointent dans des directions voisines : les lignes de courant s'enchaînent sans rupture.
Des milliers de particules qui suivent le courant
Je lâche alors quelques milliers de particules dans ce champ. À chaque image, chacune lit l'angle du champ à sa position et avance d'un pas dans cette direction. Aucune ne connaît les autres : c'est l'échantillonnage d'un même champ partagé qui crée les faisceaux cohérents que l'on voit se former. Quand une particule sort du cadre — ou après une courte durée de vie tirée au hasard — elle réapparaît ailleurs, ce qui garde l'ensemble vivant et évite que tout le monde s'agglutine au même attracteur. La souris, elle, repousse localement les particules et déforme le motif sous le curseur.
L'art génératif : peindre avec le temps
La beauté du rendu ne vient pas d'une image dessinée d'un coup, mais de l'accumulation. Plutôt que d'effacer le canvas à chaque image, je le recouvre d'un voile sombre à très faible opacité : les tracés anciens s'estompent lentement au lieu de disparaître, et chaque particule laisse une traînée. Le dégradé ambre → indigo est indexé sur la direction du champ, si bien que la couleur raconte l'orientation des courants. On ne compose pas l'image : on règle un système et on le laisse peindre.
Ce que cette démo dit de ma façon de travailler
Derrière l'esthétique, il n'y a que des briques maîtrisées : un générateur pseudo-aléatoire déterministe, une fonction de bruit écrite à la main, une boucle de rendu indépendante du framerate. C'est exactement ma manière d'aborder un projet sérieux — comprendre le mécanisme de fond plutôt qu'empiler des dépendances, contrôler chaque paramètre, et livrer un système clair, reproductible et que vous pouvez faire évoluer en toute autonomie.