I’m looking at implementing the marching cubes algorithm, and I was wondering if the volume visualization community had left it in favor of marching tetrahedra? I understand both have their limitations, and I’m not really sure which will best suit my needs. I realize marching tetrahedra came later, but is it clearly superior? I understand that it can result in higher polygon counts, but more accurate topology? Is there anything else I need to be aware of as far as how the two algorithms compare?
Thoughts, opinions, or otherwise?
If you have a GF8xxx graphics card you can compare them using the Marching Cubes algorithm from the CUDA SDK and the Marching Tetrahedrons from the OpenGL SDK (Cg Isosurf).
Search for marching tetrahedra. May or may not tell you anything new. Since the marching cubes patent has expired, only reason to chose one over the other is just technical issues.
Marching tetrahedra are required, if the input data should be created by a vertexshader. It is a limit of the geometry shader that it’s not possible to use input primitives with 8 vertices. If a 3d texture is used as input, this limitation isn’t a problem.
I believe that Marching Cubes (MC) is the more reliable of the two, in the sense that “tetrahedralization” of a 3D space can be done in many different ways, whereas voxelization is unambigous. Because of the ambiguity with tetrahedra, the “superior” topology is sometimes lost. However, MC has its own set of problems. The correct set of cases to use is still an open research topic, and over the years a number of “topological bugs” have been found in the cases initially proposed by Lorensen and Cline.
My own experience with MC is that it gives nice results nearly every time. I have not used Marching Tetrahedra, so I can give no feedback on it.