For my final project, I implemented an FEM simulation of a surface.
The following features are supported:
Implicit integration for fast and stable simulation at large (1e-2) timesteps.
Linear and Quadratic Program solving for faster solves and collision with ground.
User Interactivity for creating equality constraints and adding forces
Parsing of tetgen output files (.node, .ele) to create elements
Video
(Turn on annotations!)
Gifs
The cube correctly deforms when equality constrains are applied. Cauchey strain is used to evaluate per-element strain, and co-rotational correction is used to ensure pure rotations do not cause strain.
Users can interact with the simulation at any node point (As represented by the square)
Objects deform on impact, but return to rest state over time.
Tetview screencapture of the tetrahedron meshes being used in simulation.
Citations
Tetgen, a tetrahedron mesh generation tool. I used Tetgen to generate the cube and rectangle meshes
Realtime Physics, Chapter 4 by Matthias Muller. A walkthrough of how to implement an FEM simulation, as well as how to perform stiffness warping to allow for linear strain.