Looking for feedback on Explosion VFX

Hello! I am learning realtime vfx and I made a small explosion as an exercise. I am looking for feedback on aspects I can improve, so if anyone has any it is greatly appreciated. Thanks!!

First off, youre on the right track! I like the colors of the explosion, are you using the black body node in the materials? Personally i love that node for my explosions. (assuming its unreal)

Here are a few things i noticed that could improve things…

My first piece of advice is always gather reference photos/videos and try to match those! Watch videos and step through them frame by from (keyboard shortcuts for frame advance in youtube is comma and period)
Also look up the “12 principals of animation” and learn to implement some of those principals in your effects. Things such as anticipation, secondary motion and squash/stretch.

Another thing that is sort of sticking out to me is the scale. The fireball with thick smoke reads to me like a huge explosion, yet the overall size seems fairly small, about the size of a grenade. Learning about the difference between size and scale is very important. Size is the physical space the effect occupies (how many meters) and scale is how it looks at any given size. You would never see a camp fire look like a candle flame for example. Currently, your scale seems to read like a massive explosion but the size reads like a small grenade explosion. Based on the big fireball flipbook, i will assume its for a bigger explosion. A lot of my feedback will be based on that assumption, although the principals still broadly apply. If its for a smaller grenade explosion, it would look a bit different. (less fire, snappier, thinner/wispier smoke, less debris etc)

The texture resolution on the explosion looks pretty low. How big is your flipbook? You can use frame packing to divide up your frames into multiple channels and get a higher resolution per frame. Smoke textures can be made greyscale and tinted in the material, dont use all 3 rgb channels for smoke.

Your sparks are way to big and blobby. I tend to make my sparks fairly small, only a few pixels big. I also usually have one leader spark that is emitting secondary (short lived) sparks as it flies away. Take a look at the transformer movies for reference on this, they use this technique everywhere. You can use the nodes in the gpu particles to spawn particles from another particle. The curl noise is also way too high, making them swirl around in the air in an unnatural way, some even fly upwards.

Add much more dust, debris secondary elements. Little stones and rocks flying away. Youre missing some small/high frequency/crispy elements that can really increase the perceived resolution of your overall effect. Layer those effects overtop of the smoke that’s in the middle.
You also want some low lying wispy dust that sort of sticks on the ground as a secondary element, as if the dirt is being stirred up by the shockwave. (secondary motion principal) Tint it brown to match the dirt to separate it from the darker smoke in the middle. The rock particles that you are spawning just look black, it would integrate into the scene better if you matched the color of the rocks in the environment. Make sure they are shaded properly, either by spawning a mesh (expensive option) or a sprite with a texture of a rock with a normal map. (cheap option)

A note on debris/rock and sparks, basically anything that’s ejected outwards. Never just spawn them in a sphere and use a point force to push them away. It is way too uniform and unnatural. For these types of elements i spawn multiple bursts/clumps of particles and shoot them in different directions. This will give you a much less uniform distribution. Imagine a bunch of cones, with the point in the middle and the wide end pointing out in the direction of travel. You can adjust angles and speeds of the particles in each burst/cone to make the cone thinner or fatter to control how it looks.
Also, When an explosion happens on the ground, the majority of the force is directed upwards at about a 45 degree cone due to the shockwave reflecting off the ground. This means that debris ejected straight up will fly faster/farther than debris ejected horizontally near the ground.

I would make another smoke/dirt flipbook that has spikey shapes to break up the uniform roundness of the core fireball and layer it in around the edges of the core fireball. If its for the dirt being kicked up, its heavier than smoke so its movement will be different than smoke. Watch the scorponok fight from the first transformers movie to see what I mean.

The scorch decal your using doesn’t really match the power of the effect. It looks more like a burn mark than a blast mark. You want something that is much more spikey and radial. You could actually layer the existing one with another blast mark, just make the blast mark darker and more prominent.

If you want to make it feel really punchy at the start, have a big spikey muzzleflash sprite spawn for 1-2 frames at the start. Make it really bright so you get a quick flash and big enough to cover the spawning of the round explosion sprites. This is a minor detail but it can really help dial in the feeling of power. You can literally use a single frame muzzle flash texture from a gun, scale it up and spawn a few of them. Currently when the fireball in the middle spawns, its already round, which is a bit unnatural. Anything that is moving that fast is stretched. (stretch/squash principal)

