Jump to content
  • Advertisement
  • entries
    444
  • comments
    1237
  • views
    774511

Explosions Redux

Sign in to follow this  
JTippetts

221 views

Quite awhile back, in this and this journal entries, I explored generating explosion sprites for animated 2D sprite-based explosions. Recently, I revisited some of that in order to create better, or at least different, looking explosion sprites. Don't get me wrong, in a layered system those generated explosions look good. But I found myself wanting explosions that were a bit more... bumpy, I guess. So I dug out the code, and fiddled.

I decided I wanted something more volumetric. The sprites generated in the above articles are based on 2D, flat "slices" of a 3D function, and in the process of slicing it, depth is lost. I attempt to fake depth by layering different sprites, starting with a large one and working down to smaller ones. Today, I tried something different.

I start with a 3D sphere function as in the previous entries, perturbed using 3 fBm noise functions. I then iterate the pixels of the image as the X and Y axes of the function, and at each step I sample a column along the Z-axis to determine the color of the pixel to output, iteratively stepping along the column until I find a point where the value of the function evaluates to greater than some specified threshold. I tried 2 different methods for calculating the color once I found this 'surface' point.

For the first method, I used the (x,y,z) coordinates themselves, normalized to a unit vector, and performed a dot-product operation with the vector (0,0,1) to generate a value which was then used to interpolate the flame color scale and generate a final color for that pixel. Here is a typical result from this operation:


It has a bit more 'bumpiness' than the previous ones, but to me it still seems sort of flat. So I tried a second method. At each surface point where the function evaluates to greater than threshold, I take the gradient of the 3D function and perform a dot product with (0,0,1) then, as before, use this value to sample a color scale. The results of this operation are very nicely bumpy:




Next up is determing a suitable method for animating the explosion in a realistic manner.
Sign in to follow this  


0 Comments


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!