[Houdini] Chladni Plate Engine
Chladni plates have always been pretty fascinating to me, such a simple setup that is able to produce such unique patterns simply with vibrations. With Rings of Power coming out recently, this old fascination was rekindled. The opening animation for rings of power was clearly inspired by Chladni plate standing wave patterns, however I was disappointed to see grains fading in and out of existence in the Rings of Power animation. There were also some sections where the grains traveled along the nodes of the pattern, realistically the grains settle here because it’s an area of no vibration on the plate so there would be no forces acting upon them making them move in any particular direction.
I figured I would work on a high-speed, art directable simulation engine in Houdini to mimic this style with more plausible physics. The engine is broken down into a couple smaller pieces; the Chladni pattern, Gradient vector field, and particle DOPs for movement. Generating the Chladni pattern on a grid is straight forward, using @P.x and @P.z (used as y to easily translate from 3d to 2d space) in the formula cos(x*n*pi)*cos(y*m*pi) - cos(x*m*pi)*cos(y*n*pi). The gradient vector field is generated by getting the derivatives of the output of the Chladni pattern on every point on the grid. Finally points are scattered on the grids surface and moved by the direction and magnitude of the vector field. To keep things speedy at this phase, collisions are not calculated and particle bounces are completely faked. The output of this DOP net can then be passed into a vellum grain DOP with a pin constraint, attaching the vellum simulated grains loosely to the fast simulation engines output.
Because the vector field is separate from the Chladni pattern, any attrib map or image can be piped in for shapes and patterns impossible to achieve with a physically accurate Chladni plate. I also introduce multiple frequencies and magnitudes of random noise to the direction, speed, mass, and bounce of each grain to simulate imperfections in the plate material or frequency input.