from aligned range maps to triangle...

101
From Aligned Range Maps to Triangle Meshes

Upload: others

Post on 17-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

From Aligned Range Maps to

Triangle Meshes

Page 2: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Input & Output

Input: a set of aligned range maps

Variable density

Noisy

Output: a triangulated mesh

Manifold

Good aspect ratio

Possibly watertight (may not be possible)

Page 3: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Mesh Zippering [Turk94]

Input: triangulated ranges maps (not just

point clouds)

Works in pairs:

Remove overlapping portions

Clip one RM against the other

Remove small triangles

Page 4: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Mesh Zippering

Input: triangulated ranges maps (not just

point clouds)

Works in pairs:

Remove overlapping portions

Clip one RM against the other

Remove small triangles

Page 5: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Mesh Zippering

Input: triangulated ranges maps (not just

point clouds)

Works in pairs:

Remove overlapping portions

Clip one RM against the other

Remove small triangles

Page 6: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Mesh Zippering

Input: triangulated ranges maps (not just

point clouds)

Works in pairs:

Remove overlapping portions

Clip one RM against the other

Remove small triangles

Page 7: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Mesh Zippering

Input: triangulated ranges maps (not just

point clouds)

Works in pairs:

Remove overlapping portions

Clip one RM against the other

Remove small triangles

Page 8: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Mesh Zippering

Input: triangulated ranges maps (not just

point clouds)

Works in pairs:

Remove overlapping portions

Clip one RM against the other

Remove small triangles

Page 9: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Mesh Zippering

Not so trivial to implement…for example..

remove overlapping regions: «a face of mesh A

overlaps if its 3 vertices project on mesh B»

Hole may appear, to be fixed later…

Page 10: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Mesh Zippering

Not so trivial to implement…for example..

remove overlapping regions:

criterion?

Page 11: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Mesh Zippering [marras10]

Not so trivial to implement…for example..

remove overlapping regions:

criterion? Preserve faces from left

Preserve faces from right

Halfway (distance from

the border)

Page 12: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Ball Pivoting [Bernardini99]

Input: a uniform point cloud and normals

per-vertex

Output: a triangulation of the point cloud

How? With a rolling sphere:

Page 13: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Ball Pivoting: Alpha Shapes [Edelsbrunner83]

Question: what is the surface of a point cloud?

Possible answer: the Convex Hull

Def: Convex hull of 𝑝0,𝑝1,…,𝑝𝑕

ܪܥ ∈ ℜ𝑛

ܪܥ = ܪ �� , ∀𝑝𝑗 ∈ ܪܥ

′ܪܥ∀ = ,′𝑖′ܪ ∀𝑝𝑗 ∈ ܪܥ ⇒ ܪܥ ⊆ ′ܪܥ

Def: Empty half-space EHS: Half

space not including points in S

ܪܥ = ℜ𝑛∖ ܪܧ𝑖

Def: Convex hull of S

Page 14: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Alpha Shapes

Def: empty -ball Sphere with radius not including point of S

Def: -Hull Complemento dell’unione di tutte le empty -ball

•An alpha-shape is a polytope, not necessarily convex or

connected

Generazione di Mesh di volume

𝛼𝐻 = 𝑅𝑛 ∖ 𝐸𝛼−b𝑖

Page 15: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Alpha Shapes Examples

Page 16: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Alpha Shapes: generalizations

Scale density alpha-shape

is a function of point density

Anisotropic alpha-shape

ellispsoid instead of spheres i.e. the metrics is defined with a

ellipsoid

alpha-shape scaled Scaled & anisotropic

Page 17: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

-1

Normals on a point cloud

Question: what are the normals on a point cloud?

Answer: the gradient of the surface, which we don’t know yet

Use the assumption that the points are locally on a plane

Take the K neighbors (easy with range maps)

Compute the best fitting plane

N

P

Page 18: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Neighborhood used for normal computation

Accurately computed

normals in locally

planar regions

Page 19: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Neighborhood used for normal computation

Two possible

directions

[towards outside]

Page 20: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Neighborhood used for normal computation

Two possible

directions

[towards inside]

Page 21: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Neighborhood used for normal computation

Consistent normal

direction

for all points

Page 22: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Neighborhood used for normal computation

Consistent normal

direction

for all points

Choose outside

orientation

Page 23: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Neighborhood used for normal computation

Inaccurately computed

normals

close to boundaries

Page 24: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Ball Pivoting Algorithm [Input]

•Points/normals of all range images in data structure

•Connectivity of points in range images not needed anymore

•Radius ρ selected by the user.

Page 25: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Voxel-based data structure

x-axis

y-axis

ρ

ρ

Fast search for

points within

circle of radius

ρ

Page 26: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Voxel-based data structure

x-axis

y-axis

ρ

ρ

Fast search for

points within

circle of radius

ρ

Need to search only in

adjacent voxels

[9 in this picture –

27 in 3D space]

Page 27: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Voxel-based data structure

x-axis

y-axis

ρ

ρ

Fast search for

points within

circle of radius

ρ

Need to search only in

adjacent voxels

[9 in this picture –

27 in 3D space]

Page 28: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Basic Operations

A sequence of ball-pivoting operations. From left to right: A seed triangle

is found; pivoting around an edge of the current front adds a new

triangles to the mesh; after a number of pivoting operations, the active

front closes on itself; a final ball-pivoting completes the mesh.

Closely related to alpha-shapes, Edelsbrunner 94

Page 29: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Seed triangles

A number of seed triangles with their associated spheres shown

Page 30: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Pivoting in 2D

(a)Circle of radius ρ pivots from point to point, connecting them with edges.

(b) When sampling density is low, some of the edges will not be created, leaving holes.

(c) When the curvature of the manifold is larger than 1/ρ, some of the points will not be

reached by the pivoting ball, and features will be missed.

Page 31: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

The algorithm [Edge representation]

•Edge (si, sj)

–Opposite point so, center of empty ball c

–Edge: “Active”, “Boundary”, or “Frozen”

si

sj

so

c

Page 32: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Pivoting example

Active edge

Point on front

Initial seed triangle:

Empty ball of radius ρ passes through the three points

Page 33: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Pivoting example

Active edge

Point on front Ball pivoting around active edge

Page 34: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Pivoting example

Active edge

Point on front Ball pivoting around active edge

Page 35: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Pivoting example

Active edge

Point on front Ball pivoting around active edge

Page 36: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Pivoting example

Active edge

Point on front Ball pivoting around active edge

Page 37: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Pivoting example

Active edge

Point on front

Internal point

Ball pivoting around active edge

Page 38: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Pivoting example

Boundary edge

Point on front

Internal point

Ball pivoting around active edge

No pivot found

Active edge

Page 39: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Pivoting example

Point on front

Internal point

Active edge

Ball pivoting around active edge

Boundary edge

Page 40: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Pivoting example

Point on front

Internal point

Active edge

Boundary edge

Ball pivoting around active edge

No pivot found

Page 41: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Pivoting example

Point on front

Internal point

Active edge

Boundary edge

Ball pivoting around active edge

Page 42: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Pivoting example

Point on front

Internal point

Active edge

Boundary edge

Ball pivoting around active edge

Frozen edge

Points in frozen region

Page 43: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Pivoting example

Point on front

Internal point

Active edge

Boundary edge

Ball pivoting around active edge

Frozen edge

Points in frozen region

Page 44: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Pivoting example

Point on front

Internal point

Active edge

Boundary edge

Ball pivoting around active edge

Frozen edge

Points in frozen region

Page 45: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Pivoting example

Point on front

Internal point

Active edge

Boundary edge

Ball pivoting around active edge

Frozen edge

Points in frozen region

Page 46: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Noisy data

(a)Points “below” surface level are not touched by the pivoting ball and remain

isolated (and are discarded by the algorithm).

(b) Due to missing data, the ball pivots around an edge until it touches a sample that

belongs to a different part of the surface. By checking that triangle and data point

normals are consistently oriented, we avoid generating a triangle in this case.

(c) Noisy samples form two layers, distant enough to allow the ball to “walk” on both

layers. A spurious small component is created.

Page 47: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Ball Pivoting Algorithm

Overlapping scans

3D mesh

Page 48: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Ball Pivoting Algorithm

3D mesh detail 3D mesh detail

Page 49: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Out of core implementation

•Process data in slices that fit in

memory

•No limit in size of input

•BPA’s active front provides

natural implementation

•Of major importance for large

scale scenes

Page 50: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Out of core implementation

Bounding box of scene First slice in memory

Mesh for

first slice

Frozen region

Page 51: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Out of core implementation

Second slice in memory

Mesh for

second slice

Frozen region

Page 52: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Out of core implementation

Third slice in memory, etc.

Mesh for

third slice

Frozen region

Page 53: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Out of core results

Part of the Great Hall mesh. The different colors correspond to meshes of different slices

produced by the out-of-core implementation.

Page 54: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Limits of direct tessellation

Sampling quality and reconstruction issues:

Page 55: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Volumetric methods

• Use the RM (or the point clouds) to define

a distance field from the surface

• return the isosurface for a small distance

Page 56: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Marching Cube:isosurfaces from volume

data [Lorensen87] :

Output: a surface with scalar value and non null gradient (the

isosurface)

Input:

- a regular 3d grid where each node is associated with a scalara

value f (i.e. a scalar field)

- a scalar value

The value at p is obtained by trilinear interpolation of the

values of teh vertices of the grid cell contained in

10 5

7 3

𝛼= 7.5 𝑓 = 7.5

𝑝00 𝑝10

𝑝11 𝑝01

𝑓 𝑥, 𝑦 = 𝑓 ⋅ (1 − 𝑥)1−𝑖𝑥𝑖(1 − 𝑦)1−𝑗𝑦𝑗

𝑖,𝑗=1

𝑖,𝑗=0

𝑦

𝑥 0,0

1

1

Page 57: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Marching Cube: configurations

• All configurations: 2^8=256, but only 14 considering rotations,

mirroring and complement

Page 58: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Marching Cube: LookUp Table

0 1

2 3

4 5

6 7

7 6 5 4 3 2 1 0

1 0 0 0 0 0 0 0

0 : nil

1 : {e0,e4,e8}

2 : ….

3 : ….

….

255: nil

LookUpTable

For each combination of field value respect to the threshold, store

the corresponding triangolation.

Page 59: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Marching Cubes: Implementation

•“Marching”. The algorithm proceeds cell by cell, row by row, slice

by slice. Each cell produces a triangulation

•Except than for the border cells, a new cell only requires the

evalutation of three edges

•Store “border” vertices to avoid duplication

– Topology problems: result made by a lot of tiny meshes

– Care must be taken in unifying vertices: numerical problems cause

degenerate configurations

Page 60: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Marching Cubes: pros/issues

•Pros:

–Quite easy to implement

–Fast and non memory consuming

–Very robust

•..then why from 87 zillions papers where published ?

Issues:

• Consistency. Guarantee a C0 and manifold result: ambiguous

cases

• Correctness: return a good approximation of the “real” surface

• Mesh complexity: the number of triangles does not depent on

the shape of the isosurface

• Mesh quality: arbitrarily ugly triangles

Page 61: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Marching Cubes: ambiguous cases

?

Page 62: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Marching Cubes: ambiguous cases

?

Page 63: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

𝛼

𝛼

Saddle points

𝑓(0, 𝑥, 𝑦)= 𝑐ݖݕ + 𝑑𝑦 + 𝑔𝑧 + 𝑕

𝜕𝑓(0, 𝑥′,𝑦′)

𝜕𝑦= 𝑐𝑧′ + 𝑑 = 0 ⇒ z′ = −

𝑑

𝑐

𝜕𝑓(0, 𝑥′,𝑦′)

𝜕𝑥= 𝑐𝑦′ + 𝑔 = 0 ⇒ y′ = −

𝑔

𝑐

*

𝑓(0, 𝑥′,𝑦′)

Field value on a cell’s face

Page 64: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

ELUT: Exhaustive LUT [Cignoni00]

…..

Face saddle points body saddle point

ELUT:

For each ambiguous configuration determines the coherent

internal triangulation looking at the saddle points

Page 65: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Marching Tetrahedra

•Tetrahedral cells (instead of cubical)

•Only 3 configurations (from the 2^4 permutation of grid values)

•No ambiguities but it may be “less” correct

Page 66: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Marching Tetrahedra

•Original approach []: cubic cells are partitioned in 5 (o 6)

tetrahedra.

–Subdivision determines topology

•Body centered cubic lattice: one more sample in the middle of the

cubic cell

–Unique subdivision

–Equal tetrahedra

–Better surface (better triangles)

Page 67: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Adaptive triangulation []

• Refine for better approximation (re-evaluate scalar field)

Page 68: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Extended MC [Kobbelt01]

D2Y > 0

X

Y

D1X < 0 D3X > 0

D1Y < 0

Surface

Exact intersection

point

Page 69: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

MC

normal

tangent element

normal

tangent element

Reconstructed

surface

Page 70: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Extended MC

Marching Cubes Extended Marching Cubes

Page 71: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Dual Marching Cubes [Schaefer04]

•one vertex for each patch generated by MC

•One quad for each intersected edge (the 4 vertices associated to

the patches of the cells sharing the edge)

•Tends to improve triangles quality

Vertex of the dual MC Vertex of the MC

Page 72: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

From point cloud to a scalar field…

Problem: given a set of points 𝑥0, … , 𝑥𝑛 , define

so that S interpolates/approximates the point cloud

𝑓 𝑥 = 𝜑 𝑥0, … , 𝑥𝑛 S = x f x = 𝛼+

Page 73: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Metaballs [Blinnn92,Wyvill86]

• 𝑓 is the sum of function that have maximum in the points and

decay with the distance

𝑓 𝑥 = 1

𝑥 − 𝑥𝑖2

𝑖

𝑓 𝑥 = 2𝑟3

𝑅3− 3𝑟2

𝑅2+ 1 , 𝑟 =𝑖 𝑥 − 𝑥𝑖 , R= support radius

Page 74: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Radial Basis Functions (RBF)

Solutions that follow the general scheme:

weights: 𝜔𝑖 ∈ ℝ RBF: 𝜑:ℝ → ℝ

p a polynome

𝑓 𝑥 = p x + 𝜔𝑖𝜑( 𝑥 − 𝑥𝑖 )𝑖

𝑓 𝑥𝑖 = 𝑓𝑖

Page 75: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Radial Basis Functions (RBF)[Carr01]

𝑓 𝑥 = p x + 𝜔𝑖𝜑( 𝑥 − 𝑥𝑖 )𝑖

, 𝜔𝑖 ∈ ℝ

𝜑:ℝ → ℝ

p a polynome

𝐴 PP𝑇 0

𝜔𝑐=𝐹0

𝐴𝑖𝑗 = 𝜑 𝑥𝑗 − 𝑥𝑖

p: basis for all polynomials of degree k 𝑃𝑖𝑗 = 𝑝𝑗(𝑥𝑖)

𝑝 = *1, 𝑥, 𝑦, 𝑧} d=1, m=3

𝑝 = *1, 𝑥, 𝑦, 𝑥2, 𝑥𝑦, 𝑦2} d=2, m=2

𝑝 = *1, 𝑥, 𝑥2, 𝑥3} d=1, m=3

Examples of polynomial basis:

Page 76: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Example

𝜑(𝑥1, 𝑥1)𝜑(𝑥2, 𝑥1)𝜑(𝑥3, 𝑥1)𝑝1(𝑥1)𝑝2(𝑥1)

𝜑(𝑥1, 𝑥2) 𝜑(𝑥2, 𝑥2) 𝜑(𝑥3, 𝑥2)𝑝1(𝑥2)𝑝2(𝑥2)

𝜑(𝑥1, 𝑥3)𝜑(𝑥2, 𝑥3) 𝜑(𝑥3, 𝑥3)𝑝1(𝑥3)𝑝2(𝑥3)

𝑝1(𝑥1) 𝑝1(𝑥2)𝑝1(𝑥3)00

𝑝2(𝑥1) 𝑝2(𝑥2) 𝑝2(𝑥3)00

𝜔1𝜔2𝜔3𝑐1𝑐2

=

𝑓1𝑓2𝑓300

𝑃 = *1, 𝑥+

𝜑 𝑑 = 𝑑

Page 77: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Example

0 1 4 1 −21 0 3 1 −14 3 0 1 21 1 1 0 0−2 −1 2 0 0

𝜔1𝜔2𝜔3𝑐1𝑐2

=

−2−1100

𝜔1𝜔2𝜔3𝑐1𝑐2

=

0.166−0.1660−0.50.66

𝑓 𝑥 = −0.5 + 0.66 𝑥 + 0.166 |𝑥 − −2 | − 0.166 |𝑥 − −1 | + 0 𝑥 − 2 = = −0.334 + 0.66 𝑥 + 0.166 𝑥 + 2 − 0.166 (|𝑥 + 1|)

