3dCMS Knowledge Base
Open the editor
Effects & Atmosphere

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:

PresetEffect
Dirt cloudBrown debris settling like kicked-up dust.
SparksGlowing sparks shooting up with trails.
Glass shardsWhite-blue shards scattering outward fast.
Weeds · Grass tufts · Grass ribbonsRooted grass that sways in a breeze. See Grass, weeds & breeze.
Ink dropsTwo overlapping panes of watercolor drops blooming and drying: multiply-blended ink on paper.
Ink drops on a surfaceThe same drops splattered over a model's skin. Pick an object under Surface.
Smoke wispSoft grey haze drifting slowly upward.
The Ink drops presets are two emitters each, and they bring their own sprites. The look comes from two different droplet sheets in different blues overlapping, so both presets drop in a pair (grouped, one undo) and the Properties dropdown labels them (2 emitters). The two watercolor flipbooks come from the public library: applying the preset copies them into your own library and wires one to each pane, already configured as an 8×8, 60-frame sheet that blooms in, holds at peak wetness, then dries. The emitters appear instantly and the sprites land a moment later, and if the copy can't be made (you're offline, or your library is full) you get exactly what the preset used to give everyone: the right settings and no sprite, ready for you to pick one under Sprite Texture. A pane where you've already chosen a sheet is never overwritten.

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:

ControlDoes
MotionFree (emit & drift), or the two grass modes.
Emitter shapePoint, Sphere (with a radius), Box (with X/Y/Z size), or Surface of another object, where particles are born.
CountHow many particles (up to 5,000).
LifetimeSeconds before a particle respawns.
Speed · SpreadLaunch speed, and how tightly aimed (0 = a straight beam, 1 = a full sphere).
GravityVertical pull: negative falls, positive rises.
Size · Size over lifeParticle 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 colorColor fades from spawn to death.
Opacity · Blending · GlowTransparency, 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.

ControlDoes
Spawn onWhich object's surface to use: a primitive or an imported model. Until you pick one, the emitter behaves like a Point.
Stay on the surfaceKeeps the particles on the model instead of throwing them off it. See Crawling across the surface below.
Follow surface1 = 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 surfaceMetres 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 particlesThe 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.
Tip. Grass modes root every blade to their own patch of ground, so Surface is only available on Free motion.

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.
Crawling costs more than an ordinary emitter Every crawling particle has to be pinned back to the nearest face on every frame, so this is the one particle setting that can move your frame rate on a phone, and it isn't counted in scene weight, so the meter won't warn you. For dense coverage, put a plain surface layer underneath for the static splatter (Speed 0, a low Follow surface) and keep the crawling layer on top to a few hundred particles. And when you turn crawl off on a layer, reset Speed, Gravity and Spread as well: the same gravity that ran downhill now rains the particles onto the floor.

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.

FieldWhat it is
Columns · RowsThe cell grid in the image, up to 64 each. Leave both at 1 for a plain single-image sprite.
FramesHow many cells are real frames: a 60-frame clip in an 8×8 grid leaves 4 blank. 0 uses every cell.
Playback ▸ Once over lifetimeThe 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 rateRuns continuously at a Frame rate you set (up to 120), each particle starting at a random point in the sheet.
Hold on frameOnly 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 fpsAppears 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.

Glow = instant magic Set Blending to Additive and push Glow up, and even a handful of particles read as fireflies, embers, or magic dust. Glow above 0 forces additive on a Normal emitter, but it leaves Multiply, Screen and Subtract alone, so those stay yours.
Spotted something off, or want a topic covered? Email hello@3dcms.info.