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.
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.
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.
Which method would you personally recommend for realtime sculpting?
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.
Pingback: Isosurface Extraction - 木叶清风的博客 | 木叶清风的博客
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.
No, in fact I have never seen a working implementation. And sadly, I stopped research on these techniques before I was ready to implement that particular algorithm.
Has anyone else tried CMS, I am curious to know if it works.
Pingback: Isosurface Extraction Source | Coding By Coffee
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.
I managed to pull off a partial implementation of the CMS algorithm for my masters thesis.
It does not support sharp features and disambiguation YET, but I hope to continue working on it and achieve them in the near future. For now it creates manifold and adaptive (simplified) meshes, while maintaining inter-cell independence and with the real potential of being expanded into a full implementation.
You can have a look at some of the results on here:
I will try and upload the code soon too.
I just ran across your videos via Google, impressive work! I’m glad you were able to implement the algorithm.
Thanks, I will hopefully make my code open-source soon, for anyone interested in it.
any more progress on an open source of the CMS implementation?
It’s live now at: https://bitbucket.org/GRassovsky/cubical-marching-squares (still work in progress but should work)
Pingback: Dual Contouring Tutorial – BorisTheBrave.Com
Pingback: procshape - A procgen library | tizis devlog