Joseph Triolo gave a little talk on the way you can set up nice smoke simulations with the help of Houdini and some other tools.
My name is Joseph Triolo, and I have been self-teaching myself 3D since the age of 13. I have just recently graduated from Humber College for 3D Animation, Art & Design, and I am currently seeking freelance work. Additionally, in my spare time, I have been teaching myself VFX for the past 5 years now. On top of VFX, I am also proficient in 3D modeling, texturing, lighting, rendering, and compositing.
My VFX demo-reel:
Procedural smoke generation
There are many tools available for creating digital smoke. My main tool is Houdini, however other tools I have used include FumeFX and Phoenix FD. All of these tools are awesome, and you can achieve great results with them, however, I prefer Houdini for its powerful control and stability, especially when it comes to larger simulations. The main difficulty in creating 3D volumetric smoke would be getting it to look the way you need it to. What I mean by this is, simply creating smoke is easy. However being able to control and tame it to get it to look and move in a certain way, that is the hard part.
At the beginning of each project, before you can begin with the actual smoke, you must prepare your scene by setting up and making sure all the collision objects (if any) are correctly set up to properly interact with the smoke. Once that is all done, you can begin setting up the emitter. This is very important. Not only because it is the source of the smoke, but the type and shape of the emitter you use will greatly affect the way your smoke looks and moves. There are many different emitter types you can use, for example: there are static mesh emitters, animated/deforming mesh emitters, and you can even use an underlying POP (particle) simulation to drive your smoke simulations.
Smoke is made up of voxels, which are essentially 3D pixels. These 3D volumes can contain all sorts of information, such as density, color, temperature, heat, fuel, or any other field you save it with.
Animating and controlling the 3D smoke can be extremely tricky. You need to find a balance between the hundreds of simulation settings to try and get the look you are going for. Settings such as disturbance, turbulence, confinement, shredding, viscosity, cooling rate, buoyancy lift, and many, many more. This is only for the smoke. When you are also adding fire to the simulation for explosions and such, that is a whole other layer of settings to deal with. With fire you have ignition temperature, burn rate, fuel efficiency, temperature output, amount of gas released to burn, etc, etc. On top of all this, every single setting that I just mentioned, including the ones I didn’t, also have many sub-settings that can be used to even further control each parameter. Each setting also directly impacts the way the other settings react, so this is why it is important to have an understanding of what each of them does, to make it easier to find a balance between all of them.
The “dissipation” setting controls how quickly the smoke will disappear over time. This setting, combined with animating the timescale of the sim gives you very good control over how quickly or how slowly the smoke will disappear. Also note that all of the sim settings can be keyframed and animated, so don’t be afraid to mess around with that to get some pretty interesting effects.
Using the effect in a game engine
To make use of your simulations in game engines, you must create textures. Currently, there is no way to directly move your volumetric simulations to any game engine however one day I do hope something like this is possible. One way of moving your simulation to a game engine would be to create a texture sheet. A texture sheet is basically one image, which contains the entire render sequence of your simulation as if you were reading it like a book. This then can be played back in the engine as a flipbook texture. Another way is to create small FX sprites/textures, generally around 16×16 – 512×512 in size, and then have those sprites being emitted by the in-engine particle systems.
Examples of Houdini FX in UE4: