In the late 2000's I was really into 3D animation and making 3D games. I was primarily using a free program called Anim8or. The program saved its files as a readable text file that could easily be edited. Also, to program had some simple methods for morphing model animation. I decided to do a few experiments dynamically creating animation by combining the output of another program I was using at the time Game Maker.
The program consisted of 2 object types; The grass and a large circle that moved over the grass to simulate wind.
First I created the grass model with 2 states: standing and bent. Then, I exported the single model.
Each blade of grass was a Game Maker Object with a simple collision event and a variable to determine the strength of the wind. Initially this was set by the wind object but, by letting it be set in constructor for the grass object I could set it as a random value allowing the staggering effect.
I could either place the grass manually using the level editor or I could place the grass using a two-dimensional array, as seen in the video.
Finally when the game was run the wind object would move diagonally across the stage colliding with the grass objects. As this happened a string was created recording the events and once the program was complete it exported an Anim8or (*.an8) file.
I opened the file in Anim8or where I rendered the animation.
Sadly, as with many of the cool things I did at this time, this file seems to have disappeared.