Unconstrained Isosurface Extraction on Arbitrary Octrees Michael Kazhdan, Allison Klein, Ketan Dalal, Hugues Hoppe Implicit Representation In many graphics applications, a 3D model is represented by an implicit.

Download Report

Transcript Unconstrained Isosurface Extraction on Arbitrary Octrees Michael Kazhdan, Allison Klein, Ketan Dalal, Hugues Hoppe Implicit Representation In many graphics applications, a 3D model is represented by an implicit.

Unconstrained Isosurface
Extraction on
Arbitrary Octrees
Michael Kazhdan,
Allison Klein,
Ketan Dalal,
Hugues Hoppe
Implicit Representation
In many graphics applications, a 3D model is
represented by an implicit function:



Reconstruction
Fluid Dynamics
3D Texturing
Kazhdan 2005
Losasso et al. 2004
Octree Representation
To minimize the spatial/temporal complexity, the
function is often sampled on an adaptive grid
Popinet 2003
Kazhdan et al. 2006
Octree Extraction
Often, in the final processing step, we would like to
extract an implicit surface from the function
representation.
Marching Cubes
If the function is sampled on a regular voxel grid,
we can independently triangulate each voxel.
Marching Cubes
Although each of the voxels is triangulated
independently, the mesh is always water-tight.
Marching Cubes
Iso-vertices on an edge are only determined by the
values on the corner of the edge:
 Iso-vertices are consistent across voxels.
Marching Cubes
Iso-edges on a face are only determined by the
values on the face:
 Each iso-edge is shared by two triangles so the
mesh is water-tight.
Challenges
Extracting a surface by independently triangulating
the leaf octants, depth-disparities can cause:

Inconsistent extrapolation to edges
 Inconsistent iso-vertex positions
Challenges
Extracting a surface by independently triangulating
the leaf octants, depth-disparities can cause:

Inconsistent extrapolation to faces
 Inconsistent iso-edges
Outline
Introduction
 Related Work
 Approach
 Evaluation
 Conclusion

Related Work [Bloomenthal ’88]
Uses an octree representation of the EDT
for adaptive surface polygonization
1,150,915 Vertices
2,301,826 Triangles
139,211 Vertices
106,717 Polygons
Related Work [Bloomenthal ’88]
Approach:

Use finer edges to define iso-vertices.
Related Work [Bloomenthal ’88]
Approach:

Use finer edges to define iso-vertices.
 Use finer faces to define iso-edges
Related Work [Bloomenthal ’88]
Properties:


Triangles become polygons
Each iso-edge is shared by two polygons
Related Work [Bloomenthal ’88]
Properties:


Triangles become polygons
Watertight
mesh!
Each
iso-edge is polygon
shared by two
polygons
Related Work [Bloomenthal ’88]
Properties:


Triangles become polygons
Watertight
mesh!
Each
iso-edge is polygon
shared by two
polygons
Limitation:
There cannot be more than one isovaluecrossing along an edge of a leaf octant.
Related Work
Although this limitation can be resolved by:




Refining the octree
Restricting the topology
Modifying corner values
Re-sampling
[Bloomenthal 88, Muller et al. 93]
[Westermann et al. 99]
[Velasco and Torres 01]
[Ju et al. 02, Schaefer et al. 04]
we want a solution that is true to the input.
Outline
Introduction
 Related Work
 Approach


Edge-Trees (Polygonization)
 Triangulation
Evaluation
 Conclusion

Edge-Trees
The topology of the
octree defines a set
of binary trees:
a0
a
a10
a1
a11
Nodes in the edge-trees
a
Edges of octree nodes
a0
a1
a10
a11
Edge-Trees
The topology of the
octree defines a set
of binary trees:
a0
a
a10
b10
a1
b1
a11
b11
Nodes in the edge-trees
a
Edges of octree nodes
a0
a1
a10
b1
a11 b10
b11
Edge-Trees
The topology of the
octree defines a set
of binary trees:
a0
b0
a
a10
b10
a1
b1
a11
b11
Nodes in the edge-trees
a
Edges of octree nodes
a0
a1
a10
b1
a11 b10
b0
b11
Edge-Trees
The topology of the
octree defines a set
of binary trees.
Given an isovalue:
Can label nodes in
the edge-tree (0/1).
a0
b0
a
a10
b10
a1
b1
a11
b11
a
0
a0
a1
1
b1
1
a10
0
b0
0
a11 b10
1
1
0
b11
1
Edge-Trees
a
Note:
 Parents’ values are
determined by values
of their children.
 Isovalue-crossing
a0
nodes/edges have
1
exactly one child that
is isovalue-crossing.
a0
b0
a10
b10
a1
b1
a11
b11
a
0
a1
b1
1
a10
0
b0
0
a11 b10
1
1
0
b11
1
Outline
Introduction
 Related Work
 Approach

 Edge-Trees
(Polygonization)
Iso-Vertex Consistency
 Polygonization

 Triangulation
Evaluation
 Conclusion

Iso-Vertex Consistency
We define the position of an iso-vertex in terms
of leaf nodes in the edge-tree.
e
e’
e
0
1
1
1
1
e’
1
0
Iso-Vertex Consistency
We define the position of an iso-vertex in terms
of leaf nodes in the edge-tree:

