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.