The following items on this page are a selection of physics and simulation tasks
I completed while working at Surgical Science / Mimic.
Click any thumbnail image to see the full-screen image or video.
The following video and image show a generalized cutting technique I co-developed with our lead physics developer. We based our implementation on the Virtual Node Algorithm (VNA) which has several advantages for real-time surgery simulation. VNA has excellent numerical stability, clean exact cuts, low computation cost and no need for re-meshing. It also allows generalized arbitrary cutting as demonstrated by the following image showing a dissection of a circle from the center of the mesh. Although the exercise tests if the user can accurately cut along a specific path, there is no pre-determined cut path, gibbing or breaking of the mesh.
The underlying collision detection and response system was particle-based using Position Based Dynamics (PBD). The first version used our in-house CPU side particle system and later we upgraded it to use NVIDIA FleX, which accelerated the simulation using the GPU and dramatically increased our particle budget.
For an additional example of cutting with PBD see the Rendering & Lighting page. For details regarding the automated asset pipeline I created for authoring the PBD/VNA meshes see the Tools & Pipeline page.
The following video shows an early prototype of a real-time deformation system used to represent organs and tissues. The images show the same structure integrated into a full training exercise, where the user is instructed to suture the two organs together. The deformation is achieved by skinning a mesh to an underlying network of jointed PhysX rigidbodies using a Hermite skinning algorithm. For this project, I additionally created a generator tool within Maya using MEL script that reduced the complex construction and placement of many D6 joints and rigidbodies to a few entries and a button press. I lovingly named it the Tubinator 9000. 😄 The tool allowed us to iterate rapidly during the design phase and try many designs.