Thing-A-Week 2020 – Week Two: Smoke Canister

Apologies for the delay – post Christmas lurgy got to me. Here is week two’s thing – a smoke canister simulation, using Tyflow and Phoenix FD.

The Tyflow setup is again, quite straightforward – here is the graph:

The first event (CanisterSpawn) generates a particle, gives it a rough canister shape and launches it into the air, with a bit of spin. This is then passed to the next event which make sure it is affected by gravity, then does an age test to work out when it explodes. At the moment it only generates one canister because I wanted to work on a single PhoenixFD simulation to start with – increasing the birth amount / rate would create multiple canisters, as required.

Once the explosion threshold is reached it spawns two sets of particles – one very short lived burst to create some birth points for Phoenix at the centre of the explosion, which only live for a couple of frames; and about 30 particles to act as tendrils. These have a higher velocity and longer life, and I’ve given them a Shape instance set to 3D Chunks just to add some visual interest.

Finally both spawned systems have age tests and are passed to the delete event when they are finished.

PhoenixFD Setup

Once the particle system had been generated and I knew where the burst position was going to be, I created a PhoenixFD Smoke/Fire Simulator, using the following settings for the simulation:

The main one that makes a difference here is the Smoke Buoyancy which is set to a negative number to make the smoke slowly fall towards the ground rather than rise up, as this is supposed to be more dust than smoke.

In addition to those shown above, I set the GPU preview option and changed the Smoke Color swatch in the Volumetric Options dialog to the tan colour seen in the video.

I created a PHXSource object and used these settings:

The Inject Power and Particles amount were animated over time to give the smoke tendrils a falloff shape.

I added a plane object with a lattice modifier to act as a ground plane so some sense of the camera movement could be had and used the Viewport Capture option to create the output – this, coupled with the GPU preview option is a great way to quickly get an idea of how the rendered simulation will look in a fraction of the time it would take to render the entire sequence.

This week is a bit of an odd one as I’m posting this late, so there will be a Week Three later on in the week. I hope this write up was informative, and I’ll be back later in the week with another one!