Particles
Smoke, sparks, dust, and grass from a single efficient emitter: start from a preset, then tune count, color, motion, and glow.
Open in the interactive manual →The interactive version has full-text search, a table of contents, and light/dark themes.
A particle emitter sprays out a cloud of little points: smoke, sparks, embers, dust, grass. Each emitter is efficient (one draw call no matter how many particles, up to 5,000 each), so you can sprinkle atmosphere liberally.
Adding an emitter
Either Create ▸ Particles for a blank emitter, or Create ▸ Particle presets to drop in a ready-made effect:
| Preset | Effect |
|---|---|
| Dirt cloud | Brown debris settling like kicked-up dust. |
| Sparks | Glowing sparks shooting up with trails. |
| Glass shards | White-blue shards scattering outward fast. |
| Weeds · Grass tufts · Grass ribbons | Rooted grass that sways in a breeze. See Grass, weeds & breeze. |
| Ink drops | Two overlapping panes of watercolor drops blooming and drying: multiply-blended ink on paper. |
| Ink drops on a surface | The same drops splattered over a model's skin. Pick an object under Surface. |
| Smoke wisp | Soft grey haze drifting slowly upward. |
Tuned an emitter just right? Click Save as preset… in Properties to keep it in your own library.
The emitter controls
Select an emitter and open the Particles section in Properties:
| Control | Does |
|---|---|
| Motion | Free (emit & drift), or the two grass modes. |
| Emitter shape | Point, Sphere (with a radius), Box (with X/Y/Z size), or Surface of another object, where particles are born. |
| Count | How many particles (up to 5,000). |
| Lifetime | Seconds before a particle respawns. |
| Speed · Spread | Launch speed, and how tightly aimed (0 = a straight beam, 1 = a full sphere). |
| Gravity | Vertical pull: negative falls, positive rises. |
| Size · Size over life | Particle size, and whether it grows or shrinks as it ages. Both apply per particle, so an ageing cloud is a mix of sizes rather than one size stepping together. |
| Start / End color | Color fades from spawn to death. |
| Opacity · Blending · Glow | Transparency, a 0–4 glow boost, and the five blend modes: Normal, Additive (glow), Multiply (ink), Screen (haze), Subtract (burn). |
Extras
- Autoplay: uncheck to freeze the cloud so you can position it.
- Fade in / Fade out: seconds each particle takes to bloom up from transparent at birth and dissolve out before it dies, so motes appear and vanish instead of popping. 0 on either means an instant on/off.
- Variance: random ± wobble on speed, size, lifetime, and hue so the cloud isn't uniform, plus a Rotation spread (0–360°) that gives every particle its own random facing. Rotation only shows on a sprite texture (the default round mote looks the same at any angle), but on a flipbook it's the difference between a cloud and one sprite stamped N times.
- Tracer Lines: give each particle a fading trail.
- Texture (sprite): swap the soft dot for your own alpha PNG, and optionally play it as an animated sheet (below).
The same cloud every visit
An emitter's randomness (where each particle spawns, and its Variance wobble on speed, size, lifetime and hue) is derived from the emitter's own node id. Two people opening your published page, or one person reloading it, see the same cloud, so a page keeps looking like itself. Two emitters in one scene still scatter differently, because their ids differ.
Particles also honour reduced motion. A visitor whose system asks for less motion (or any visitor, if you've turned on the scene's own reduce-motion toggle) gets the cloud held still, exactly as if Autoplay were off: full variance and shape, no drift. Everything else on the page keeps working normally. If you are building something where the motion is the content, it's worth checking that look, because for those visitors it's the only one they get.
Spawning particles on a model
Set Emitter shape to Surface of another object and pick a shape or model under Spawn on. Instead of appearing inside an invisible box, every particle is born somewhere on that object's actual surface, spread by area, so a big flat back gets its share and a densely-modelled face doesn't hog the cloud.
It keeps up with the object too: move, rotate, scale or animate the model and the particles keep leaving the surface where the surface now is. Sweat off a fighter mid-swing, steam off a roof, embers off a fire pit, dust off terrain, ink flicked off a brush.
| Control | Does |
|---|---|
| Spawn on | Which object's surface to use: a primitive or an imported model. Until you pick one, the emitter behaves like a Point. |
| Stay on the surface | Keeps the particles on the model instead of throwing them off it. See Crawling across the surface below. |
| Follow surface | 1 = each particle flies straight off the face it was born on (so a shoulder throws upward and a jaw throws sideways). 0 = ignore the shape and use the emitter's own upward cone. Spread still widens the cone either way. (Hidden while Stay on the surface is ticked: there's no launch direction left to aim.) |
| Lift off surface | Metres to nudge each particle out along the surface before it launches: a hair of lift stops flat sprites from fighting with the skin underneath. |
| Hide the object, keep the particles | The model stops drawing in the published scene but keeps feeding the emitter, an effect shaped like an object that isn't there. In the editor it reappears whenever it's selected, so you can still move it. |
Crawling across the surface
Tick Stay on the surface (crawl across it) and the particles stop being thrown off the model: they travel over its faces and never leave. Ink or paint running down a figure, moss and rust creeping over a shape, fireflies hugging terrain, energy tracing a model's skin.
Two familiar controls change meaning in this mode:
- Gravity no longer pulls particles off the model: it runs them downhill along it. Set it to 0 for an even wander in every direction.
- Speed is how fast they crawl, and Spread is how much that speed varies between particles.
Animated sprites
Open Sprite Texture in Properties and pick an image from the Asset Library. If that image is a spritesheet (a grid of animation frames), say so and every particle plays the animation on its own schedule, so a field of watercolour drops blooms and fades naturally instead of flickering in unison.
| Field | What it is |
|---|---|
| Columns · Rows | The cell grid in the image, up to 64 each. Leave both at 1 for a plain single-image sprite. |
| Frames | How many cells are real frames: a 60-frame clip in an 8×8 grid leaves 4 blank. 0 uses every cell. |
| Playback ▸ Once over lifetime | The sheet finishes exactly as the particle dies, so Lifetime retimes the animation and there's no frame rate to keep in step. |
| Playback ▸ Loop at a set rate | Runs continuously at a Frame rate you set (up to 120), each particle starting at a random point in the sheet. |
| Hold on frame | Only under Once over lifetime. 0 stretches the whole sheet across the lifetime. Point it at the sheet's peak frame instead and each particle plays in to that frame, sits there for whatever lifetime is left over, then plays out to land exactly on death. |
| Intro/outro fps | Appears once a hold frame is set: the rate the run-in and run-out play at. Without a hold there's nothing to set, because the rate simply is frames ÷ lifetime. If the lifetime can't fit intro + outro at this rate, the sheet falls back to stretching rather than clipping the outro. |
A hold frame is what turns a one-shot bloom into a drop. Stretched across a lifetime, a watercolour splash is faint for most of its frames and at full strength for an instant, so a cloud of them reads as specks winking on and off; holding the peak keeps every drop visible for as long as you want it.
To build a sheet from a video clip, tile its frames into one PNG, for example ffmpeg -i clip.webm -vf "scale=128:128,tile=8x8" -frames:v 1 sheet.png. Keep the cells small: an 8×8 grid of 128px cells is a 1024×1024 image, and sprite sheets now count toward the Textures band of scene weight (once per image, however many emitters share it).
Cut the art out properly, too. Every blend mode works off the sprite's alpha, so a sheet whose background is genuinely opaque draws as a solid square of its whole cell and no mode can hide it.
This is the per-particle cousin of a material's animated texture map. Use that one when you want a whole surface to scroll or flip.