Title: Streaming Computation of Delaunay Triangulations
1Streaming Computation of Delaunay
Triangulations
Jonathan ShewchukUC Berkeley
Martin IsenburgUC Berkeley
Jack SnoeyinkUNC Chapel Hill
Yuanxin LiuUNC Chapel Hill
2The 2D Delaunay Triangulation
- important tool for interpolating points
- graphics, GIS, finite elements,
- a triangulation in which every triangle has an
empty circumscribing circle
3Billions of Points
courtesy of www.ncfloodmaps.com
4Streaming Computation
output to disk
input from disk
small bufferin main memory
- restrict computations to data in buffer
- process data in the order it arrives
- output results early and reuse the memory
- do not use external memory
5Spatial Finalization
- inject tags intothe point streamthat inform
whengrid cells are freeof future points
finalized region
future pointsonly arrive inthese cells
- use tags to certify triangles as beingpart of
the finaltriangulation andoutput them
6Streaming Delaunay
Spatial Finalization
Incremental Triangulation
0.5 Billion Points 11 GB
1.0 Billion Triangles 17 GB
?
on a laptop ? in 48 minutes ? using 60 10 MB
7Immediate Processing of Output
8Features of Streaming Delaunay
- efficient
- 10 faster than previous method
- extremely scalable
- billions of terrain points on a laptop
- streaming output
- process triangulation without storing it
- only uniform points distributions
- can tetrahedralize 3D points
- but not when point are along a surface
9Related Work
10Streaming Geometry Processing
- Streaming Meshes
- topological finalization of vertices
Isenburg Lindstrom 05
Streaming Compression
Streaming Simplification
11Delaunay Triangulators
- Sweep line
- pretty complex implementation
- points along sweep line ? global sort
- Divide and Conquer
- fastest in practice (in main memory)
- partition points recursively ? global sort
- Incremental Point Insertion
- usually fast (except for bad orders)
- can process points in any order
12Incremental Point Insertion
Lawson 77 Bowyer 81 Watson 81
- locate triangle enclosing the point
- find and remove all triangles with non-empty
circumcircles
- triangulate by connecting new point
13Triangulating Lots of Points
- buy more main memory
- need 36 GB for 0.5 billion points
14External Memory Methods
sorted points
15Our Streaming Approach
finalized points
output mesh
16Streaming Delaunay Pipeline
spfinalize -i points.raw -ospb spdelaunay ispb
o tin.smb
enhances points withspatial finalization
uses spatial finalizationto certify triangles as
final
17The Finalizer
18Spatial Finalization of Points
? compute bounding box
19Spatial Finalization of Points
- ? compute bounding box
- ? create finalization grid
- count number of points per cell
20Spatial Finalization of Points
- ? compute bounding box
- ? create finalization grid
- count number of points per cell
- ? output finalized points
- buffer per grid cell
- if full, output points in one randomized
chunk followed by finalization tag
21Spatial Finalization of Points
- ? compute bounding box
- ? create finalization grid
- count number of points per cell
- ? output finalized points
- buffer per grid cell
- if full, output points in one randomized
chunk followed by finalization tag
22Spatial Finalization of Points
- ? compute bounding box
- ? create finalization grid
- count number of points per cell
- ? output finalized points
- buffer per grid cell
- if full, output points in one randomized
chunk followed by finalization tag
23Spatial Finalization of Points
- ? compute bounding box
- ? create finalization grid
- count number of points per cell
- ? output finalized points
- buffer per grid cell
- if full, output points in one randomized
chunk followed by finalization tag
24Spatial Finalization of Points
- ? compute bounding box
- ? create finalization grid
- count number of points per cell
- ? output finalized points
- buffer per grid cell
- if full, output points in one randomized
chunk followed by finalization tag
25Spatial Finalization of Points
- ? compute bounding box
- ? create finalization grid
- count number of points per cell
- ? output finalized points
- buffer per grid cell
- if full, output points in one randomized
chunk followed by finalization tag
26Spatial Finalization of Points
- ? compute bounding box
- ? create finalization grid
- count number of points per cell
- ? output finalized points
- buffer per grid cell
- if full, output points in one randomized
chunk followed by finalization tag
27Spatial Finalization of Points
- ? compute bounding box
- ? create finalization grid
- count number of points per cell
- ? output finalized points
- buffer per grid cell
- if full, output points in one randomized
chunk followed by finalization tag
28Spatial Coherence
29Spatial Coherence
30Exploit the Existing Coherence
- document with finalization tags
- enhance by releasing chunks of points
- ? benefits of global sort, but cheaper
raw point stream
finalized point stream
31Exploit the Existing Coherence
- document with finalization tags
- enhance by releasing chunks of points
- ? benefits of global sort, but cheaper
raw point stream
finalized point stream
32Unfinalized Region as Quadtree
- as tags finalize cell after cell, maintain
remaining cells in adaptive quadtree - ? used for efficient overlap tests by the
triangulator
33The Triangulator
34Modified Incremental Delaunay
- when reading afinalization tag
- find certified triangles
- output them to disk or pipe
- deallocate data structure
35Modified Incremental Delaunay
- when reading afinalization tag
- find certified triangles
- output them to disk or pipe
- deallocate data structure
36Finding Certified Triangles
- do circumcircleslie completely infinalized
region?
? overlap test
- efficient testing
- avoid tests
- try cheaper test
- link overlappingcircles to cells
37Modified Point Location
- usual strategy
- walk current triangulation starting at the
newest triangle
- if we fail
- restart from a triangle linked with the cell
- brute force
38Results
39The Neuse-River Basin
6 min
10 MB60,388 triangles
8 MB512 x 512 grid
6 min
52 MB 2,249,268 points
36 min
1.0 Billion Triangles 17 GB
0.5 Billion Points 11 GB
?
on a laptop ? in 48 minutes ? using 60 10 MB
40Scalability 3 x 3 Tiling of Neuse
9.0 Billion Triangles 151 GB
4.5 Billion Points 101 GB
?
on a laptop ? under 7 hours ? using 152 11
MB
41Comparisons
- to best out-of-core method
- over 10 times faster on 0.5 billion points
- laptop 2 disks desktop 4 disks
- 0 scratch space 50 GB scratch space
Arge et al. 05
42Discussion
43Streaming Delaunay
spfinalize -i points.raw -ospb spdelaunay ispb
o tin.smb
enhances points withspatial finalization
uses spatial finalizationto certify triangles as
final
44Geometry Processing Pipelines
45Spatial Finalization Tags
- order of magnitude faster than methods that use
external memory
- no temporary storage to disk
- output results early reuse memory
- interleave input computation output
- 100 CPU usage while triangulating
- no global sort
- dont fight the data, use existing coherence
46Streaming Delaunay in 3D
47Streaming Delaunay in 3D
- uniform distributed points
- works, but bigger footprint
- example result
- 14 GB mesh, 240 hrs, 795 MB
- surface scans
- does not work
- big circumspheres intersect many cells
- most tetrahedra cannot be certified early
48Acknowledgements
- data
- Kevin Yi, Duke
- support
- NSF grants 0429901 0430065
- "Collaborative Research Fundamentalsand
Algorithms for Streaming Meshes." - NGA award HM1582-05-2-0003
- Alfred P. Sloan Research Fellowship
49Thank You
executables, video, slides, paper, and soon also
source code http//www.cs.unc.edu/isenburg/sd/
50Thank You
executables, video, slides, paper, and soon also
source code http//www.cs.unc.edu/isenburg/sd/
51Future / Current Work
- Finalize without Bounding Box
- eliminate 1st pass of finalizer
- Streaming Constrained Delaunay
- crucial in GIS applications
- Triangulate 3D surface points
- data-dependent spatial finalization
- Spatial Finalization for other algorithm
- surface reconstruction,
52Sprinkle Points
- add global randomness to the point insertion order
without sprinkle points
with sprinkle points