Simulation Projects

This class was a total indulgence in graphics, from simulating liquids and smoke to hair to shattering glass (with procedurally generated sound!). We had three assignments, each of which involved creating a simulation from scratch based on a specific research paper. I also took on the extra personal goal of implementing all three of these with different 3D libraries to better understand the pros and cons of each.

This was a position-based fluid simulation using a technique by Macklin and Muller, which can be found here:

It was coded in Cinder, a relatively new C++ graphics library.

A cloth simulation that can be manipulated in real-time. There still seems to be some extra flapping that could be ironed out (no pun intended), but overall it’s relatively stable.

Like the fluid simulation, this uses Position-Based Dynamics ( It was coded in OpenFrameworks.

This simulation is part of my ongoing interest to make digital books more compelling and to bring them into the 3D space of VR and AR. It borrows code from the cloth simulation, only applied to a 2D cross section (hence the red lines on all the pages). It also has a novel piece of code to keep the pages from intersecting with each other. The pages are a bit too tolerant to stretching and could benefit from a different arrangement of mesh vertices, but I’m happy with how this iteration turned out and would love to work on it more.
This video is choreographed to music. I thought that was a good idea at the time; not quite sure why. It was coded in Unity.


CS381C: Animation & Simulation


Fall 2016