from aligned range maps to triangle...
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/17.jpg)
-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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/30.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/31.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/32.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/33.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/34.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/35.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/36.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/37.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/38.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/39.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/40.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/41.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/42.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/43.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/44.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/45.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/46.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/47.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/48.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/49.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/50.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/51.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/52.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/53.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/54.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/55.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/56.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/57.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/58.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/59.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/60.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/61.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/62.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/63.jpg)
𝛼
𝛼
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/64.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/65.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/66.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/67.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/68.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/69.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/70.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/71.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/72.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/73.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/74.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/75.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/76.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/77.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/78.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/79.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/80.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/81.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/82.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/83.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/84.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/85.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/86.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/87.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/88.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/89.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/90.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/91.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/92.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/93.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/94.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/95.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/96.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/97.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/98.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/99.jpg)
[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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/100.jpg)
[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](https://reader033.vdocuments.us/reader033/viewer/2022060601/6055d14e0a4dc1562c3d801a/html5/thumbnails/101.jpg)
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.