Liquid✨ Premium

Generative Flow Field

200 particules qui suivent un champ de directions tiré d'un bruit lissé, lequel dérive lentement : le canvas n'est jamais effacé, seulement voilé à 5 % par image, et les particules laissent de longs fils soyeux qui dessinent les lignes du courant — canvas 2D net sur Retina, fils déjà tracés au premier affichage, boucle arrêtée hors écran, image fixe si l'utilisateur réduit les animations. Un algorithme génératif, sans intelligence artificielle.

CanvasNoiseParticules

Mis à jour le

Cet effet fait partie d'Effect.Labs — 840 effets vanilla, une partie gratuite, une partie premium. Liquid comprend 31 effets, dont 6 gratuits. Découvrir la catégorie →

3 exemples d'usage

Conditions du jour — page d'un club de parapente — Generative Flow Field exemple 1

① Conditions du jour — page d'un club de parapente

QuandEn haut, « Vent d'ouest 15 km/h — décollage ouvert » et une pastille verte ; dessous, le cadre où les fils dessinent un écoulement, avec les rafales et le plafond en étiquettes.
PourquoiLes traînées longues dessinent des lignes de courant comme une carte de vent animée ; un essaim de points (Swarm Intelligence) montrerait des groupes d'oiseaux, pas un écoulement.
RéglagesChamp de 540 × 256 px sous un bandeau de 104 px ; teintes de 185 à 220 (cyan à bleu) au lieu de 240 à 300 ; fond et voile rgb(10, 18, 30).
Les grands courants marins — écran mural d'un musée de la mer — Generative Flow Field exemple 2

② Les grands courants marins — écran mural d'un musée de la mer

Quand« Le Gulf Stream transporte 30 millions de m³ d'eau par seconde », en grand, sur un fond de fils qui s'écoulent en plein cadre.
PourquoiLe champ dérive lentement : le motif ne se répète pas pendant la visite et suggère un flux continu, qui est le sujet même de la salle.
RéglagesChamp en plein cadre ; teintes de 190 à 235 ; fond et voile bleu abysse rgb(4, 14, 30) ; légende sur un dégradé qui fonce vers le bas pour rester lisible.
Du cocon au fil — page « Savoir-faire » d'une filature de soie — Generative Flow Field exemple 3

③ Du cocon au fil — page « Savoir-faire » d'une filature de soie

QuandBandeau bleu nuit ; les traînées violettes se croisent comme des fils dévidés, à droite du titre « Du cocon au fil » et des quatre étapes de l'atelier.
PourquoiLes traînées fines et brillantes, qui ne s'effacent que lentement, ressemblent à des fils tendus : la matière même du produit.
RéglagesTeintes d'origine (indigo à magenta) ; fond et voile bleu nuit rgb(11, 16, 48) ; texte dans un panneau de 300 px qui s'estompe vers la droite.

Comment ça marche

Le cadre .fx-0412-root fait 300 px de haut sur toute la largeur ; le canvas s'y cale (display: block, 100 % × 100 %), jamais l'inverse. Sa taille interne vaut la taille affichée multipliée par devicePixelRatio et le dessin se fait en pixels CSS (setTransform) : mesuré à densité 2, 1280 × 600 pour 640 × 300 affichés. Un ResizeObserver suit le cadre ; la hauteur reste à 300 px après 20 redimensionnements de suite (mesuré dans Chromium 151, Firefox 153 et WebKit 26).

Le champ vient d'un bruit de valeur : une valeur pseudo-aléatoire est tirée à chaque nœud d'une grille (fract(sin(12.9898 x + 78.233 y) × 43758.5453)), puis lissée entre les nœuds par une courbe en S. La particule lit ce bruit à sa position × 0,005 (une maille tous les 200 px) et le multiplie par 4π : elle prend cette direction et avance de 0,5 à 2 px par image selon sa vitesse propre. Le temps s'ajoute à la coordonnée verticale du bruit (+0,003 par image) : le champ glisse et se recompose lentement, sans jamais se répéter à l'identique. Une particule qui sort du cadre renaît ailleurs au hasard ; chacune garde sa teinte, entre 240 et 300 (indigo à magenta), en points de 1,5 px.

Les fils naissent du voile : à chaque image, un rectangle rgba(10, 10, 15, 0.05) couvre tout le canvas, si bien qu'un point s'efface en une soixantaine d'images. La couleur du voile est celle du fond, sinon le cadre vire peu à peu à cette couleur. Redimensionner un canvas l'efface : le fond est repeint, les particules hors du nouveau cadre sont replacées, et au premier affichage 40 pas sont rejoués d'un coup pour que les fils soient déjà là. La boucle requestAnimationFrame s'arrête quand un IntersectionObserver voit le canvas sortir de l'écran (mesuré : 0 image par seconde hors écran) et repart à son retour.

