Part Two Multiresolution Analysis of Arbitrary Meshes M. Eck, T. DeRose, T. Duchamp, H. Hoppe, M. Lounsbery, W. Stuetzle SIGGRAPH 95 Outline • Partition using Voronoi diagram and Delaunay triangulation • Parameterization using Harmonic Maps Original mesh Base complex Applications • Remeshing – subdivision connectivity • Multiresolution analysis and editing • Level-of-detail Harmonic Maps • Defined for topological disks • Minimize distortion in some sense • Do not guarantee an embedding (triangles flips may occur) • Require boundary conditions Harmonic Maps - definition Input: mesh G with disk topology: N vertices {p1, …, pn , …, pN} where p1, …, pn are boundary vertices Goal: Compute an embedding h of G h(i) = qi = (ui , vi) i = 1, …, N Harmonic Maps - definition • The boundary vertices are mapped to a convex polygon in the parameter domain • Treat each mesh edge as a spring, find mappings for inner vertices s.t. the energy of the spring system is minimal Boundary conditions - corner vertices Mapping inner vertices Harmonic mapping • Strives to preserve angles (conformal) • We treat the mesh as a system of springs. • Define spring energy: Eharm 1 ki , j vi v j 2 (i , j )E 2 where vi are the flat positions, and the boundary vertices v1, v2, …, vn are constrained. Energy minimization – least squares • We want to find such flat positions that the energy is as small as possible. • Solve the linear least squares problem! vi ( xi , yi ) 1 , yN ) 2 Eharm ( x1 , , xN , y1 , 1 2 ki , j ( xi x j ) 2 ( yi y j ) 2 ( i , j )E ( i , j )E ki , j v i v j Eharm is function of 2(N–n) variables 2 Energy minimization – least squares • To find minimum: Eharm= 0 1 Eharm xi 2 1 Eharm yi 2 2k jN ( i ) i, j 2k jN ( i ) i, j ( xi x j ) 0 ( yi y j ) 0 • Again, x1,…., xn and y1, …, yn are constrained. Energy minimization – least squares • To find minimum: Eharm= 0 ki , j ( xi x j ) 0, i 1, 2, , N ki , j ( yi y j ) 0, i 1, 2, , N jN ( i ) jN ( i ) • Again, x1,…., xn and y1, …, yn are constrained. The spring constants ki,j • The weights ki,j are chosen to minimize angles distortion: – Look at the edge (i, j) in the 3D mesh – Set the weight ki,j = cot + cot i j 3D Partition • Compute Voronoi diagram on the mesh • Compute induced Delaunay triangulation • Construct the base mesh Voronoi Diagram • Given s faces (= sites) on the surface, expand patches (= Voronoi cells) around each one, using s-source Dijkstra algorithm • How to choose the sites? – Each Voronoi cell must be a topologic disk – Pair of cells share at most one cut – No more than three cells share a vertex Voronoi Diagram Voronoi Diagram Each cell is a topological disk Voronoi Diagram Two cells share at most one boundary Voronoi Diagram Two cells share at most one boundary Voronoi Diagram At most three cells meet at a vertex Choosing the sites – greedy approach Let S be the set of sites. Initiate S with a random triangle on the mesh. Grow the cells around the sites of S until one of the conditions is violated. Add the violating face to S and repeat the process. Constructing Delaunay triangulation • On the original mesh: connect by a path each pair of sites whose cells are adjacent • To construct the base mesh: connect each pair of adjacent sites by a straight line. Constructing Delaunay triangulation Constructing Delaunay triangulation Base mesh Algorithm summary • Partition the mesh (Delaunay triangulation) • Construct the base mesh • Parameterize each patch over the corresponding face of the base mesh. The mappings of adjacent patches agree on the boundary. Continuous parameterization over the base mesh! Results 34 min. , 70,000 faces 162 faces 2,000 faces , e < 2.0 % 4,600 faces , e < 1.2 % 40 min. , 100,000 faces 229 faces 2,000 faces , e < 2.0 % 4,700 faces , e < 1.5 % 346 min. , 166,000 faces 132 faces 16,451 faces , e < 2.6 % Texture mapping Convex parameterization Convex weights for inner vertices vi ( i , j )N ( i ) wij v j s.t. ( i , j )N ( i ) wij 1 and wij 0 • If the weights are convex, the solution is always valid (no self-intersections) [Floater 97] • The cotangent weight in Harmonic Mapping can be negative sometimes there are triangle flips End of Part Two