This is a collaboration project with Diana Castellvi , Elizabeth Delos Reyes, Lorena Da Silva and Mitch Harper under the mentorship of The Mill NY in the production simulation class.
I’m responsible for the lightning and spark effects in shot 1.
Breakdown:
Lightning system
The lighting system starts with a pop sim that emits particles from an emitter geometry. The particles are project backed to the emitter geometry and the receiver geometry so that we had pairs of points with the same id. The line connecting the pair of particles represents the main branch of the lightning bolt.
The line of the main branch is plugged into a for-loop to created sub-branches. Before the for-loop, there is some attribute on each point need to be initialized including ‘active’, ‘probability of spawning sub-branches’, ‘width of the sub-branch’, ‘ length of the sub-branch(pscale)’ and ‘blend’ which is for applying noise later.
If the point is active, it will go through the nodes on the left which randomly chooses points to be the ‘root’ for the newly-spawned branch. The normal, length(psacle) and the width are reduced because the sub-branched are shorter and thinner. The newly-spawned branches are made ‘active’ and the original branches become inactive.
The following is the result of the above for-loop. Noise is applied afterward.
Noise applied is multiplied by the blend attribute set up before. The blend attribute is controlled by a ramp based on the u-value of the line. I dont’t want the noise to offset the root and the tip of the lightning bolt.
Color (intensity) and width over life
When I look at the lightning footage online, I found that before the lightning glowing hot and white, it starts out as a thin, purple bolt. I vary the color and the width of the lightning according to the normalized age (@age/@life).
It turns out to work really well with the use of expoGlow in Nuke. The lightning is rendered as both the mesh and a mesh light lit up the environment.
Varying color
varying width
Sparks
The sparks consist of three particle source which is color-coded below according to their physical behavior. The reason I separated them as a different source is that it is easier to art direct it.
Red: Heaviest particles, lowest initial speed, decelerated slowly, longest lifespan
Orange: Moderately-weighted particles, moderated initial speed, decelerated moderately, moderate lifespan
Yellow: Lightest particles, highest initial speed, decelerate drastically, shortest lifespan
Bounce
One problem is that the particles bounce regularly by default. I use a pop wrangle to add a random velocity to the particles when it hits the ground. Total Bounce is needed to prevent the particles from bouncing when it has already settled down.
Color Variation
Color is determined by the normalized age (@age/@life) of the spark plus some randomized color.