Fluid & smoke

Splashing liquids made of points, and billowing smoke made of a grid — two different looks, both running live on the GPU.

DNA gives you two ways to make things flow. Fluid is particle-based: think water, splashes, goo, and liquids that pool and spray. Smoke is grid-based: think rising plumes, fog, and turbulent gas. They run on the same solver as the rest of DNA's physics, so they happily collide and mingle with cloth, hair, rigid bodies, and your colliders.

Liquid with Fluid Sim

Feed a cloud of points into simulation.fluid and it treats them as a body of liquid. The points pull together, resist being squashed, and slosh around under gravity — pooling at the bottom of a container, spraying off an edge, dripping into a bowl.

The fastest way to get started is to sop.scatter some points into a shape and wire them in. Each point becomes a droplet; more points means smoother, denser liquid (and more to compute).

While it runs, the solver writes a couple of handy per-point attributes you can read downstream:

To see your liquid as an actual surface rather than a swarm of dots, render the points as a Volume or use sprites for a quick spray look. The raw points are also useful as a guide while you dial things in.

Smoke with Smoke Sim

simulation.smoke works differently. Instead of tracking individual particles, it simulates gas on an invisible 3D grid filling a region of space — the same approach used for the big plumes and fog you see in film and games. That grid lets smoke swirl, diffuse, and curl in a way that loose points can't.

Smoke and particles also talk to each other: particles can push the smoke around, and the moving smoke can carry particles along with it. So you can fling sparks through a plume and watch both react.

Smoke is the one part of the physics system that runs on a grid rather than on shared particles. That's why it has its own region and resolution settings — a finer grid looks better but costs more to cook. Start coarse and refine.

Mixing with other sims

Everything in DNA's physics shares one solver, so fluid and smoke aren't islands. Drop a simulation.rigid_body into the same scene and your liquid will splash around it; let cloth from simulation.cloth get pushed by a smoke plume. You don't wire anything special — sims that share a world interact.

Colliders shape the flow. Add a Volume as a collision boundary, or use solid shapes, and the liquid pools and the smoke deflects against them. Force fields (wind, vortex, turbulence) are the other big lever — a swirl of turbulence turns a calm pour into chaos.

Simulations build up over time. If you scrub the timeline backwards, DNA re-runs the sim from the start to stay accurate, so jumping around can pause while it catches up. Let it play forward for the smoothest experience, and see Time & playback.

See also