Flow fields and particle streams
A flow field steers thousands of short-lived particles with a vector field—curl noise, wind, gravity, viscosity, and clickable attractors, repellers, and vortices.
What is a flow field?
A flow field assigns a direction (and often strength) to every point in space. Particles sample that vector each frame, so streams curve like smoke, rivers, fingerprints, or galaxies instead of bouncing randomly.
Noise, wind, and forces
PictorX builds a Perlin-ish curl field, then layers wind, gravity, and viscosity. Click or drag to place attractors, repellers, or vortices. Trail fade paints motion history on the canvas without storing every past frame.
Presets to start from
Smoke Drift, River Flow, Fingerprint Field, Hair Flow, Galaxy Swirl, Neon Trails, and Chaos Mode each lock particle count, trail, turbulence, and wind so you can explore looks before fine-tuning.
Try Flow Field in PictorX
Open /flow-field, pick a Look, place forces, animate, Pause or Resume, Randomize for fresh settings, then Save a PNG or Edit in the photo editor. Nothing is uploaded.
Frequently asked questions
Is this the same as a particle fountain?
Related, but a flow field steers particles with a continuous vector field rather than only emitting from a point with simple gravity.
Does PictorX upload my photo?
No. Flow Field runs entirely in the browser canvas. Saved images stay on your device unless you open them in the editor.
Why do trails wash out or pile up?
Trail fade controls how quickly prior frames dim. Very low fade leaves long neon trails; higher fade resets the canvas faster. Adjust viscosity and particle lifespan too.
What does Pause do?
When Animate is on, Pause freezes the simulation without turning Animate off—Resume continues from the same state. Randomize also leaves Animate and Pause unchanged.
How many particles can I run?
v1 targets roughly 3k–8k particles on a 2D canvas. Lower the count on slower devices if the frame rate drops.
Ready to try it?
Open PictorX in your browser — no install, no credit card required to start.
Try Flow Field