An isovalue-crossing edge defines a unique
path to a leaf node in an edge-tree.
e
e’
e
0
1
1
1
1
e’
1
0
Polygonization
Observation:
Number of unsealed
iso-vertices along an
octant edge is even.
Generate polygons by
stitching pairs of
unsealed iso-vertices.
Polygonization
Challenge:
With more than two
unsealed iso-vertices,
which pairs do we
stitch together?
?
?
Polygonization
Challenge:
With more than two
unsealed iso-vertices,
which pairs do we
Sequential pairings
stitch together?
? can lead ?to
inconsistent (i.e. non watertight) results!
Polygonization
We stitch unsealed iso-edges in a canonical
manner by defining the twin of an iso-vertex:
e
0
?
?
0
v
1
e
1
1
v
1
1
Polygonization
We stitch unsealed iso-edges in a canonical
manner by defining the twin of an iso-vertex:

An iso-vertex ve is unsealed if the path from v
e
to e passes through a 0-labeled node.
0
?
?
0
v
1
e
1
1
v
1
1
Polygonization
We stitch unsealed iso-edges in a canonical
manner by defining the twin of an iso-vertex:


An iso-vertex ve is unsealed if the path from v
e
to e passes through a 0-labeled node.
0
The other child of the 0-labeled node
?
?
also defines an unsealed iso-vertex.
0
v
1
e
1
v’
1
v
1
1
v’
Polygonization
We stitch unsealed iso-edges in a canonical
manner by defining the twin of an iso-vertex:

An iso-vertex ve is unsealed if the path from v
e
to e passes through a 0-labeled node.
0
 The other child of the 0-labeled node
Foralso
octrees,
type of pairing
always?leads
to
?
definesthis
an unsealed
iso-vertex.
consistent (i.e. watertight) polygonization!
0
v
1
e
1
v’
1
v
1
1
v’
Outline
Introduction
 Related Work
 Approach


Edge-Trees (Polygonization)
 Triangulation
Evaluation
 Conclusion

Triangulation
To obtain a triangulated surface, we need to
triangulate the leaf octants’ iso-polygons.
Triangulation
Challenge:
In general, triangulating a 3D polygon is
both open and hard [Barequet et al. ’98]:
 Open:
Determining if it can be triangulated
requires determining if it’s knotted.
 Hard: Even if it can be, this may require
introducing exponentially many new vertices.
Triangulation
Observation:
The polygon is on the surface of a convex solid.
Triangulation
Observation:
The polygon is on the surface of a convex solid.
Minimal Surfaces [Meeks and Yau ’80]:
A minimal area surface of a simple closed curve
on the surface of a convex solid is embedded.
Triangulation
Observation:
The polygon is on the surface of a convex solid.
Minimal Surfaces [Meeks and Yau ’80]:
A minimal area surface of a simple closed curve
on the surface of a convex solid is embedded.
Approach:
Triangulate the polygonization by computing the
minimal area triangulation [Barequet et al. ’95].
Outline
Introduction
 Related Work
 Approach
 Evaluation
 Conclusion

Evaluation
To evaluate the extraction method, we used
an octree to adaptively sample the EDT of a
mesh and then
extracted the
zero-crossing
isosurface.
1,150,915 Vertices
2,301,826 Triangles
139,211 Vertices
106,717 Polygons
Evaluation (Restricted Octrees)
Previous work addresses the problem by
restricting the depth disparity between
adjacent leaf octants [Westermann et al. ’99].
Unrestricted Tree
Restricted Tree
Evaluation (Restricted Octrees)
Original
173,974 Vertices
345,944 Triangles
Simplified
(Restricted)
Simplified
(Unrestricted)
68,572 Vertices
58,876 Polygons
64,639 Vertices
53,304 Polygons
Evaluation (Restricted Octrees)
Original
173,974 Vertices
345,944 Triangles
Simplified
(Restricted)
Simplified
(Unrestricted)
68,572 Vertices
58,876 Polygons
181,161 Nodes
64,639 Vertices
53,304 Polygons
106,745 Nodes
Evaluation (Restricted Octrees)
Original
173,974 Vertices
345,944 Triangles
Simplified
(Restricted)
Simplified
(Unrestricted)
68,572 Vertices
58,876 Polygons
181,161 Nodes
64,639 Vertices
53,304 Polygons
106,745 Nodes
Evaluation (Restricted Octrees)
Original
Simplified
(Restricted)
Simplified
(Unrestricted)
543,652 Vertices
1,087,716 Triangles
145,829 Vertices
125,858 Polygons
380,681 Nodes
128,146 Vertices
104,868 Polygons
205,617 Nodes
Evaluation (Restricted Octrees)
Original
Simplified
(Restricted)
Simplified
(Unrestricted)
543,652 Vertices
1,087,716 Triangles
145,829 Vertices
125,858 Polygons
380,681 Nodes
128,146 Vertices
104,868 Polygons
205,617 Nodes
Outline
Introduction
 Related Work
 Approach
 Evaluation
 Conclusion

Contribution
We have shown that an octree defines a set
of binary edge-trees that provide a solution
to the surface extraction problem:
Contribution
We have shown that an octree defines a set
of binary edge-trees that provide a solution
to the surface extraction problem:

We walk down the tree to define
iso-vertex positions consistently
e
0
e’
1
1
1
e
1
1
0
Contribution
We have shown that an octree defines a set
of binary edge-trees that provide a solution
to the surface extraction problem:

We walk up an then down the
tree to stitch up iso-polygons
e
0
?
?
0
v
1
e
1
v’
1
v
1
1
v’
Conclusion
Using the edge-trees, we can extract a
watertight isosurface in a local manner:

For arbitrary tree topology/values
 Without knowing the original implicit function
 Independent of the isovalue
871,414 Triangles
73,164 Polygons
181,052 Triangles
Thank You!
http://www.cs.jhu.edu/~misha/Code/IsoOctree/