Marching Cubes A High Resolution 3D Surface Construction Algorithm

Download Report

Transcript Marching Cubes A High Resolution 3D Surface Construction Algorithm

Marching Cubes
A High Resolution 3D Surface
Construction Algorithm
Slice Data to Volumetric Data(1)
Slice Data to Volumetric Data(2)
Marching Cube






Create cells (cubes)
Classify each vertex
Build an index
Get edge list
 Based on table look-up
Interpolate triangle vertices
Obtain polygon list and do shading in image
space
Cube
Consider a cube defined by 8 data values,
4 from slice k, and another 4 from slice k+1
Classify each vertex

Label 1 or 0 as to whether it lies inside
or outside the surface
0
0
1
0
0 Match!!!
0
1
1
Build an index
Create an index of 8 bits from the binary
labeling of each vertex.
Get edge list
Give an index, store a list
of edges.
Because
symmetry
rotation :
: 256/2=128
128/8=16
256 cases are reduced to
14 cases.
Interpolate triangle vertices
X=i+
(iso_value - D(i))
(D(i+1) - D(i))
= 20
= 10
i
X
i+1
iso_value=18
i
X
i+1
iso_value=14
Problems about MC

Empty cells

30-70% of isosurface generation time was
spent in examining empty cells.

Speed

Ambiguity
The Asymptotic Decider
Resolving the Ambiguity in
Marching Cubes
Ambiguity Problem (1)

Ambiguous Face : a face that has two diagonally
oppsed points with the same sign
+
+
Ambiguity Problem (2)

Certain Marching Cubes cases have more than one
possible triangulation.
Mismatch!!!
Hole!
+
+
Case 6
+
+
Case 3
Ambiguity Problem (3)

To fix it …
Match!!!
+
+
Case 6
+
Case 3 B
+
The goal is to come up with a consistent triangulation
Asymptotic Decider (1)

Based on bilinear interpolation over faces
B11
B01
B00 B01
B10 B11
1-t
t
= B00(1- s)(1- t) + B10(s)(1- t) +
(s,t)
B00
B(s,t) = (1-s, s)
B01(1- s)(t) + B11(s)(t)
B10
The contour curves of B:
{(s,t) | B(s,t) =
a } are hyperbolas
Asymptotic Decider (2)
(1,1)
(Sa, Ta)
If B(Sa, Ta) >=
a
(0,0)
Asymptote
(Sa, Ta)
Not Separated
Asymptotic Decider (3)
(1,1)
(Sa, Ta)
If B(Sa, Ta) <
a
(0,0)
Asymptote
(Sa, Ta)
Separated
Asymptotic Decider (4)
B( Sa , 0) = B( Sa , 1)
(S1 , 1)
B( 0, Ta) = B( 1 , Ta)
(1 , T1)
(0 , T0)
Sa =
B00 - B01
B00 + B11 – B01 – B10
Ta=
B00 – B10
B00 + B11 – B01 – B10
(Sa, Ta)
(S0 , 0)
B(Sa,Ta) =
B00 B11 + B10 B01
B00 + B11 – B01 – B10
Asymptotic Decider (5)

case 3, 6, 12, 10, 7, 13

(These are the cases with at least one ambiguious faces)