Difference between revisions of "ImprovingMeshQualityOfMarchingCubes"

From VistrailsWiki
Jump to navigation Jump to search
 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
== The paper ==
[[Image:Macet_paper_teaser.png]]


Carlos Dietrich, Joao Comba, Luciana Nedel, Carlos Scheidegger, John Schreiner, Claudio Silva. Edge Transformations for Improving Mesh Quality of Marching Cubes. 2007, submitted.
Carlos Dietrich, Joao Comba, Luciana Nedel, Carlos Scheidegger, John Schreiner, Claudio Silva. Edge Transformations for Improving Mesh Quality of Marching Cubes. 2007, submitted.


== Reproducing the results ==
=== Abstract ===


The results in this paper can be completely reproduced using open-source software and publicly available datasets. We will soon post here the set of workflows needed to run the experiments directly in VisTrails, along with the necessary software.
Marching Cubes is a popular choice for isosurface
extraction from regular grids due to its simplicity, robustness, and
efficiency.  One of the key shortcomings of this approach is the
quality of the resulting meshes, which tend to have many poorly
shaped and degenerate triangles.
This issue is often addressed
through post processing operations such as smoothing.  As we
describe, while these improve the mesh, they do not remove all
degeneracies, and incur an increased and unbounded error between the
resulting mesh and the  original isosurface. 
Rather than modifying the resulting mesh, we propose a method
to modify the grid on which Marching Cubes operates.
This modification greatly increases the quality of the extracted
isosurface. In our experiments, it did not create a single
degenerate triangle, unlike any other method we experimented with.
Our method essentially eliminates postprocessing related to mesh
quality. We show improvements in subsequent mesh processing,
using the generated surface directly as input to a tetrahedral mesh
generator.
The method incurs minimal computational overhead,
requiring at most twice the execution time of the original Marching
Cubes algorithm in our experiments. Most importantly, it can be
readily integrated in existing Marching Cubes implementations, and is
orthogonal to many Marching Cubes enhancements (such as out-of-core
and acceleration methods). The method can also be directly applied
to other related isosurface extraction algorithms such as Marching
Tetrahedra, and Marching Octahedra.


== Necessary software ==
== Get the software ==


=== Our algorithm ===
To compile the basic software, which generates isosurfaces using Macet, you will need [http://teem.sourceforge.net teem] and [http://www.boost.org boost] to be installed. There is a linux makefile and a Visual Studio solution file available. The source is available [http://www.sci.utah.edu/~cscheid/software/macet.tar.gz here (.tar.gz)] or [http://www.sci.utah.edu/~cscheid/software/macet.zip here (.zip)]


[http://www.sci.utah.edu/~cscheid/software/ectmc/ectmc.zip ZIP File]
== Usage ==


[http://www.sci.utah.edu/~cscheid/software/ectmc/ectmc.tar.gz Gzipped tarball]
To generate a macet isosurface:


=== Requirements ===
./macet <nrrd_file> <iso_value> <output_off_file> -isCombined


[http://teem.sourceforge.net/ Teem]
To generate a regular Marching Cubes isosurface:


[http://www.cs.princeton.edu/gfx/proj/trimesh2/ Trimesh2]
./macet <nrrd_file> <iso_value> <output_off_file>
 
[http://www.boost.org/ Boost]
 
[http://vcg.sourceforge.net/tiki-index.php?page=Metro Metro]
 
[http://tetgen.berlios.de/ Tetgen]
 
== Datasets ==
 
The datasets we used are all available on the [http://www.volvis.org Volvis website]. We use the NRRD toolset to access the data, so you need the NRRD header files to go with the raw volumes. You can get the NRRD headers and dataset we used [http://www.sci.utah.edu/~cscheid/software/ectmc/data here].
 
== Running the Experiments ==
 
The easiest way to run the experiments is through VisTrails. We will provide a vistrail with all the necessary workflows (comparisons, mesh quality histograms, distance measures). For that you'll need VisTrails proper and some additional software.
 
* [http://www.vtk.org VTK] Version 5.0 or higher, with Python bindings
* [http://matplotlib.sourceforge.net] Matplotlib
* [http://afront.sourceforge.net] Afront
 
== How not to compile anything ==
 
If you run Ubuntu Linux, you can simply add our APT repository
 
deb http://vgc.sci.utah.edu/ubuntu edgy main
 
and install the package "ectmc" we are currently creating. This will install all the software you need with the right versions, so running the experiments will be a matter of downloading the actual vistrail containing the workflows and running it:
 
# apt-get install ectmc
 
Follow [[InstallingVisTrailsOnUbuntu | these instructions]].
 
== How not to install anything ==
 
You can burn one of the Live CDs we will provide here, for i386 or amd64. Boot into Ubuntu, and double click on the VisTrails icon. It will open VisTrails with the right file.

Latest revision as of 20:39, 21 June 2007

Macet paper teaser.png

Carlos Dietrich, Joao Comba, Luciana Nedel, Carlos Scheidegger, John Schreiner, Claudio Silva. Edge Transformations for Improving Mesh Quality of Marching Cubes. 2007, submitted.

Abstract

Marching Cubes is a popular choice for isosurface extraction from regular grids due to its simplicity, robustness, and efficiency. One of the key shortcomings of this approach is the quality of the resulting meshes, which tend to have many poorly shaped and degenerate triangles. This issue is often addressed through post processing operations such as smoothing. As we describe, while these improve the mesh, they do not remove all degeneracies, and incur an increased and unbounded error between the resulting mesh and the original isosurface. Rather than modifying the resulting mesh, we propose a method to modify the grid on which Marching Cubes operates. This modification greatly increases the quality of the extracted isosurface. In our experiments, it did not create a single degenerate triangle, unlike any other method we experimented with. Our method essentially eliminates postprocessing related to mesh quality. We show improvements in subsequent mesh processing, using the generated surface directly as input to a tetrahedral mesh generator. The method incurs minimal computational overhead, requiring at most twice the execution time of the original Marching Cubes algorithm in our experiments. Most importantly, it can be readily integrated in existing Marching Cubes implementations, and is orthogonal to many Marching Cubes enhancements (such as out-of-core and acceleration methods). The method can also be directly applied to other related isosurface extraction algorithms such as Marching Tetrahedra, and Marching Octahedra.

Get the software

To compile the basic software, which generates isosurfaces using Macet, you will need teem and boost to be installed. There is a linux makefile and a Visual Studio solution file available. The source is available here (.tar.gz) or here (.zip)

Usage

To generate a macet isosurface:

./macet <nrrd_file> <iso_value> <output_off_file> -isCombined

To generate a regular Marching Cubes isosurface:

./macet <nrrd_file> <iso_value> <output_off_file>