Growth Activation for Grains Simualtion in Houdini
I was cleaning up some of my files and I thought I would go over in a little more detail how I did the growth activation of the Vellum Grains in the simulation. This scene ended up looking like the heightfield had a force field around it and the scene looks like the feedback from the impact of the blast. But it began looking like an Alien Mountain anyways, so I can see this fitting together.
Alien Plateau, again?
The past few blog posts have all been about this Alien Plateau scene, that’s because that’s what I’ve been working on mostly on and off throughout this month. I promise I’ll start talking about something else after this one, or maybe after the next one… soon.
Grains Simulation
Just like the RBD Simulation, which has the @active attribute to trigger the objects inside the simulation to function, the Vellum Grains has a @stopped attribute, which I used to trigger the Vellum Grains to wake up after initializing it to sleep at the beginning. To create the growth activation effect you see in the animation, you slowly wake up the grains, but not all at once.
A few grains are initialized in the woken up state at the beginning before the Grains Simulation even begins. Then there’s a sopsolver inside the dopnet that has access to data from the previous frame in Houdini scene. This data is very important! Without data from the previous frame, I don’t know which Grains were already woken up and how would I be able to grow the wake up state to neighboring grains?
Summarize the Algorithm
Initialize a few Grains in the Woke Up State
Then using attribute transfer node, find neighboring Grains that are sleeping and wake them up as well. (Loud neighbor.)
Repeat on every frame.
This is repeated again and again, throughout the entire animation. The important part is that we used a sopsolver node. This way we have access to which grains that are already awake from the previous frame and we can continue to wake up more grains.
It’s like a chain effect. You wake me up, then the next step is to wake up the next person near you, and so on.
Distance Threshold Parameter
((Frame_No./ Dissolve_Time_Scale )* Particle_Separation) +0.1
As animation plays forward, Frame No. increases, also known as $FF in Houdini Expression.
Dissolve Time Scale
The Dissolve Time Scale is a fixed number that you can specify.
The larger this Dissolve variable is, the slower the growth will spread and the longer the growth will take to wake up all the grains. This gives us a way to drive the speed of the growth.
But do take notice that the ratio between the Frame No. and Dissolve variable is multiplied to the Particle Separation variable. That means when the Frame No. and Dissolve have the same values, a ratio of 1 is multiplied to the Particle Separation. If the Dissolve has a value of 12 and when then animation hits Frame 12, the Distance, which is the result of this formula will start to result in values above 1 and this Distance formula will start to result in factors or multiples.
What I’m trying to say is when the animation reaches the frame number that is equal to the Dissolve value, all frames after this point will result in a very sudden quick growth speed! Thus you see a sudden blast in the Vellum Grains in the animation.