Download presentation
Presentation is loading. Please wait.
1
Streaming Computation of Delaunay Triangulations Jack Snoeyink UNC Chapel Hill Jonathan Shewchuk UC Berkeley Yuanxin Liu UNC Chapel Hill Martin Isenburg UC Berkeley
2
The 2D Delaunay Triangulation a triangulation in which every triangle has an empty circumscribing circle important tool for interpolating points – graphics, GIS, finite elements, …
3
Billions of Points courtesy of www.ncfloodmaps.com 0.5 billion points 11 GB Neuse-River Basin Elevation map Contour map
4
Streaming Computation output to diskinput from disk small buffer in 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 finalization tags external memory small buffer in main memory another small buffer finalization tags
5
Spatial Finalization inject tags into the point stream that inform when grid cells are free of future points finalized region future points only arrive in these cells use tags to certify triangles as being part of the final triangulation and output them
6
Streaming Delaunay Spatial FinalizationIncremental Triangulation finalization tags 0.5 Billion Points 11 GB 1.0 Billion Triangles 17 GB on a laptop in 48 minutes using 60 + 10 MB
7
pipe mesh only store isolines extract isolines and discard mesh Immediate Processing of Output
8
Features 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
9
Related Work
10
Streaming Geometry Processing Streaming Meshes – topological finalization of vertices [ Isenburg & Lindstrom ‘05 ] Stream-Processing Points – globally sort points along a sweep line – derive neighbors for smoothing, normals... [ Pajarola ‘05 ] Streaming Simplification Streaming Compression
11
Delaunay 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
12
locate triangle enclosing the point Incremental Point Insertion find and remove all triangles with non- empty circumcircles triangulate by connecting new point [ Lawson ’77 ] [ Bowyer ’81 ] [ Watson ’81 ]
13
Triangulating Lots of Points buy more main memory – need 36 GB for 0.5 billion points use less memory – compress the data structures ( ratio 1:3 ) [ Blandford et al. ‘05 ] store data to external memory – Incremental Point Insertion BRIO order, virtual memory paging of OS [ Amenta et al. ‘03 ] [ Arge et al. ‘05 ] – Divide and Conquer algorithm controls temporary storage to disk
14
External Memory Methods sorted points output mesh triangulation data structure in external memory
15
Our Streaming Approach finalized points output mesh output isolines extract
16
Streaming Delaunay Pipeline spfinalize -i points.raw -ospb | spdelaunay –ispb –o tin.smb enhances points with spatial finalization uses spatial finalization to certify triangles as final
17
The Finalizer
18
Spatial Finalization of Points compute bounding box
19
2 11 3 4 5 5 1 2 6 1 8 4 7 5 5 7 1 7 4 1 9 7 6 4 Spatial Finalization of Points 8 9 7 9 8 5 4 8 2 7 7 8 8 6 77 73 9 7 88 9 6 6 2 7 2 7 3 7 5 8 79 8 7 6 compute bounding box create finalization grid – count number of points per cell
20
5 8 4 7 9 7 6 4 8 9 7 9 8 5 4 8 2 7 7 8 8 6 77 73 9 7 88 9 6 6 2 7 2 7 3 7 5 8 79 8 7 6 1 Spatial 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
21
1 7 4 7 9 7 3 4 8 9 7 9 8 5 4 8 2 7 7 8 8 6 77 73 9 7 88 9 6 6 2 7 2 7 3 7 5 8 79 8 5 6 0 Spatial 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
22
0 2 4 5 9 6 0 4 8 9 7 9 8 5 4 8 2 7 7 8 8 6 77 73 9 7 88 9 6 6 2 7 2 7 3 7 5 8 79 8 5 6 1 Spatial 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
23
0 0 3 3 9 3 0 4 8 9 7 9 8 5 4 8 2 7 7 8 8 6 77 73 9 7 88 9 6 6 2 7 2 7 3 7 5 8 79 8 0 4 1 Spatial 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
24
07 0 4 8 9 7 9 8 5 4 8 2 7 7 8 8 6 77 73 9 7 88 9 6 6 2 7 2 7 3 7 1 7 21 1 1 Spatial 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
25
02 0 4 8 9 7 9 8 5 4 8 2 4 5 1 6 5 76 88 8 6 6 2 7 2 3 1 6 1 Spatial 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
26
02 0 4 3 2 9 7 4 1 7 2 1 23 3 5 5 2 1 Spatial 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
27
02 0 4 1 Spatial 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
28
Spatial Coherence
30
Exploit the Existing Coherence raw point stream finalized point stream document with finalization tags enhance by releasing chunks of points benefits of global sort, but cheaper
31
Exploit 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
32
Unfinalized Region as Quadtree as tags finalize cell after cell, maintain remaining cells in adaptive quadtree used for efficient overlap tests by the triangulator finalization tags
33
The Triangulator
34
Modified Incremental Delaunay insert points when reading a finalization tag – find certified triangles – output them to disk or pipe – deallocate data structure
35
Modified Incremental Delaunay insert points when reading a finalization tag – find certified triangles – output them to disk or pipe – deallocate data structure
36
do circumcircles lie completely in finalized region? Finding Certified Triangles efficient testing – avoid tests – try cheaper test link overlapping circles to cells overlap test
37
Modified 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
38
Results
39
The Neuse-River Basin 6 min 36 min 52 MB 2,249,268 points 8 MB 512 x 512 grid 10 MB 60,388 triangles 0.5 Billion Points 11 GB 1.0 Billion Triangles 17 GB on a laptop in 48 minutes using 60 + 10 MB
40
Scalability: 3 x 3 Tiling of Neuse 4.5 Billion Points 101 GB 9.0 Billion Triangles 151 GB on a laptop under 7 hours using 152 + 11 MB
41
Comparisons to best out-of-core method – over 10 times faster on 0.5 billion points – laptop + 2 disks desktop & 4 disks – 0 scratch space50 GB scratch space [ Arge et al. ‘05 ] [ Shewchuk ‘96 ] to best in-core method – 30 - 60 % faster on 6 - 13 million points – despite all our extra overlap test? why? interleaving of computations and I/O better cache use due to smaller footprint
42
Discussion
43
Streaming Delaunay spfinalize -i points.raw -ospb | spdelaunay –ispb –o tin.smb enhances points with spatial finalization uses spatial finalization to certify triangles as final
44
Geometry Processing Pipelines isoline extraction raster DEM generation
45
no temporary storage to disk – output results early & reuse memory Spatial Finalization Tags order of magnitude faster than methods that use external memory no global sort – don’t fight the data, use existing coherence interleave input & computation & output – 100% CPU usage while triangulating
46
Streaming Delaunay in 3D
47
uniform distributed points – works, but bigger footprint – example result: 14 GB mesh, 2:40 hrs, 795 MB surface scans – does not work – big circumspheres intersect many cells – most tetrahedra cannot be certified early
48
Acknowledgements data – Kevin Yi, Duke support – NSF grants 0429901 + 0430065 "Collaborative Research: Fundamentals and Algorithms for Streaming Meshes." – NGA award HM1582-05-2-0003 – Alfred P. Sloan Research Fellowship
49
Thank You executables, video, slides, paper, and soon also source code: http://www.cs.unc.edu/~isenburg/sd/
50
Thank You executables, video, slides, paper, and soon also source code: http://www.cs.unc.edu/~isenburg/sd/
51
Future / Current Work Finalize without Bounding Box – eliminate 1 st 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, …
52
Sprinkle Points without sprinkle points with sprinkle points add global randomness to the point insertion order
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.