Digital Artists

Pyro From Zero: Source, Solve, Render, and the Four Settings That Matter

Smoke simulation has about forty parameters and four of them decide whether your sim looks good. Here is which, plus why your first attempt is a grey blob.

Smoke is the simulation most people try second, after rigid bodies, and it is the one that most often produces something technically correct and visually dead. The solver works; the defaults are conservative; the result is a grey cloud rising slowly.

Nodeconnector’s hour-long beginner guide, which covers the full pipeline properly.

The pipeline

Three stages, and almost all confusion comes from not knowing which stage a problem is in.

1. Source. Convert geometry into density and temperature volumes. A sphere becomes a region of smoke-emitting space.

2. Solve. The Pyro Solver advances those fields through time — advection, buoyancy, dissipation, turbulence, pressure projection.

3. Render. Shade the resulting density volume and light it.

If your smoke is the wrong shape, it is a source problem. If it moves wrong, it is a solve problem. If it looks grey and flat, it is a render problem. Diagnosing which saves hours, and most beginners try to fix a render problem in the solver.

The minimum setup

In Houdini, select your emitter geometry and use the Pyro shelf tool (or build it: Volume Rasterize Attributes → Pyro Solver in a DOP network, or the SOP-level Pyro Solver in recent versions).

That gets you smoke. Now the settings.

Voxel size is the one that governs everything

This is the single most important number in any volume simulation, and it is the first thing to understand.

Voxel size determines your detail, your memory and your time. Everything you can see in a smoke sim is resolved on the voxel grid, so the finest curl you can get is a few voxels across.

And the cost scaling is brutal: a volume is three-dimensional, so halving voxel size multiplies voxel count by eight. Simulation time scales worse than that, because smaller voxels also require smaller timesteps for stability.

The workflow consequence is the important bit: work coarse, then refine. Set a voxel size four to eight times larger than your final target while you are establishing the motion, the shape and the timing. Only when the behaviour is right do you reduce it. People routinely waste a day simulating at final resolution while still deciding what the shot is.

Rule of thumb: your emitter should be at least 10–15 voxels across. Fewer than that and the source is unresolved and the sim will look mushy no matter what else you do.

The other three

Dissipation — how fast density disappears. The default is usually low, which is why beginner smoke fills the container and stays forever. Raise it and smoke fades as it rises, which is both more realistic and vastly more legible. This single parameter does more for how a sim reads than any other.

Buoyancy / temperature — how strongly hot gas rises. Smoke needs temperature to rise at all; if yours sits still, check you are sourcing temperature and not only density. Too much buoyancy gives you a thin fast column; too little gives you a spreading pool.

Turbulence / disturbance — the small-scale detail. This is where the characteristic curl comes from, and it is also where sims go wrong: too much turbulence destroys the large-scale shape, giving you noise instead of smoke. Add it last, sparingly, after the gross motion is right.

Directing smoke, which is the real skill

The solver’s job is fluid dynamics. Your job is composition, and they conflict. Three levels of control:

Collisions. Put geometry in the way. The simplest and most physical form of art direction.

Wind and forces. A uniform wind, a vortex force, a point attractor. Easy, and limited to broad gestures.

A velocity field, which is the real tool. Author a volume of velocity vectors and feed it to the solver. This is how you make smoke follow a shape, trace a path, or form a word.

And the critical detail, which we covered today in Karlis Stigis’ looping smoke bursts: set the velocity source operation to Copy, not Add. Add lets the solver’s own advection progressively overwhelm your authored direction within a few frames. Copy overwrites the velocity in the sourced region every substep, continually reinforcing your paths. It is authoritarian and it is the only thing that actually works for directed smoke.

Render: why your smoke is grey

Three fixes, in order of impact:

Light it properly. Volumes are lit by scattering, and smoke’s appearance is almost entirely about the light. A single flat key light gives you a grey blob. A strong backlight or rim gives you depth, because you see light scattering through the volume. Backlight your smoke — it is the single biggest improvement available.

Raise the density scale and look at the shadows. Volumes self-shadow, and that self-shadowing is what makes smoke read as thick. Too little density and it looks like fog; too much and it is an opaque lump.

Render density, not just the default. Export temperature and use it to drive emission if you want fire, or use it to tint the smoke. A single-channel grey volume cannot look like anything else.

Three practical habits

Cache to disk before you render. Write the volumes out as .bgeo.sc or VDB sequences. Re-simulating because you changed a shader is the most common waste of time in this work, and a cached sim also lets you scrub the timeline at speed.

Check your container. Smoke hitting the boundary of the simulation volume flattens against it and looks instantly wrong. Either enlarge the container or let it expand automatically.

And watch the substeps. If your sim is unstable, flickering or losing density, raising substeps is usually the fix — and it is also the most expensive one, so check voxel size and velocity magnitude first.

If the node names here are unfamiliar, our Houdini primer covers the contexts and the graph model.