Click Here to view all the amazing entries to Rookie Awards 2024
Art direction of particles motion with VEX
Share  

Art direction of particles motion with VEX

Yelyzaveta Klots
by YelyzavetaKlots on 28 May 2024 for Rookie Awards 2024

Happy to share the project as the outcome of about 9 weeks of learning VEX in Houdini from almost scratch. All of the sand motion was fully written with VEX. Besides, it was my first time setting up render passes and doing comp, so many things learnt :)

8 601 1
Round of applause for our sponsors

I am passionate about creating magical effects, so I thought it would be very useful to learn to use vex as it gives so much flexibility. I experimented with it for two months resulting in this project that took about 2.5 weeks to create. Here is what I achieved:

Breakdown

VEX (Sand)

There are four parts of the sand motion there. I used 4 attribute wrangles that are inside of a vellum solver. They are merged and plugged into the force output. Below there is a short explanation of how they work:

Part 1: sand is attracted to the “goal point” that initially sits on the floor and then moves up, causing sand to suddenly move up. Influence of attraction is limited by a certain distance, so it doesn’t affect sand that is not close to the “goal point”. It also makes the sand moving towards the goal to create a curved trajectory instead of just linear. Rotation around the goal point is achieved by doing a cross product of the vector pointing upwards and the attraction vector.

Part 2: here I used quaternions to create a rotational movement. My setup is very similar to the one that I saw while taking a course “Velocities Forces 2.0: Advanced” at Houdini School. The idea here is that there are some scattered points that are the seeds for simulation. After some small computations there are vectors calculated for each seed, around which particles would later rotate. Sand is attracted to those seeds and at the same time is rotated around that vector.

Part 3: here I wanted to find a way to separate sand back by colour as it was at the beginning of the simulation. For this I used a function findattribval that would search for the same colour value between the sand and two goal points. It gives the point number, so I could use it after for creating “attraction” vectors.

General nodes tree for sand(grains):

Smoke

My main goal here was to create particles advected by the smoke and pushed away from areas where the sand is very close. I achieved this by creating a mask on a sphere, where white indicates the areas hit by the sand. Then I defined vectors pointing inside the sphere. Where the mask is white, those inward vectors are transferred to the source object, pushing the smoke away.

General nodes tree for smoke:

Lighting, rendering

For lights, materials and rendering I worked in Solaris and used Karma for rendering. 

Below there are AOVs and a comparison of my viewport and the final render. For comp I used Nuke. Did some colour grading there to slightly shift the mood than I initially planned, and also added some blurring and vignette.

Viewport vs Final Render

Also, I want to say special thanks to Bournemouth University, Voxyde, Houdini School, CG Spectrum!

Thank you!


Comments (1)