[vtkusers] isosurfaces..??

Will Schroeder will.schroeder at kitware.com
Thu Mar 22 10:34:59 EST 2001

Hi Manan-

>    what algorithm does vtk implement in order to extract isosurfaces
>and render them ? is marching cubes the algorithm used? if so, isn't it
>true that this algorithm is not the most optimal, and there have been
>many other algorithms that have been proposed to reduce the
>computational complexities associated with isosurface extraction?
>Please tell me what algorithm is used by vtk for this purpose, and also
>how optimum have u found using it?

There are several ways to extract isosurfaces in VTK. Here are some that come to mind.

1) Marching cubes (for structured points): simple, robust, beautiful, elegant, still one of the fastest if you are extracting just one surface. Generates isosurface which is then rendered with polygonal hardware. Speeds can be further improved by creating triangle strips from the output.
2) Kitware's Synchronized Templates (for structured points): similar to marching cubes,  faster in some cases because it avoids multiple edge intersections.
3) Volume rendering an iso-surface: ray-caster solves non-linear interpolation function equations to give accurate and high quality renderings
4) Volume rendering in general: the right transfer function generates an iso-surface like image; with texture mapping acceleration or the VolumePro board you can get up to 30 fps.
5) Other data types use ContourFilter, ContourGrid, etc....which are related variations of marching cubes and optimized for a particular data type.
6) Dividing cubes generates "point cloud" representations of isosurfaces...with the right hardware, it can do this really fast.

Many of the above algorithms can and have been parallelized, either using shared-memory, threaded approaches and/or distributed memory (MPI) approaches.

Most of the work in the field has gone into algorithms that pre-process the data to build data structures that enable high-performance extraction of multiple surfaces. (The structures eliminate visits to all of the cells in the dataset.) Some, are out-of-core algorithms that do similar things but avoid the need to read in all the data. If you are extracting a single iso-surface, these algorithms don't buy you much. But if you are playing around with multiple iso-surface values, or extracting large surfaces, or have huge data on disk, they are quite useful.

A good place to starting finding references are the IEEE Visualization proceedings; there has been many the last several years.


Dr. William J. Schroeder
Kitware, Inc.
469 Clifton Corporate Parkway
Clifton Park, NY 12065
will.schroeder at kitware.com
1-518-371-3971 (Phone & Fax)

More information about the vtkusers mailing list