Page 78: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Example

𝑓 𝑥 = −0.334 + 0.66 𝑥 + 0.166 𝑥 + 2 − 0.166 (|𝑥 + 1|)

Page 79: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Radial Basis Functions (RBF)

• Several possible choices for 𝜑 and p:

– 𝜑 𝑑 = 𝑑, 𝑙𝑖𝑛𝑒𝑎𝑟 𝑝𝑜𝑙𝑦𝑛𝑜𝑚𝑖𝑎𝑙

– 𝜑 𝑑 = 𝑑2, 𝑙𝑖𝑛𝑒𝑎𝑟 𝑝𝑜𝑙𝑦𝑛𝑜𝑚𝑖𝑎𝑙

– 𝜑 𝑑 = 𝑑3, 𝑙𝑖𝑛𝑒𝑎𝑟/𝑞𝑢𝑎𝑑𝑟𝑎𝑡𝑖𝑐 𝑝𝑜𝑙𝑦𝑛𝑜𝑚𝑖𝑎𝑙

– 𝜑 𝑑 = 𝑑2log (𝑑), 𝑙𝑖𝑛𝑒𝑎𝑟/𝑞𝑢𝑎𝑑𝑟𝑎𝑡𝑖𝑐 𝑝𝑜𝑙𝑦𝑛𝑜𝑚𝑖𝑎𝑙

– ….

• Issue 1: if functions have unbounded support, i.e. nonzero

everywhere, the matrix will always be dense

– Expensive to solve when n increase…

• Issue 2: the whole surface is influenced by each single input

point

Page 80: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Bounded RBD [Morse01]

• The value of f is determined only locally (withing the radius 1)

– Use 𝜑 𝑑/𝑅 to adapt to the point cloud resolution

• The resulting matrix is sparse

• The fitting is local

𝜑 𝑑 = 1 − 𝑑 𝑝𝑃 𝑑 , 𝑑 < 1 0, 𝑑 ≥ 1

P(d) = polynome with degree 6

Page 81: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Bounded RBD

• The value of f is determined only locally (withing the radius 1)

– Use 𝜑 𝑑/𝑅 to adapt to the point cloud resolution

• The resulting matrix is sparse

• The fitting is local

𝜑 𝑑 = 𝑓 𝑥 = 1 − 𝑑 𝑝𝑃 𝑑 , 𝑑 < 1 0, 𝑑 ≥ 1

P(d) = polynome with degree 6

Page 82: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Bounded RBF

• The value of f is determined only locally (withing the radius 1)

– Use 𝜑 𝑑/𝑅 to adapt to the point cloud resolution

• The resulting matrix is sparse

• The fitting is local

More issues:

• Still hard to represent sharp features, anisotropic basis functions

may be used [Dinh01]

𝜑 𝑑 = 1 − 𝑑 𝑝𝑃 𝑑 , 𝑑 < 1 0, 𝑑 ≥ 1

P(d) = polynome with degree 6

Page 83: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Partition of Unit [Ohtake03]

• f is defined globally as the weighted sum of local functions that

describe (implicitly) the surface

• Each i corresponds to a region of ℝ3 where the function is

described by 𝑓𝑖

• The sum of the weights is 1 everywhere:

– Which is obtained by normalization

𝑓 𝑥 = 𝜔𝑖 𝑥 𝑄𝑖 (𝑥)𝑖

𝜔𝑖 𝑥 = 1𝑖

𝜔𝑖 𝑥 =𝑊𝑖(𝑥)

𝑊𝑖𝑖 (𝑥)

Page 84: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Multilevel PoU • Subdivide the domain with an octree

• Fit the points within each cell with a function 𝑄𝑖(𝑥), either:

– A quadric (for noisy and unbounded regions)

– A bivariate (u,v) quadratic polynomial in a local coordinate

system (for smooth patch)

– A piecewise quadratic surface (for sharp features)

• Blending PU:

𝜔𝑖 𝑥 = 𝑏3|𝑥 − 𝑐𝑖|

2𝑅𝑖

𝑅𝑖 = 0.75 ∗ 𝑑𝑖𝑎𝑔

Page 85: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Results

Distance field from range maps [Levoy] MPU implicits

Page 86: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Moving Least Square Reconstruction

min𝑓∈ 𝑑𝑚 𝑓 𝑥𝑖 − 𝑓𝑖𝑖

