I am rendering a tetrahedral mesh in OpenGL. Each tetrahedron is drawn using a triangle for each face (for a total of 4 triangles per tetrahedron). I am looking for a simple way to remove the interior elements of the mesh. For example, if the shape of the mesh was a unit sphere (centered about the origin), I could average the three coordinates of each face in the tetrahedron, and only draw the face that maximizes the distance away from the origin. This would produce a spherical shell.
The meshes that I am working with are more complicated than a sphere :).
I believe, based on your description, that a face is part of the shell when it is only part of one tetrahedron. You can find the number of tetrahedrons that a face is part of by creating lists of connected points to each point of a face. Then just find how many points in each list are common among all three lists – this is the number of tetrahedrons a face / triangle is part of.
The high-level pseudo code I can think of is: