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)