Marching cubes
From Wikipedia, the free encyclopedia
Marching cubes is a computer graphics algorithm, published in the 1987 SIGGRAPH proceedings by Lorensen and Cline, for extracting a polygonal mesh of an isosurface from a 3D scalar field (sometimes called voxels).
The algorithm proceeds through the scalar field, taking eight neighbor locations at a time (thus forming an imaginary cube), then determining the polygon(s) needed to represent the part of the isosurface that passes through this cube. The individual polygons are then fused into the desired surface.
This is done by creating an index to a precalculated array of 256 possible polygon configurations (28 = 256) within the cube, by treating each of the 8 scalar values as a bit in an 8-bit integer. If the scalar's value is higher than the iso-value (i.e., it is inside the surface) then the appropriate bit is set to one, while if it is lower (outside), it is set to zero. The final value after all 8 scalars are checked, is the actual index to the polygon configuration array.
Finally each vertex of the generated polygons is placed on the appropriate position along the cube's edge by linearly interpolating the two scalar values that are connected by that edge.
The precalculated array of 256 cube configurations can be obtained by reflections and symmetrical rotations of 15 unique cases.
The gradient of the scalar field at each grid point is also the normal vector of a hypothetical isosurface passing from that point. Therefore, we may interpolate these normals along the edges of each cube to find the normals of the generated vertices which are essential for shading the resulting mesh with some illumination model.
The applications of this algorithm are mainly concerned with medical visualizations such as CT and MRI scan data images, and special effects or 3-D modelling with what is usually called metaballs or other metasurfaces.
This algorithm was the prime example in the graphics field of the woes of patenting software, patented despite being a relatively obvious solution to the surface-generation problem. Another similar algorithm was developed, called Marching Tetrahedrons, in order to circumvent the patent as well as a minor ambiguity problem of marching cubes with some cube configurations. However, the patent on marching cubes has recently expired, and it is safe for the graphics community to use it now, since more than 20 years have passed from its filing date (June 5, 1985) according to the US patent office (Marching Cubes, US Patent Office entry).