Dynamic Voronoi Fracturing

Technologies: C++, Unity, C#, Voro++ and Bullet libraries

This was my final project for CIS 563 – Physically Based Animation. I worked with James Bartolozzi and Max Gilbert to create a dynamic fracturing system in C++, and then turned it into a Unity plugin to demonstrate how it works in real-time. (You should also definitely check out the websites of James and Max, they do some really cool work!) The final project gave us complete freedom in choosing a SIGGRAPH paper about physically based animation that was interesting, and we were tasked to implement it in C++.
 
We created a real-time dynamic fracturing plugin for Unity that can break apart any convex compounds into further destructible compounds, using the SIGGRAPH 2013 paper “Real Time Dynamic Fracture with Volumetric Approximate Convex Decompositions” [Müller et al. 2013] as a guide. Most real-time fracturing systems use predefined fracture patterns and therefore the fracture does not break at the point of impact. Dynamic fracturing allows for more realistic interactions, and creates many exciting new possibilities for gameplay involving the use of fracturing. I worked partly on integrating the Voro++ plugin in our C++ code, but mostly on creating the DLL that would interface between our C++ code and Unity. When the player hits an object, Unity interfaces with our DLL that runs the fracturing code we have written, and breaks apart the object that was hit into smaller pieces. You can see our whole process in the first video below, and an extended video of the plugin in action in the second video.