Your smoke is lacking any sort of light directionality. Consider making normal maps from your simulation or using a curvature map in your material to get some shading across the sprites. There is a material setup i posted in the “improving niagara lighting” thread for the curvature map. Its better than the default engine “use spherical normals”
Another trick to help the smoke lighting is to use the sky color node to tint the smoke the color of the sky/atmosphere. This helps simulate light bouncing in the volume and makes the entire effect feel more integrated in the scene.

Reference.
https://www.youtube.com/watch?v=voBuGV2QJmQ Scorponoc battle. Look at spikey shapes, debris/crispy details, smoke shading and blast directionality. (more upwards than outwards)

https://www.youtube.com/watch?v=A89sZ3f0RHI Base attack from transformers. Look at the sparks when the electricity transformers explode to see what i mean about how the sparks burst out in clumps instead of radially. (2:41) You can also see the main particle spawning secondary embers as it travels. Its a bit exaggerated but you get the idea.

https://www.youtube.com/watch?v=Q1cyBeZmC60 Check out this video for an example of the shockwave stirring up the dust on the ground. It tends to stick to the ground more than the explosion (less temp/buoyancy) and it happens extremely fast. (shockwave is supersonic) If you step through frame by frame you will see how the first few frames of the explosion, the smoke is much more spikey before it billows out into a round shape.

https://www.youtube.com/watch?v=CIph_7yCtzk Notice how far some of the debris flies. It also has some directionality to it. Flies out in clumps. Secondary dust kicked up as debris hits dirt. Smoke has strong directional lighting because its thick. Shading on the smoke gets less pronounced as it gets thinner.

Looking good so far, if you add some of those suggestions i think it will really bring it up a few levels!

2 Likes

Hi! First of all, thank you so much for all the feedback. I am learning real-time vfx on my own right now, so this is invaluable to me! I checked the references, and I understand what you mean. Thank you for taking the time to give such detailed suggestions!

Yes, I forgot to mention, I am using Unreal. I am not using black body, I picked the colors manually. I didn’t know there was a black body node, so I will definitely look into that. I actually packed the temperature and density as separate channels inside the flipbook texture so that I have more control later inside Unreal.

The flipbook texture is a 2K with 16 frames, accompanied by a motion vector texture so that the animation is fluid even in slow motion. To be honest, I’m not sure whether I should use this technique or if it is better to just use all 64 frames. I guess it is a thing that depends on each project’s needs? I will definitely try packing the frames into multiple channels!

I will improve the effect with your feedback and come back with the result! Thank you again!

No problem! If youre flipbook is only 16 frames at 2k then that’s still 512 per frame which is fine. I tend to make my explosions 64 frames with a 4k texture, which is pretty standard in the industry. Maybe the sim itself is a bit low resolution? What software are you using to create this?

As for the frame count vs motion vector maps, its up to you. Vector maps are great for when you need really slow and smooth effects. However it increases the cost of the shader a decent amount, it also uses more texture samplers which further increases the cost of the shader. It really comes down to what you need and performance cost. I think a single 4k texture would be cheaper, but i havnt profiled it recently. How are you generating your motion vector, are you using tflow?

To use the black body node, feed your greyscale texture into a lerp, then after the lerp plug it into the black body and then plug that into your emissive color. The lerp controls your min/max for the black body node. Put something like 0 and 3500, the values are in kelvin. It gives you physically accurate colors based on the temperature.

One last tip, i do see youre using a light, but its very dim and has a small radius. I would crank up the brightness and radius, but only have it visible on the 1-2 frame flash at the start.

2 Likes

I am using Houdini, but maybe I can increase the sim resolution. I didn’t do it before because my PC isn’t super fast. I want to look into houdini’s Axiom solver or even EmberGen since it has a perpetual license, but I thought Houdini would be a more attractive skill when looking for employment. To generate the motion vector I am using Slate Editor by FacedownFX. Okay! Thanks for the tips again!