350 likes | 556 Views
Algorithms for Triangulations of a 3D Point Set. Géza Kós Computer and Automation Research Institute Hungarian Academy of Sciences Budapest, Kende u. 13-17 H-1111. Algorithms for Triangulations of a 3D Point Set. Problem description Tools Methods by parametrisation
E N D
Algorithms for Triangulations of a 3D Point Set Géza Kós Computer and Automation Research Institute Hungarian Academy of Sciences Budapest, Kende u. 13-17 H-1111
Algorithms for Triangulations of a 3D Point Set • Problem description • Tools • Methods by parametrisation • Methods based on Delaunay tessellation • Methods using implicit functions • Delaunay triangulation in surface metrics
Problem description • Unorganised set of points in the 3D space • Assumed to be on a 2D surface. • Reconstruct surface by creating a triangulation • Interpolation: Use only given points as vertices • Aproximation: Allowed to use artificial vertices • Related problem: reconstructing curves in 2D or 3D
Optional assumptions on the surface • Manifold, not self-intersecting • Open boundaries, holes • „Handles” (genus>0) • Not oriented
Typical properties of measured point clouds • Uneven density • Density depends on direction • Missing points (small holes) • Noise
Tools: Voronoi diagram and Delaunay tessellation • Well defined in higher dimensions • Local, simple geometric criteria • Can be defined in manifolds as well
Tools: Extraction of implicit functions by marching cubes • Marching cubes • Divide space into cubes • Compute value of the function at the lattice points • Create vertices on edges if signs opposite • Create triangles connecting the vertices • Define rules to create triangles • Marching tetrahedra
Methods by projection • Project vertices to a carrier surface • Triangulate in parameter domain
Methods by convex combinations Floater 2000; Hormann & Floater 2002 • Find boundary of the surface • Map boundary to a convex polygon in the plane • Map interior vertices such that each map is an average of its neighbours • Triangulate in plane • Works for simply connected surfaces
Methods based on Delaunay tetrahedralization Boissonat 1984; Veltkamp 1995; Amenta et al 1998 • Build 3D Delaunay tessellation first • Discard large tetrahedra • Take boundary • Repair
Methods based on alpha-shapes Bajaj et al 1996; Guo et al 1997; Bernardini 1997 • Alpha shape: a subset of the edges, triangles and tetrahedra of Delaunay tetrahedralization • Size is measured by radius of smallest empty sphere
Methods extracting implicit functions Hoppe 1992 • Implicit function to estimate signed distance • Valid for „close” points in the space • Signed distance from tangent plane at closest vertex • Requires oriented normal vectors; minimal spanning tree (MST) • Needs postprocessing
Reconstructing Delaunay triangulation in surface metrics G. Kós 1998 • Generalised Delaunay triangulation • No artificial points • Reconstruct arbitrary 3D datasets with uneven distribution • Not projectable • Handles holes and open boundaries • Not oriented surfaces
Generalised Delaunay triangulation on surfaces • Voronoi diagram and Delaunay triangulation on a surface
Advantages of the Delaunay triangulation • Local criteria to choose triangles • Simple incremental algorithm • Result does not depend on the order of points
Angle criterion in the plane • For quadrilateral ABCD, set triangle pair by comparing a+g with b+d • Valid on surfaces with constant curvature
Projected angles • To estimate angle BAC, project B and C to the tangent plane at A
Overview of the algorithm • 1. Pre-processing • 1.1. Cluster points, remove multiple ones • 1.2. Build neighbourhood graph • 1.3. Estimate local density and maximum triangle size • 1.4. Compute normal vectors • 2. Main steps • 2.1. Create candidate triangles around each point • 2.2. Select consistent triangles • 2.3. Fill holes • 2.4. Insert non-processed points • 3. Post-processing • 3.1. Smooth
1.1. Clustering points • Put vertices into clusters (octtree) • Remove coincident points 1.2. Build neighbourhood graph • Connect each point with some close ones • Call vertices neighbours if connected
1.3. Compute local density • Estimate density of point-set at each point • Compute local maximum triangle size 1.4. Compute normal vectors • Compute surface normal at each vertex
2.1. Create candidate triangles around each vertex • Around each vertex P, reconstruct the triangles of the Delaunay triangulation • Start with single vertex P • Add new vertices one by one, i.e. create and delete triangles according to the angle criterion • Allocate buffer to record vertices which are candidates to be a vertex of a triangle
2.1. Inserting a new point • Projection of the existing points B1, …, Bk define several angle domains in the tangent plane at P. • To add a new point C, find the angle PBiBi+1 containing C. • Test distance of C and the angle criterion for quadrilateral PBiCBi+1. If test holds, insert C. • Apply another tests to decide whether to keep or delete Bi and Bi+1
2.1. Flowchart of creating triangles Mark neighbours of P. Put them to the buffer Buffer empty? yes Stop Start no Remove the closest point from the buffer, call it C. Take unmarked neighbours of C, mark them and put them to the buffer. no Insert C to the triangulation? Insert C and change triangles yes
2.2. Select consistent triangles • Candidate triangles may contradict to each other • Select an appropriate subset of triangles • Discard too large triangles • Mesh must remain manifold • Mesh must remain oriented • Triangles must not overlap
2.2. (cont’d) Sort the triangles before registration • Some triangles are better than others • Each triangle has votes from the vertices • Compute smoothness errors from normal vectors at vertices • Sort triangles by these two properties
2.3. Filling holes • Generalising a planar method • Easy to triangulate a convex polygon by comparing angles
2.3. (cont’d) Filling holes in 3D • Hole P1P2…Pn bounded by triangles P1P2Q1, P2P3Q2, …, PnP1Qn, shortest edge P1P2 • Set 2<k<n • Angle between triangles P1P2Q1, P1P2Pk must be greater than 90 degrees, if possible • Angle P1PkP2 must be maximal.
2.4. Insert non-processed points • Insert vertices which do not belong to any triangles to the closest triangle
3.1. Smoothing • Apply a smoothing step to improve quality of the triangle mesh. • Principle: edge-swapping
Examples • Giraffe (from METROCAD GmbH, Saarbrücken). 6611 points, 13048 triangles.
Examples • Stanford Bunny. 35947 points, 69451 triangles.
Examples • Klein’s bottle (synthetic data). 8853 points, 17695 triangles.
Some problems • Find an efficient algorithm to build 3D Delaunay tessellation; • Handle sharp features (e.g. dihedral angles <90 degrees) • Find oriented normal vectors for sample points • Construct subdivision schemes to extract implicit surfaces