240 likes | 544 Views
Dual Marching Cubes: An Overview. Paper by Gregory M. Nielson. Purpose. Improve existing Marching Cube algorithm Eliminate or reduce poorly shaped triangles Eliminate or reduce wonky specular highlights. Motivation. Duality Principal of Projective Geometry
E N D
Dual Marching Cubes: An Overview Paper by Gregory M. Nielson
Purpose • Improve existing Marching Cube algorithm • Eliminate or reduce poorly shaped triangles • Eliminate or reduce wonky specular highlights
Motivation • Duality Principal of Projective Geometry • All propositions occur in dual pairs. • One can infer the corresponding proposition of a pair by interchanging the words point and line. • Dual Polyhedra • For every polyhedron there is another polyhedron where faces and vertices occupy complementary locations.
What Is Needed • Develop a correspondence between the surface elements of a mesh and the vertices of some other mesh. • Both meshes must have specific properties for this to occur.
Creating a Dual Surface • Create a “patch” surface realized by eliminating the edges of the interior surface to the voxels. • Make each patch of the new surface polygon bounded. • Include each vertex of the original MC surface in exactly four patches. • Call this surface S.
Creating a Dual Surface, pt. 2 • The dual surface will consist of quad patches. • The connectivity of the patches is the same as the connectivity of the vertices of the surface S • Now exploit duality principal.
Marching Cubes Defined • Input: Fi,j,k = F(ix, jy, kz) • Denote the voxel: (ix, jy, kz) to ((I+1)x, (j+1)y, (k+1)z) • By: Bijk • Separate lattice points with: Fi,j,k > a
Defining the Patch • The patch surface has a fine structure given that it consist of three mutually orthogonal planar curves. • Let Fj where j = 1, …, M denote the patches of S and Fj = (Vj1, V,j2 …, Vj3) where j = 1, …, M denote the vertices of each patch.
Defining the Patch, cont. • Each vertex of S lies on the edge of the lattice. • Four voxels share each edge of the lattice. • Thus each vertex, Vj, has exactly four patches of S that contain it.
Defining the Patch, cont. • Let X(X) be the space of surfaces produced by allowing the vertices of S to slide anywhere along their respective lattice edges. • The edges (of the lattice) joining a point in X to points not in X are the same edges containing the vertices of the MC surface.
Defining the Dual • For S in X(X) S is a surface comprised of quad patches with the following properties: • For each patch Fj of S there is a vertex of S lying in the interior of the voxel containing Fj • For every vertex of S there is one quad patch Pj of S • For every edge of S there is an associated edge of S
Four Adjacent Patches Dual and Patch Surface
Summary of Definitions • The topology for both the patch space, X(X), and the dual space (X) is completely determined by the subset X of the lattice L • The connectivity of the vertices of X(X) is the same as the connectivity of the patches of (X) and vice versa. • There is a one-to-one coorespondance between the edges of S and S. The edge joining two vertices of S cooresponds to the common edge of their associated quad patches.
Producing the Dual Directly • It is not necessary to produce the patch surface and then the dual surface afterwards. • There is a triangulation (quadulation?) table for computing the dual surface directly.
MC Triangulator Dual Rectangulator
Examples of the Dual Surface Splatting: Mesh Viewing:
Viewing Segmented Volumes • The original volume with the samples of the function is not needed in order to apply the algorithm. • Using the separating midpoint surface we can still view the mesh using the algorithm
Utilizing the Duality Principal • Since the correspondance is one-to-one we have an inverse mapping back into the patch space • Triangulation of Quadrilaterals will need to occur.
To Infinity and Beyond • Repeated application of the v operator leads to increasing approximation of the original object. • Eventually the v operator has no effect on the surface produced. • This staged is called the fixed-point shroud.
Summary: Pros • A definite refinement over the standard MC algorithm. • Reduces visual artifacts from elongated triangles and improves specular lighting. • Allows the user to define the level of precision in the final mesh.
Summary: Cons • Not all surfaces produced are manifolds. • Normals, Curvature, etc • Simplification, Multiresolution, etc. • Quad rendering is somewhat slower. • Complexity? • Parallelism?