David Grzesik

Visual Effects Artist

David Grzesik

Energy Drink Commercial – 13 – Spires Solver

Styles of ice growth are discussed here.

The solver used to calculate the spires is quite simple and relies on a strong velocity field to sell the effect.
From an initial seed point, I calculate N (just manually setting upwards in this case) and replicate that point nearby. Snap them to the surface to ensure proper growth. I then calculate the distance from each individual point to the center point and use that distance as a multiplier for velocity strength and direction (I use N to visualize V and set it properly in the last node). A note here is that the direction can be customized to point inwards or outwards from the center point, this was a nice little exercise in quaternions. The code is all mashed up with other stuff, but basically I compute a cross vector from the center point’s normal and a vector between the two points and use that to rotate the normal for the affected point outwards or inwards, what ever may be desired. I then add some lines and resample these lines to create a field of particles to pull from for the velocity. The final Point VOP adds some wavy Perlin and Curl noise to the velocity, so that it isn’t just pointing in a single direction, but rather smoothly waves and wiggles as it grows.

 I then run this through a Volume Source node for ease of use.

The result is a rising wavy velocity field, but properly clipped where we would want the growth to stop happening. I use particles so diligently in this case purely for ease of use, they are easy for me to visualize and speed up my own workflow, allowing me to quickly change something in a point wrangle if I need to.

 

Finally, the solver.

About as straight forward as you could get, all the point wrangle does is sample the velocity field and add that value to the position and the remesh node guarantees even point distribution for the next iteration of advection.

 

The final result:

Leave a Reply

Your email address will not be published. Required fields are marked *