Accessibilité

  • Mouvement réduit : sous prefers-reduced-motion: reduce, le script calcule 120 pas sans les montrer et affiche l'image obtenue, des fils figés ; aucune boucle. Mesuré dans les trois moteurs : 0 % de pixels changés en 500 ms, fils visibles sur toute la surface.
  • Rôle décoratif : le canvas ne porte aucune information. Posez votre texte par-dessus sur un fond assez opaque (un dégradé sombre comme dans les exemples) : les fils clairs passent partout et peuvent couper une ligne fine.
  • Mouvement de fond : 20 % des pixels changent en 500 ms, en continu. Sur une page de lecture longue, réservez l'effet à un bandeau ou ralentissez les particules (voir Personnaliser).
  • Vitesse liée à l'écran : tout est compté par image ; sur un écran à 120 Hz, les particules vont deux fois plus vite qu'à 60 Hz.

Compatibilité navigateur

Canvas 2D + 2,7 Ko de JavaScript, aucune dépendance. Mesuré dans Chromium 151, Firefox 153 et WebKit 26 : même champ, mêmes fils, taille interne doublée à densité 2, hauteur stable, boucle à l'arrêt hors écran, image fixe sous mouvement réduit. Coût mesuré par image : 0,2 ms de JavaScript dans Chromium, 2 à 3 ms dans Firefox (sans accélération graphique) ; les 40 pas du premier affichage prennent environ 10 ms dans Chromium et jusqu'à 100 ms dans Firefox, une seule fois. ResizeObserver existe depuis Chrome 64, Firefox 69 et Safari 13.1.

Chrome 74+✓ Complet
Firefox 69+✓ Complet
Safari 13.1+✓ Complet
Edge 79+✓ Complet
Mobile iOS 13.4+✓ Complet
Android Chrome 74+✓ Complet

Sans JavaScript, le cadre reste noir bleuté (#0a0a0f), sans fils. Sans IntersectionObserver, la boucle tourne aussi hors écran ; sans ResizeObserver, le canvas suit le redimensionnement de la fenêtre seulement.

Le code

Structure HTML à coller dans votre page (le CSS + JS sont inclus avec votre achat) :

index.html — structure
<div class="fx-0412-root">
  <div class="ai-flow-field-container">
    <canvas class="ai-flow-canvas" width="393" height="280"></canvas>
  </div>
</div>

Paiement unique, sans abonnement — le code est à toi pour toujours

Personnaliser

Options passées à l'API ou attributs data-* :

Option / propriétéDéfautEffet
Nombre de particules (JS — length: 200) 200 400 donne un tissage plus dense ; le coût par image grandit d'autant. Sous 80, les fils deviennent épars.
Longueur des fils (JS — rgba(10, 10, 15, 0.05)) voile de 5 % par image 0,02 allonge les fils (le cadre se remplit), 0,15 donne de courtes comètes. Gardez la même couleur que le fond de .fx-0412-root et que le #0a0a0f repeint au redimensionnement.
Teintes (JS — hue: 240 + 60 * Math.random()) de 240 à 300 (indigo à magenta) 185 + 35 * Math.random() donne du cyan au bleu ; 30 + 20 * Math.random() des fils dorés. Saturation et clarté dans hsla(…, 80%, 65%, 0.8).
Vitesse (JS — speed: .5 + 1.5 * Math.random()) 0,5 à 2 px par image Divisez par deux pour un courant paresseux, idéal derrière du texte.
Échelle des tourbillons (JS — .005 * n.x, .005 * n.y) 0,005 : une maille du bruit tous les 200 px 0,01 donne des tourbillons deux fois plus serrés, 0,0025 de grandes nappes presque droites.
Dérive du champ (JS — i += .003) 0,003 par image 0 fige le champ (les fils finissent par tracer des lignes fixes), 0,01 le fait changer en quelques secondes.
Hauteur (CSS — .fx-0412-root { height: 300px }) 300 px Le canvas suit ; au premier affichage, les fils sont recalculés pour la nouvelle taille.

FAQ

Non : c'est un bruit de valeur. Une valeur est tirée à chaque nœud de la grille puis lissée entre les nœuds, alors que Perlin tire une pente à chaque nœud. Le rendu est proche ; le bruit de valeur dessine des formes un peu plus carrées, alignées sur la grille. Pour un vrai Perlin ou un simplex, remplacez la fonction qui calcule h par une bibliothèque de bruit : le reste du code ne change pas.
Du voile à 5 %. Un canvas stocke ses couleurs sur 256 niveaux : quand un pixel n'est plus qu'à une dizaine de niveaux du fond, 5 % de l'écart arrondi donnent zéro, et le pixel ne bouge plus. D'anciens fils restent donc visibles à peine plus clairs que le fond. Avec un voile à 0,1, ce reste tombe sous 5 niveaux, au prix de fils deux fois plus courts.
Ici chaque particule suit un champ fixé à l'avance et ignore les autres : on voit un écoulement, des lignes de courant. Dans Swarm Intelligence, chaque point règle sa vitesse sur ses voisins : des groupes se forment, se séparent et virent ensemble. Choisissez le champ de flux pour du vent, de l'eau, des fils ; l'essaim pour des oiseaux, des abeilles, une foule.