Isosurface Extraction

This page is intended to serve as an index to a few of the many, many methods of isosurface extraction from voxel grids or implicit functions. It is also intended to serve as a rough timeline, and thus techniques are listed in rough order of development, i.e. many of the later entries build upon earlier entries.

Marching Cubes
This is the original cubic method. Desipte its age, the technique is still very much in use, but if you are interested in using marching cubes, I would suggest skipping straight to a more modern derivative.

Surface Nets
This is mentioned purely as a historical note – I believe this to be the earliest of the dual methods.

Extended Marching Cubes
This seems to be the first technique to combine cubic and dual methods.

Dual Contouring of Hermite Data
This is a newer (and generally better) combination of cubic and dual methods, plus generalistaion to octrees.

Dual Marching Cubes: Primal Contouring of Dual Grids
This is an extension of Dual Contouring to better utilise adaptive octrees.

Manifold Dual Contouring
An extension to Dual Contouring which better preserves the manifold nature of the surface.

Isosurfaces Over Simplicial Partitions of Multiresolution Grids
Improves upon Dual Marching Cubes to eliminate self-intersecting triangles in the result.

Cubical Marching Squares
An alternate approach which works on the faces of the cube rather than its content. Unique among the newer techniques, a reference implementation is provided.

Adaptive Skeleton Climbing
An entirely different approach, which operates on a large chunk of voxels at one time, generating much larger polygons as a result.

The Transvoxel™ Algorithm
An adaptation of Marching Cubes that extends the tables/lookup to prevent cracks at the boundaries between neighboring chunks that differ in level-of-detail. Used extensively in the C4 Engine’s terrain implementation.


    • Marching cubes provides the best performance, since it uses a lookup table to resolve geometry. Transvoxel is also extremely fast, but it’s optimized for massive terrains and therefore contains a lot of unnecessary optimizations for sculpting objects. If this is your first time working with isosurfaces, I would recommend starting with marching cubes.

  1. Pingback: Isosurface Extraction - 木叶清风的博客 | 木叶清风的博客

  2. I was trying out if the Cubical marching squares code supplied by the authors work.I am very curious to test it for my self, but the code supplied does not seem to compile.

    Have you or anyone you might know actually run the code,I tried mailing the authors, but did not hear back from them.

  3. Pingback: Isosurface Extraction Source | Coding By Coffee

  4. Thanks for the article, very concise.

    I am starting my masters project and I was intending to implement CMS or even ECMS if I have time. I would truly value any comments and suggestions from people with experience in that field, as I am quite new to it.

    My idea is to make it into a library but I am not certain yet, as we don’t have much time.
    If anyone knows of any problems with the algorithm or in fact a better technique, could you please inform me, I would be very grateful.

    Cheers, George.

  5. Pingback: Dual Contouring Tutorial – BorisTheBrave.Com

  6. Pingback: procshape - A procgen library | tizis devlog

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s