Download presentation
Presentation is loading. Please wait.
Published byGunhild Thoresen Modified over 5 years ago
1
Perform marching cubes over a sparse dual grid
Dual Marching Cubes Scott Schaefer and Joe Warren Perform marching cubes over a sparse dual grid
2
Goals: Capture thin features
& Use fewer triangles. Dual Marching Cubes (440 tris) Marching Cubes (67k tris) Dual Contouring (17k tris)
3
Process Overview: 1. Octree defines resolution
2. Grid vertex placed per octree cell at features of signed distance function 3. Dual grid edges and faces are found 4. Perform marching cubes over dual grid
4
Process Overview: 1. Octree defines resolution
2. Grid vertex placed per octree cell at features of signed distance function 3. Dual grid edges and faces are found 4. Perform marching cubes over dual grid
5
What are features of a signed distance function?
Example: Red line = isosurface
6
Features go where planes collide
Example: Grey shape = distance function
7
Thin shape will ‘grab’ vertices
8
Process to place vertices
1. Approximate surface at sample points with planes x f(x) xi Ti 1d example with one sample point
9
Process to place vertices
2. Find vertex position to minimize the Error Quadric x f(x) xi Ti Vertex v at position x’
10
Value predicted from ith sample
Actual value of f(x,y,z) x f(x) xi Ti w=f(x’) Ti(x’) Vertex v at position x’
11
x f(x) xi Ti w=f(x’) Ti(x’) (w-Ti(x’))2 = Error2 from this sample Vertex v at position x’ (Normalize by slope of Ti )
12
x f(x) xi Ti xj Tj Error min is here-ish
13
Features of distance field are not features of the surface!
f(x) Note that the 1d ‘surface’ is here f(x) x
14
Features are often near medial axis
15
Result of minimization: 1 vertex per cell
(make sure vertex is in its own cell!)
16
Process Overview: 1. Octree defines resolution
2. Grid vertex placed per octree cell at features of signed distance function 3. Dual grid edges and faces are found 4. Perform marching cubes over dual grid
17
Octree Generation Generate(Node): List samples = Sample(Node)
if (Error(samples) > thresh): Generate(Children(Node)) Sample(Node): Fine regular sampling? Random sampling? Error(samples): Error Quadric
18
Process Overview: 1. Octree defines resolution
2. Grid vertex placed per octree cell at features of signed distance function 3. Dual grid edges and faces are found 4. Perform marching cubes over dual grid
19
Dual grid looks like this:
20
dual grid: Faces become Vertices Connect Adjacent Faces’ Vertices
21
Border vertices are special
inserted where needed
22
See paper for algorithm
23
Process Overview: 1. Octree defines resolution
2. Grid vertex placed per octree cell at features of signed distance function 3. Dual grid edges and faces are found 4. Perform marching cubes over dual grid
24
Perform marching cubes
25
Perform marching cubes
Pretend you have all 8 corners for every ‘cube’ in the dual grid
26
Perform marching cubes
Should have used a finer octree
27
Problem: slivers
28
Problem: slivers Dual grid vertices near isosurface Isosurface w=0
29
Solution: push vertices to surface
Dual grid vertices near isosurface Isosurface w=0
30
Result of sliver elimination
Without sliver elim With sliver elim
31
Congratulations, you’re done.
32
Limitations? Paper shows thin features work well
But what about multiple adjacent thin features?
33
Element inversions? Can faces of the dual grid become inverted?
34
Element inversions? Can faces of the dual grid become inverted?
35
That’s all. Questions?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.