Marching Cubes Algorithm
CS-116B: Graphics Algorithms
Instructor: Robert Bruce
Spring 2017

SLIDE 1: Marching cubes algorithm

  • Approximating surface of 3D surfaces through volumetric sampling using cubes and state tables.
  • Patented in June 5, 1985.
  • Note: alternative technique called marching tetrahedrons
    •  Uses irregular tetrahedrons instead of cubes.

SLIDE 2: Marching cubes algorithm

  • Marching cubes algorithm advantage:
    •  Surface reconstruction based on state tables.
  • Cube size impacts surface resolution.
    •  Quality versus speed.
    •  Slower: small cube = fine surface detail
    •  Faster: large cube = course surface detail

SLIDE 3: Marching cubes algorithm

  • Construct 3D surface based on sampling with cubes!
  • Cubes are then sliced into triangular states.
  • Each triangular state determines:
    •  Which parts of cube are on the surface of the metaball?
    •  Is entire cube consumed by metaball?
  • We are recreating the irregular surface of a 3-dimensional volumetric metaball.

SLIDE 4: Marching cubes algorithm: cases

The fourteen unique marching cube surface intersection states with intersecting triangles

Image source: Marching cubes: A high resolution 3D surface construction algorithm, p. 165.

SLIDE 5: Marching cubes: grid size samples

Grid size sample of an object recreated with marching cubes. Approximation of 3d surface is proportional to grid sample size.

Image source: 3D Object Morphing with Metaballs, page 5.

SLIDE 6: Hints

  • Implementing the marching cubes algorithm…
    •  Define every possibly triangulated cube state in an array (see marching cube algorithm paper).
    •  How many vertices are on a cube? Build a vertex list in an array.
    •  How many edges are on a cube? Build an edge list in an array. Reference the edge list from your vertex list.

SLIDE 7: For Further Reading

Kommareddy, S., Siripun, J., & Sum, J. (n.d.). 3D Object Morphing with Metaballs. Retrieved from https://www.evl.uic.edu/creativecoding/cs488/finalprojects/metaball/metaball.pdf

Wyvill, G., McPheeters, C., & Wyvill, B. (1986). Data structure for soft objects. Visual Computer 2(4), 227-234.