2D/3D Shape Manipulation , 3D Printing
Embed Size (px)
description
Transcript of 2D/3D Shape Manipulation , 3D Printing
Surface Reconstruction
2D/3D Shape Manipulation,3D PrintingSurface ReconstructionMarch 6, 2013Slides from Olga SorkineScanning:results in range imagesRegistration:bring all range images to one coordinate systemStitching/reconstruction:Integration of scans into a single meshPostprocess: Topological and geometric filtering Remeshing CompressionGeometry Acquisition Pipeline
March 6, 2013Olga Sorkine-Hornung2#
4G sample points 8M triangles1G sample points 8M trianglesMarch 6, 2013Olga Sorkine-Hornung3Digital Michelangelo Project#RegistrationIterative Closest Points (ICP):
Efficient Variants of the ICP AlgorithmMarch 6, 2013Connelly Barnes4#Input to Reconstruction ProcessInput option 1: just a set of 3D points, irregularly spacedNeed to estimate normals next class
Input option 2: normals come from the range scans
set of raw scans
reconstructed model
March 6, 2013Olga Sorkine-Hornung5#How to Connect the Dots?
Explicit reconstruction: stitch the range scans together
March 6, 2013Olga Sorkine-Hornung6#How to Connect the Dots?Explicit reconstruction: stitch the range scans together
Connect sample points by trianglesExact interpolation of sample pointsBad for noisy or misaligned dataCan lead to holes or non-manifold situations
March 6, 2013Olga Sorkine-Hornung7#How to Connect the Dots?Implicit reconstruction: estimate a signed distance function (SDF); extract 0-level set mesh using Marching CubesMarch 6, 2013Olga Sorkine-Hornung8#How to Connect the Dots?Implicit reconstruction: estimate a signed distance function (SDF); extract 0-level set mesh using Marching CubesMarch 6, 2013Olga Sorkine-Hornung9#How to Connect the Dots?Implicit reconstruction: estimate a signed distance function (SDF); extract 0-level set mesh using Marching CubesApproximation of input pointsWatertight manifold results by constructionMarch 6, 2013Olga Sorkine-Hornung10#How to Connect the Dots?Implicit reconstruction: estimate a signed distance function (SDF); extract 0-level set mesh using Marching CubesApproximation of input pointsWatertight manifold results by construction
< 0> 00March 6, 2013Olga Sorkine-Hornung11#Implicit vs. Explicit
InputImplicitExplicitMarch 6, 2013Olga Sorkine-Hornung12#SDF from Points and NormalsCompute signed distance to the tangent plane of the closest point
Normals help to distinguish between inside and outside-+March 6, 2013Olga Sorkine-Hornung13#SDF from Points and NormalsCompute signed distance to the tangent plane of the closest point
Problem??
March 6, 2013Olga Sorkine-Hornung14#SDF from Points and NormalsCompute signed distance to the tangent plane of the closest point
The function will be discontinuous
March 6, 2013Olga Sorkine-Hornung15#Smooth SDFInstead find a smooth formulation for F.Scattered data interpolation: F is smoothAvoid trivial
0000March 6, 2013Olga Sorkine-Hornung16#Smooth SDFScattered data interpolation: F is smoothAvoid trivial
Add off-surface constraints
0000
March 6, 2013Olga Sorkine-Hornung17#Radial Basis Function InterpolationRBF: Weighted sum of shifted, smooth kernelsScalar weightsUnknownsSmooth kernels (basis functions)centered at constrained points.For example:
March 6, 2013Olga Sorkine-Hornung18
#Radial Basis Function InterpolationInterpolate the constraints:0000
March 6, 2013Olga Sorkine-Hornung19
#Radial Basis Function InterpolationInterpolate the constraints:
Symmetric linear system to get the weights:March 6, 2013Olga Sorkine-Hornung20
#RBF KernelsTriharmonic:Globally supportedLeads to dense symmetric linear systemC2 smoothnessWorks well for highly irregular sampling
March 6, 2013Olga Sorkine-Hornung21#RBF KernelsPolyharmonic spline Multiquadratic
Gaussian
B-Spline (compact support)
March 6, 2013Olga Sorkine-Hornung22#
RBF Reconstruction ExamplesMarch 6, 2013Olga Sorkine-Hornung23#Off-Surface Points
Insufficient number/badly placed off-surface pointsProperly chosen off-surface pointsMarch 6, 2013Olga Sorkine-Hornung24#
Distanceto planeCompact RBFGlobal RBFTriharmonicComparison of the various SDFs so farMarch 6, 2013Olga Sorkine-Hornung25#RBF DiscussionGlobal definition!
Global optimization of the weights, even if the basis functions are local0000
March 6, 2013Olga Sorkine-Hornung26
#Extracting the SurfaceWish to compute a manifold mesh of the level setImage from: www.farfieldtechnology.com
F(x) > 0 outsideF(x) = 0 surfaceF(x) < 0 insideMarch 6, 2013Olga Sorkine-Hornung27#Sample the SDFMarch 6, 2013Olga Sorkine-Hornung28# Sample the SDFMarch 6, 2013Olga Sorkine-Hornung29# TessellationWant to approximate an implicit surface with a meshCant explicitly compute all the rootsSampling the level set is hard (root finding)Solution: find approximate roots by trapping the implicit surface in a grid (lattice)+---
March 6, 2013Olga Sorkine-Hornung30#Marching Squares16 different configurations in 2D4 equivalence classes (up to rotational and reflection symmetry + complement)March 6, 2013Olga Sorkine-Hornung31#Tessellation in 2D4 equivalence classes (up to rotational and reflection symmetry + complement)?March 6, 2013Olga Sorkine-Hornung32#Tessellation in 2DCase 4 is ambiguious:
Always pick consistently to avoid problems with the resulting meshMarch 6, 2013Olga Sorkine-Hornung33#3D: Marching CubesLayer k+1Layer k
March 6, 2013Olga Sorkine-Hornung34#Layer k+1Layer kMarching Cubes (Lorensen and Cline 1987) Load 4 layers of the grid into memoryCreate a cube whose vertices lie on the two middle layersClassify the vertices of the cube according to theimplicit function (inside, outside or on the surface)Marching CubesMarch 6, 2013Olga Sorkine-Hornung35#Compute case index. We have 28= 256 cases (0/1 for each of the eight vertices) can store as 8 bit (1 byte) index.e1e4e9e10e5e6v1v600000011index == 33e1e4e9e10e5e6v2v6e2e3e7e8e11e12v3v4v1v5v7v8v1index =v2v3v4v5v6v7v8Marching CubesMarch 6, 2013Olga Sorkine-Hornung36#Marching CubesUnique cases (by rotation, reflection and complement)
March 6, 2013Olga Sorkine-Hornung37#Tessellation3D Marching CubesUsing the case index, retrieve the connectivity in the look-up tableExample: the entry for index 33 in the look-up table indicates that the cut edges are e1; e4; e5; e6; e9 and e10 ; the output triangles are (e1; e9; e4) and (e5; e10; e6).
e1e4e9e10e5e6v1v600000011index == 33March 6, 2013Olga Sorkine-Hornung38#Marching CubesCompute the position of the cut vertices by linear interpolation:
Move to the next cube
March 6, 2013#Marching Cubes Problems Have to make consistent choices for neighboring cubes otherwise get holes33
March 6, 2013Olga Sorkine-Hornung40#Marching Cubes Problems Resolving ambiguities
AmbiguityNo AmbiguityMarch 6, 2013Olga Sorkine-Hornung41#Resolving AmbiguitiesMarching Cubes 33March 6, 2013Connelly Barnes42
#Resolving AmbiguitiesMarch 6, 2013Connelly Barnes43
#Resolving AmbiguitiesMarch 6, 2013Connelly Barnes44
#Marching Cubes 33March 6, 2013Connelly Barnes45
#Marching Cubes 33March 6, 2013Connelly Barnes46
#LibrariesShort, portable code:Paul Bourke -- Marching Cubes / Marching Tetrahedrons
Part of larger libraries/programs:OpenMeshMeshLabMarch 6, 2013Connelly Barnes47#Images from: Dual Marching Cubes: Primal Contouring of Dual Grids by Schaeffer et al.
Marching Cubes ProblemsGrid not adaptiveMany polygons required to represent small features
March 6, 2013Olga Sorkine-Hornung48#
Marching Cubes ProblemsMarch 6, 2013Olga Sorkine-Hornung49#Marching Cubes Problems Problems with short triangle edgesWhen the surface intersects the cube close to a corner, the resulting tiny triangle doesnt contribute much area to the meshWhen the intersection is close to an edge of the cube, we get skinny triangles (bad aspect ratio)Triangles with short edges waste resources but dont contribute to the surface mesh representationMarch 6, 2013Olga Sorkine-Hornung50#Grid SnappingSolution: threshold the distances between the created vertices and the cube cornersWhen the distance is smaller than dsnap we snap the vertex to the cube cornerIf more than one vertex of a triangle is snapped to the same point, we discard that triangle altogether
March 6, 2013Olga Sorkine-Hornung51#Grid SnappingWith Grid-Snapping one can obtain significant reduction of space consumptionParameter00,10,20,30,40,460,495Vertices14461398125411821074830830Reduction03,313,318,325,742,642,6March 6, 2013Olga Sorkine-Hornung52#Sharp Corners and Features(Kobbelt et al. 2001, a.k.a "Extended Marching Cubes"):Evaluate the normals (use gradient of F)When they significantly differ, create additional vertexMarch 6, 2013Olga Sorkine-Hornung53#Sharp Corners and FeaturesMarch 6, 2013Olga Sorkine-Hornung54
#Thank YouMarch 6, 2013