In the 3D animation world, even to this day, 3D generated explosions using volumetric shaders or real-world physics-driven simulations still don't look realistic enough. While they have gotten pretty good on the physical aspect of the explosion (movement, reaction to gravity/wind/object) it's usually the look or the feel that gives it away.
So, how do big-house productions use/create explosions?
Well, the easy route would be to take pre-keyed (a keyed element is a video that has an alpha channel for a background, therefore being transparent making compositioning MUCH easier) video of an explosion and layering onto our video. Movies like Independence Day and Starship Troopers and many other movies in the 90's used this method. The problem with this method is that it's usually VERY hard to find the explosion you are looking for. Maybe the fire needs to react with other elements in the scene and finding one that looks and reacts just right can be very time consuming.
The other route that most big productions seem to be taking is the create-your-own-explosions route. This method provides wonderful advantages in moulding and shaping EXACTLY the way you want the explosion to happen. Even making things happen that would not even occur in real-world physics, or creating physics for something that has yet to be seen (space physics for example). Contrary to popular belief, fire DOES BURN in space, but it burns MUCH faster hence the lack of oxygen. Howeven if there is fuel, then the quicker-disbursed fumes will burn very quickly. Same with smoke, however it even dissipates much faster than fire in space, probably not even noticeable to the naked eye depending on the size of the explosion. Event Horizon was a good movie that delved into more real-world phsyics of space explosions. But the norm for Hollywood is to create atmospherically correct explosions, even in space for the simple reason that it just looks better.
The trick that Hollywood represents, is that it really doesn't matter if the explosion is realistic for the environment so long as it fits and enhances the scene.
How do you create an explosion?
The first thing to do is to be aware of your environment. In my case I've been building explosions in space. So definately lack of gravity will be needed, however I still use huge, long-lasting plumes of fire and smoke, totally out of place in space, however it looks really good and helps me drive the story (and hide the fact that there is really no physical damage). It's easier to notice an bad explosion if it dissipates and there's no visible damage than a physically incorrect but good-looking explosion. In the Atmosphere you have to consider gravity, wind, friction, and collisions.
There are two different types of volumetric effects programs out there; there's volumetric shaders (more used for big plume explosions like buildings and aircraft) and volumetric simulators (more used for fire and small, locallized, explosive bursts like car-bombs and hallways).
I have more experience with Volumetric shaders with particles, because they have fit my needs more than the other programs. In most 3D programs you can create simple particle emitters that throw out a preset amount of particles in a single direction with some variation, as you can see in the picture:
This will provide some particles in which a shader could be attached for some fire texture. However, this will look extremely bubbly and very unrealistic, like a pre-schooler drawing comparing to Da Vinci.
These are randomly placed particles coming out at a random speed with simplistic direction. No. What we need is chaos!
And we need to control that chaos.
Imagine an explosion. We have the impact, the initial plume, an expanding plume, a directional plume, random plume offspring, small fireball debris, and pieces debris. Taking these items into account and designing particle systems for each piece of the explosion takes a lot of time, and in the end the particles will look something like this:
Here we have all systems in place to control the randomocity and chaos of an explosion. This is a space explosion, so we lack gravity, wind and friction. Those will have to taken into account in an atmosphere explosion. (each color represent a different control system)
To control this explosion we have to setup a system of rules and checks to monitor conditions for all systems.
In the simple particle emitter, there is nothing in place to control this. However to build a complete explosion we need to slowly introduce each element and make sure it's functional before moving on to the next piece. After a while (4 days for me) of tinkering and tweaking the particles, there could be a system that looks like this:
Compared to big house productions that do HUGE calculations for dynamic realistic explosions on a daily basis, this is a kids toy, VERY simple. But, for me, it's a start. And you always have to start before you can finish. However building your own explosions in 3D is like playing golf; you never win but you get better and better :). And taking this simple explosion system and adding volumetric lights you get something that looks like this:
Certainly not bad for 4 days of playing around. My lighting is still too bright, and there is some more tinkering to be done with the pieces and plumes, but it's a good start. I plan on improving this continuously and eventually replacing the explosion elements in my recent space battle scene with these once I get them looking good enough and reacting well to my environment.
I also need to develop the delivery and impact system, so that I don't have to animate each explosion. I could do a simple Star Trek proton torpedo type of effect, very simple, easy and cool looking to do. But I'm not sure where I want to go with this, I want to do something unique, so I may play off of the proton torpedo look, or I may do something different.