MrBrouchet: Sketch #30 - Fireworks

Lastest update:

-------------------------- Original Post --------------------------------------

Hi fellas, here’s my entry to this month sketch :slight_smile:

My goal is to reproduce the famous dragon firework from the first Lord Of The Rings movie, the Fellowship of the Ring:

Here’s a first draft at the main dragon effect, in PopcornFX:

Dragon model comes from here.

Will try to construct this effect in the following steps:

  • Overall animation close to the movie scene. I’ll see if I can at least have an idle/flying anim for the dragon, and apparition and end explosion sequences.
  • Build separate stages to get what’s in the movie (beginning inflammation, dragon flying in fireworks sparks, turns into a firework rotating ball, end in big fireworks explosion)
  • Try to match the movie visual as close as possible.

Solidd!! Looking forward to this one man!

1 Like

My wife took the time to make a brand new dragon model for me on Zbrush <3 It’s much closer to the movie now (she actually noticed it’s more of a skeleton than a full skinned dragon, which is interesting). And it will be much easier to rig/animate it later.

So I just took the time to polish visuals a bit and add a smoke layer (sim done in Houdini).

The interesting part is that I was using a simple radial gradient for the “sparks” until I added the smoke on top. Being a different texture, it broke the rendering into two different drawcalls (one for the sparks, one for the smoke) which caused transparency sorting issues.
So I decided to use the smoke texture on the sparks, but only the first frame. Result is a bit smaller but has a more organic feel, plus it fixes the sorting issue so, it’s a win!


A bit more polish, with better lighting on the smoke (color was unlit before, now it’s a mix of direct lighting and emissive which is much better).
Also added some flickering sparks, I’ll try to add more of a ‘fireworks’ feel to them later.

I actually spend most of my day trying to get a draft animation for the whole effect but… all my attempts failed miserably :sweat_smile: I’ll need to step back and rethink how I can do that, before losing time on trying useless stuff…
Edit: Managed to at least get my anim working like this:

Simple rig and skinning on the dragon, then constrained to motion path and baked to anim for playback in PopcornFX. At least the pipeline works now, so I’ll just need to polish the rig/skin and animate the dragon a bit!


It’s looking cool (and makes me want to watch LOTR all over again), keep at it! Thanks for sharing your process as well, this is really interesting to follow! :grinning:

1 Like

Placeholders for the entire sequence.

I had so much trouble getting a functioning skeletal animation inside the editor, I’m not even sure why it’s working now :sweat_smile: Anyway, most of the sequence is ready, I just need to polish everything now I guess.

A bit of polish.
Lowered the global color saturation, added of lot of fireworks and lights to cast on the terrain.
There are a lot of visual improvements thought, to better match the movie :slight_smile:


Love the outcome with the animation. Does someone know if there is a way to reproduce such an effect "animated mesh based ‘projectile’ " in Unreal Engine 4 ?

In Cokey Li’s showreel you can also see short “animated meshes” pop up but i don’t know if he uses UE4 nor if he is really using an animation.

1 Like

You can actually export this dragon to UE4, as it’s made with PopcornFX which is a middleware that you can use in several engines including Unreal.
I guess you could probably get a similar result in Niagara, though the tech behind might be different here and there (and the workflow, as PKFX is fully nodal).

Not sure about which of Cokey’s effects you’re talking about exactly (feel free to share here on this thread btw), but I know he uses a lot of animated meshes but with fancy shaders/material tricks. Which is different from my full particle approach :slight_smile:

1 Like

This isn’t the best example. But it looks like an animated mesh. For example Min 0.36

1 Like

Yep, that’s an animated skinned mesh, with a black fresnel effect and a glowy blue-green gradient on the shader to make it appear, + some particles spawning on the surface of the mesh :slight_smile:
You could do that with Cascade, as there is a Skeletal Mesh Vertex/Surface Location module that samples a skeletal mesh to spawn particles on its surface. Then you just have to sync particle spawn with shader animation :slight_smile:

Some more polish here and there, changed the animation and curve a bit.
Still have a lot of work on the dragon itself.

Here’s a breakdown of how the skeletal mesh is used:

I’ve painted the mesh with some vertex colors, which correspond to:

  • Red: probability sampling (particles are most likely to spawn on red parts) and some color management.
  • Green: drives the body particles (they have more lifetime and some color changes).

Animation is baked and then sampled directly, and I’ve also exported the curve separately to use it as a AnimTrack sampler (which is simple curve sampling, without geometry).


New polish pass, with added text at the end :sweat_smile:
The fun thing is that the text is directly editable in engine since it’s Text sampling, it’s not mesh based at all but directly sampling string values:

I created a SpawnOnText template that just takes in a text and a character count, and spawns particles on top on this text:

Basically, it works in two steps.
First, sample the text data (strings) which will output a 8-bit ASCII code. Each returned integer of this code represents a character in the ASCII table, for example the character “H” is number 72.
From there, there is remapping to convert this into a atlas ID that corresponds to the letter in this texture:

So we just matched letters from a string data to a subUV inside a texture, so for second step we can just directly sample this texture to spawn our particles where text is showing:


Wow so Epic <3 … looking forward to it

1 Like

Probably the last update, since we’re approaching year’s end and I might have less time in the coming days.
Tried to shoot a decent video of the effect running in PKFX, you can see how my graph became a bit complex over time :sweat_smile:

Thank you all for your likes and support, it was very fun to do :slight_smile: