Simulating Solids with Finite Elements
CS 493/693 Lecture, Dr. Lawlor
To simulate a solid, you need a solid mesh, not just triangles. In 2D, you can use the Delaunay triangulation to make a good triangle mesh from scattered points. TetGen
can build a good tet mesh using the 3D version of this, the Delaunay
tetrahedralization. Given a tet mesh, you can construct springs
along each edge exactly like in 2D.
Springs work fine for tets, although if the tets get pushed inside out,
they tend to stay that way rather than snapping back. Back in
2004, Iriving, Teran, and Fedkiw showed how to support fully invertible finite elements; this lets them do huge deformations like squashing meshes between gears,
although the computations involve fairly expensive matrix operations
like diagonalization and eigendecomposition for every tet at every
timestep.
Recent research in this area has added support for complete merge/split topological changes, like splatting goo meshes (2009).
It is fairly simple to allow springs to "break" if they are stretched
too far; you just measure the current displacement, and if it's more
than some threshold, you mark the element as broken, so it applies no
forces.