𝑑𝑚 :polynomes degree m in d-dimension

min𝑓𝑥 ∈ 𝑑𝑚 𝜃 𝑥𝑖 − 𝑥 𝑓 𝑥𝑖 − 𝑓𝑖𝑖

𝑥 : fixed point

min𝑓𝑥∈ 𝑑𝑚 𝜃( 𝑥𝑖 − 𝑥 ) 𝑓𝑥 𝑥𝑖 − 𝑓𝑖𝑖

LS Least square

WLS Weighted Least square

MLS Moving Least square

Page 87: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Moving Least Square Reconstruction [Alexa01]

• Iterative approach: project the points near the surface onto the

surface (??)

min𝑛,𝐷 ( 𝑛, 𝑝𝑖 − 𝐷)2𝑛

𝑖=1 𝜃( 𝑝𝑖 − 𝑞 )

min𝑔 (𝑔 𝑥𝑖 , 𝑦𝑖 − 𝑓)2𝑛

𝑖=1 𝜃( 𝑝𝑖 − 𝑞 )

Move r to 𝑞 + 𝑔 0,0 𝑛

1.

2.

3.

Page 88: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Moving Least Square Reconstruction [Alexa01]

• Iterative approach: project the points near the surface onto the

surface (??)

min𝑛,𝐷 ( 𝑛, 𝑝𝑖 − 𝐷)2𝑛

𝑖=1 𝜃( 𝑝𝑖 − 𝑞 )

min𝑔 (𝑔 𝑥𝑖 , 𝑦𝑖 − 𝑓)2𝑛

𝑖=1 𝜃( 𝑝𝑖 − 𝑞 )

Move r to 𝑞 + 𝑔 0,0 𝑛

1.

2.

3.

Squared distance between 𝑝𝑖 and the plane 𝑛, 𝐷

No linear problem

Page 89: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Moving Least Square Reconstruction [Alexa01]

• Iterative approach: project the points near the surface onto the

surface (??)

min𝑛,𝐷 ( 𝑛, 𝑝𝑖 − 𝐷)2𝑛

𝑖=1 𝜃( 𝑝𝑖 − 𝑞 )

min𝑔 (𝑔 𝑥𝑖 , 𝑦𝑖 − 𝑓𝑖)2𝑛

𝑖=1 𝜃( 𝑝𝑖 − 𝑞 )

Move r to 𝑞 + 𝑔 0,0 𝑛

1.

2.

3.

𝑓𝑖 = 𝑛 ∙ (𝑝𝑖 − 𝑞)

𝑔:ℝ2⟹ ℝ approximates point set in the local reference system centered in q

Known from 1. No linear problem

Page 90: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Moving Least Square Reconstruction

𝜃 𝑑 = 𝑒−𝑑2

ℎ2 h is related to the spacing between samples

Smaller h Larger h

Page 91: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Poisson Reconstruction [kazhdan06]

reconstruct the surface of the model by solving

for the indicator function of the shape.

…the indicator function is unknown !

Mp

MppM

if0

if1

M

Indicator function

0

1

0

0 0

0

1

1

Page 92: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Challenge

How to construct the indicator function?

M

Indicator function Oriented points

Page 93: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Gradient Relationship

There is a relationship between the normal field

and gradient of indicator function

M

Indicator gradient

0 0

0

0

0

0

Oriented points

Page 94: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Integration as a Poisson Problem

Represent the points by a vector field

Find the function whose gradient best

approximates :

Applying the divergence operator it

becomes a Poisson problem:

V

V

min

VV

V

Page 95: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Implementation

Given the Points: Set octree

Compute vector field

Compute indicator function

Extract iso-surface

Page 96: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Vector field

Use a basis F:R^3->R (another RBF)

One base for each node containing some

original point

Express the vector field as the interpolation

of neighbor cells

Ss sNo

