220 likes | 274 Vues
Isocontour/surface Extractions. 3D Isosurface. 2D Isocontour. p5. p4. Isocontour (0). Remember bi-linear interpolation. p2. p3. To know the value of P, we can first compute p4 and P5 and then linearly interpolate P. P =?. p1. p0. p2. p3. p1. p0. Isocontour (1).
E N D
Isocontour/surface Extractions 3D Isosurface 2D Isocontour
p5 p4 Isocontour (0) Remember bi-linear interpolation p2 p3 To know the value of P, we can first compute p4 and P5 and then linearly interpolate P P =? p1 p0
p2 p3 p1 p0 Isocontour (1) Consider a simple case: one cell data set The problem of extracting an isocontour is an inverse of value interpolation. That is: Gieven f(p0)=v0, f(p1)=v1, f(p2)=v2, f(p3)=v3 Find the point(s) P within the cell that have values F(p) = C
p2 p3 p1 p0 Isocontour (2) We can solve the problem based on linear interpolation (1) Identify edges that contain points P that have value f(P) = C (2) Calculate the positions of P (3) Connect the points with lines
If v1 < C < v2 then the edge contains such a point v1 v2 Isocontouring – Step 1 (1) Identify edges that contain points P that have value f(P) = C
Use linear interpolation: P = P1 + (C-v1)/(v2-v1) * (P2 – P1) p1 P p2 v1 v2 C Isocontouring – Step 2 (2) Calculate the position of P
Connect the points with line(s) p2 p3 p1 p0 Isocontouring – Step 3 Based on the principle of linear variation, all the points on the line have values equal C
p2 p3 So there can be 2 * 2 * 2 * 2 = 16 cases! p1 p0 Isocontour cases How many cases can an isocontour intersect a cell? When comparing the value of Pi with the isovalue C, there can be two cases: Vi > = C or Vi < C
(2) One inside(outside), 3 outside(inside) (1) Complete outside(inside) (3) Two inside(outside), two outside(inside) (4) Two contours pass through How many cases again? In fact, there are only 4 unique topological cases
p2 p2 p3 p3 p1 p1 p0 p0 - - + outside cell inside cell Inside or Outside? • Just a naming convention • If a value is smaller than the isovalue, we call it “Inside” • If a value is greater than the isovalue, we call it “Outise”
Put it all together • Divide-and-conquer algorithm • Look at one cell at a time • Compare the values at 4 vertices with the isovalue C • Linear interpolate along the edges • Connects the interpolated points together
Isosurface Extraction • Extend the same divide-and-conquer algorithm to three dimension • 3D cells • Look at one cell at a time • Let’s only focus on voxel
_ + + _ _ + + _ _ + + _ _ + + _ Divide-and-Conquer (2 triangles)
Now we have 8 vertices So it is: 2 = 256 8 How many unique topological cases? How many cases?
_ _ + + _ + + _ _ _ + + _ + _ + Case Reduction (1) Value Symmetry
_ _ _ _ _ + _ + _ _ _ _ _ _ + + Case Reduction (2) Rotation Symmetry By inspection, we can reduce 256 14
Isosurface Cases Total number of cases: 14
Marching Cubes Algorithm A Divide-and-Conquer Algorithm Vi is ‘1’ or ‘0’ (one bit) 1: > C; 0: <C (C= sovalue) Each cell has an index mapped to a value ranged [0,255] Index = v8 v7 v6 v5 v4 v3 v2 v1 v8 v7 v4 v3 v6 v5 v2 v1
Marching Cubes (2) Given the index for each cell, a table lookup is performed to identify the edges that has intersections with the isosurface Index intersection edges 0 e1, e3, e5 e7 … 1 e11 e8 e12 e6 2 e3 e5 3 e2 e4 e9 e10 e1 14
+ _ + _ + _ + _ Marching Cubes (3) • Perform linear interpolations • at the edges to calculate the • intersection points • Connect the points
Why is it called marching cubes? • Linear search through cells • Row by row, layer by layer • Reuse the interpolated points • for adjacent cells