Smoke Sim

Simulate smoke and gas motion in a 3D volume.

What it does

Configures an Eulerian gas simulation: smoke, steam or fire rising and dissipating through a 3D grid. Feed it a point cloud, where each point becomes a smoke emitter, or a sampled geometry, and it sets up the simulation grid, emitter behaviour, buoyancy and dissipation. The solve happens in Physics World, which this node's output must feed as its smoke input.

With Auto Domain on, the simulation grid fits itself to the emitters, with padding and extra headroom above for a rising plume. With it off, the domain is placed by hand with Domain Size and Domain Center. Enable Combustion and the same solver becomes a fire sim: fuel ignites past a threshold temperature, burns down over time, and produces heat and soot.

When to use it

ParameterTypeDefaultWhat it does
inputPoints or Geometries—Point cloud (each point becomes a smoke emitter) or geometry to sample
resolutionNumber64Grid resolution (N×N×N voxels)
auto_domainBooleantrueAuto-fit the simulation domain to the emitter points (plus padding and vertical headroom for the rising plume). Turn off to place the domain manually.
domain_sizeNumber200Domain size in world units (manual — used when Auto Domain is off)
domain_centerVec3(0, 0, 0)Domain center position in world space (manual — used when Auto Domain is off)
emission_rateNumber1Density injection rate per frame
emission_temperatureNumber500Temperature injection value
emitter_radiusNumber5Emitter radius in voxels
buoyancyNumber1Buoyancy strength (hot gas rises)
smoke_weightNumber0.100Smoke weight (dense smoke sinks)
density_dissipationNumber0.950Density dissipation per frame (1 = no decay)
temperature_dissipationNumber0.980Temperature dissipation per frame (1 = no decay)
vorticity_strengthNumber0.300Vorticity confinement strength (adds turbulent detail)
pressure_iterationsNumber40Jacobi pressure solver iterations (higher = more accurate)
enable_combustionBooleanfalseEnable combustion — fuel burns to produce heat and soot (fire)
ignition_temperatureNumber1Temperature threshold above which fuel ignites
burn_rateNumber0.500Rate at which fuel is consumed per second
heat_outputNumber2Temperature produced per unit fuel burned
soot_outputNumber1Density (soot) produced per unit fuel burned
cooling_rateNumber0.100Temperature cooling rate per second
strengthNumber1Effect strength / wet-dry (0 = no effect, 1 = full). Editable, wirable, keyframable.

Gotchas

Domain Size and Domain Center apply only when Auto Domain is off. With Auto Domain on, the grid is fit from the emitter points each time and the manual values are ignored.

Combustion's Ignition Temperature, Burn Rate, Heat Output, Soot Output and Cooling Rate appear only once Enable Combustion is switched on.

Smoke Sim does not simulate on its own. Grid and solver settings are stamped onto the emitter points, which pass through. Wire its output into Physics World's smoke input; nothing rises until Physics World runs the solve.

If the plume looks too accurate and glassy, lower Pressure Iterations for a softer, cheaper solve, or push Vorticity Strength up for extra swirling detail.

Worked example

  1. Scatter points where the smoke should emit from, and feed them into Smoke Sim's input.

  2. Leave Auto Domain on so the grid fits the emitters automatically.

  3. Raise Emission Rate and Emission Temperature to push more hot gas in.

  4. Wire Smoke Sim's output into Physics World's smoke input to run the solve.

  5. For fire instead of smoke, enable Combustion and raise Heat Output.

See also

Fluid Sim · Physics World · Force Field · Distance fields & volumes