oso NsqFqV)(

, .)()(

For each octree level

For each neighbor

Page 97: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Compute indicator function

𝜒 is also expressed on the same basis F

||, o

o oo xFx

2

||min vLx

oRx

'2'2'2', oo

oo

oo

oo Fz

FF

y

FF

x

FL

Divergence of V at node o

So that Lx is the laplacian of 𝜒

Page 98: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

References

[turk94] Turk, G. and Levoy, M. (1994). Zippered polygon meshes from range images.

ACM Computer Graphics, 28:311-318.

[Marras10] Controlled and adaptive mesh zippering S.Marras, F. Ganovelli, P. Cignoni,

R. Scateni and R. Scopigno, GRAPP 2010

[Bernardni99] The Ball-Pivoting Algorithm for Surface Reconstruction, Fausto Bernardini,

Joshua Mittleman, Holly Rushmeier, Cláudio Silva, Gabriel Taubin IEEE

Transactions on Visualization and Computer Graphics archive Volume 5 Issue 4, October

1999 Page 349-359

[Edelsbrunner83] Edelsbrunner, Herbert (1995), "Smooth surfaces for multi-scale shape

representation", Foundations of software technology and theoretical computer science

(Bangalore, 1995), Lecture Notes in Comput. Sci., 1026, Berlin: Springer, pp. 391-412

[Lorensen87] William E. Lorensen, Harvey E. Cline: Marching Cubes: A high resolution

3D surface construction algorithm. In: Computer Graphics, Vol. 21, Nr. 4, July 1987

[Cignoni00]Reconstruction of topologically correct and adaptive trilinear isosurfacesP

Cignoni, F Ganovelli, C Montani, R ScopignoComputers and graphics 24 (3), 399-418

Page 99: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

[Ning93] Paul Ning and Jules Bloomenthal. An evaluation of implicit surfacetilers. IEEE

Computer Graphics and Applications, 13(6):33-41, 1993.

[Kobbelt01] Feature sensitive surface extraction from volume dataL.P. Kobbelt, M.

Botsch, U. Schwanecke, Hans-Peter Seidel SIGGRAPH '01 Proceedings of the 28th

annual conference on Computer graphics and interactive techniquesPages 57-66

[Schaefer04] Dual Marching Cubes: Primal Contouring of Dual Grids Scott Schaefer , Joe

Warren PG '04: PROCEEDINGS OF THE COMPUTER GRAPHICS AND

APPLICATIONS

[Blinn92] Blinn, J. F. "A Generalization of Algebraic Surface Drawing". ACM Transactions

on Graphics 1 (3): 235-256

[Wyivill86] Data structure for soft objects, Geoff Wyvill, Craig McPheeters, Brian

WyvillThe Visual Computer, Vol. 2, No. 4. (1 August 1986), pp. 227-234

[Carr01] J. C. Carr, R. K. Beatson, J. B. Cherrie, T. J. Mitchell, W. R. Fright, B. C.

McCallum, and T. R.Evans. Reconstruction and representation of 3D objects with radial

basis functions. In Proceedingsof ACM SIGGRAPH 2001, pages 67-76, August 2001.

Page 100: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

[Morse01] B. S. Morse, T. S. Yoo, D. T. Chen, P. Rheingans, and K. R. Subramanian.

Interpolating implicit surfaces from scattered surface data usingcompactly supported

radial basis functions. In SMI'01: Proceedings of the International Conferenceon Shape

Modeling & Applications, pages 89-98. IEEE Computer Society, 2001

[Dinh01] H. Q. Dinh, G. Turk, and G. Slabaugh. Re-constructing surfaces using

anisotropic basis func-tions. In International Conference on ComputerVision (ICCV) 2001,

volume 2, pages 606-613, 2001.

[Ohtake03] Y. Ohtake, A. Belyaev, M. Alexa, G. Turk, and H.-P. Seidel. Multi-level

partition of unity implicits.ACM Transactions on Graphics, 22(3):463-470,July 2003.

Proceedings of SIGGRAPH 2003.

[Alexa01] M. Alexa, J. Behr, D. Cohen-Or, S. Fleishman, and C. T. Silva. Point set

surfaces. IEEE Visualization2001, pages 21-28, October 2001.

[Kazhdan06]Poisson surface reconstruction, Michael Kazhdan, Matthew Bolitho, Hugues

Hoppe.Symposium on Geometry Processing 2006, 61-70.

Page 101: From Aligned Range Maps to Triangle Meshesvcg.isti.cnr.it/~ganovell/bertinoro/L4_RM_merging.pdfRemove overlapping portions Clip one RM against the other Remove small triangles Mesh

Credits: the slides for the Ball Pivoting Algorithm are taken as they were from

the original presentation. Part of the slides on Poisson reconstruction

were also taken from the original presentation.

All images are taken from the papers.