VOLUMETRIC SNAPPING:

WATERTIGHT TRIANGULATION OF POINT CLOUDS

Tim Volodine

1

, Michael S. Floater

2

and Dirk Roose

1

1

KULeuven, Department of Computer Science, Celestijnenlaan 200A, 3001 Heverlee, Belgium

2

CMA/IFI, University of Oslo, P.O.Box 1053 Blindern, 0316 Oslo, Norway

Keywords:

Meshing, surface reconstruction, volumetric grid, contouring, point clouds.

Abstract:

We propose an algorithm which constructs an interpolating triangular mesh from a closed point cloud of

arbitrary genus. The algorithm ﬁrst constructs an intermediate structure called a Delaunay cover, which forms

a barrier between the inside and the outside of the object. This structure is used to build a boolean voxel

grid, with cells intersecting the cover colored black and all other cells colored white. The outer surface of the

voxel grid is snapped to the point cloud by replacing each exterior surface vertex with the closest point in the

point cloud. The snapped mesh is processed such that it is manifold and consists of triangles with good aspect

ratio. We show that if a ﬁne voxel grid is used, the snapping yields Delaunay-like triangulation of the original

points. High grid resolutions are possible because of the Delaunay cover and a new contouring method, which

extracts the outer surface of the grid with O(n

2

) worst case space complexity, where n is the number of voxels

in one dimension.

1 INTRODUCTION

Nowadays 3D laser scanners are widely used to dig-

itize real-world objects for visualisation, reverse en-

gineering, inspection and animation. They produce

huge amounts of point data, sampled from the surface

of an object. While there are upcoming techniques for

manipulating point data directly (Szeliski and Ton-

nesen, 1992; Pauly et al., 2006), the mesh represen-

tation still remains a widespread standard for manip-

ulating and exchanging geometrical data. Therefore,

the problem of approximating a point cloud with a

polygonal mesh is an active topic of research.

Most scanners produce a very dense set of sam-

ples, not all of which are required in the ﬁnal mesh.

Therefore, to save time and space, an implicit vol-

umetric representation of the point cloud is often

used. Reconstruction algorithms based on the implicit

approach typically involve an approximation of the

signed distance function, which is supplied to an iso-

surfacing method, such as Marching Cubes algorithm

(Lorensen and Cline, 1987), to extract the mesh.

However, the construction of a signed distance

function requires an oriented point cloud, i.e. a point

cloud with consistently oriented normals. This kind

of information is usually not available, signiﬁcantly

complicating the reconstruction process. Further-

more, in the presence of noise and overlapping scans,

the signed distance function often results in topologi-

cal artifacts as pointed out in (Hornung and Kobbelt,

2006; Wood et al., 2004). To overcome this problem,

a volumetric method that does not rely on a signed

distance function was proposed recently by Hornung

and Kobbelt (Hornung and Kobbelt, 2006). They for-

mulate the reconstruction problem as a minimal cut

problem of a spatial graph deﬁned on a voxel grid rep-

resentation of the point cloud. The edges in the graph

are weighted by conﬁdence values, which can be in-

terpreted as an unsigned pseudo-distance of a voxel to

the closest point sample.

In this paper we propose a new volumetric method

that is relatively simple to implement and gives good

results in practice. Like the method of (Hornung and

Kobbelt, 2006) we avoid computing a signed distance

function. The main idea is to snap the triangulated ex-

terior surface of the voxel grid to the point cloud. But

in order to obtain a watertight voxelization at vari-

ous resolutions we voxelize an intermediate structure,

which is a union of triangle fans deﬁning a barrier be-

tween the inside and the outside of the point cloud.

Because the construction of this structure is based

53

Volodine T., S. Floater M. and Roose D. (2007).

VOLUMETRIC SNAPPING: WATERTIGHT TRIANGULATION OF POINT CLOUDS.

In Proceedings of the Second International Conference on Computer Graphics Theory and Applications - GM/R, pages 53-60

DOI: 10.5220/0002079800530060

Copyright

c

SciTePress

(a) (b) (c) (d)

Figure 1: The 4 main steps of the algorithm: (a) the Moose point cloud with 3K points (b) Delaunay cover (c) voxel grid (d)

mesh after snapping.

on Delaunay neighborhoods (Floater and Reimers,

2001), we call it a Delaunay cover of the point cloud.

The proposed algorithm guarantees a watertight

reconstruction, it can deal with noisy data or over-

lapping scans, and can reconstruct meshes of a large

number of points at various levels of detail. In addi-

tion our algorithm reconstructs convex sharp features

without any additional information, like the Hermite

data used in the Dual Contouring method (Ju et al.,

2002). Contrary to the traditional contouring algo-

rithms e.g. Marching Cubes and Dual Contouring,

the reconstructed mesh is interpolatory, with all the

vertices belonging to the original point cloud.

There are six conceptual steps in the proposed al-

gorithm: construction of the Delaunay cover, vox-

elization, triangulation, snapping, clean-up and opti-

mization. First, the Delaunay cover is constructed and

voxelized into a regular voxel grid. Each voxel is col-

ored either black (non-empty) or white (empty), de-

pending on whether it intersects the Delaunay cover

or not. Subsequently the exterior surface of the black

voxels is triangulated, yielding a ﬁrst watertight ap-

proximation of the point cloud. This approximating

mesh is then snapped to the point cloud, with each

voxel corner replaced by the nearest point in the point

cloud. The snapping produces a geometric realisa-

tion of the voxel surface triangulation with the same

watertight topology. Since the snapping is in general

not injective, it yields degenerate and double trian-

gles. However, all such triangles are removed in a

simple clean-up step and this results in a valid man-

ifold mesh. Finally, when a coarse grid is used for

snapping, the obtained triangulation can be improved

by an optimization step. In this step the vertices are

diffused over the surface of the object in a manner

similar to the shrink-wrapping process of (Kobbelt

et al., 1999).

The task of triangulating the exterior voxel surface

is accomplished by a 2D tracing algorithm, which

processes the voxel grid slice by slice. The Delaunay

cover and the space efﬁcient contouring algorithm al-

low to use small voxels. We show that, with increas-

ing grid resolution, the snapped triangulation con-

verges to Delaunay-like triangulation of the points.

2 RELATED WORK

Depending on the topology of the geometry (sam-

pling) of the point cloud, various methods for surface

reconstruction have been proposed in the literature.

We distinguish 4 main approaches: the implicit ap-

proach (Hoppe et al., 1992; Curless and Levoy, 1996;

Carr et al., 2001; Ohtake et al., 2003), methods based

on 3D Voronoi diagram (Amenta et al., 2001; Dey,

2006; Edelsbrunner and M

¨

ucke, 1994), advancing

front algorithms (Bernardini et al., 1999; Scheidegger

et al., 2005) and meshless parameterization (Floater

and Reimers, 2001; Zwicker and Gotsman, 2004).

Related to the snapping idea is the approach of

Kobbelt et al. (Kobbelt et al., 1999) for remeshing

genus-0 polygonal surfaces into meshes with subdi-

vision connectivity. The method simulates wrapping

of a plastic membrane around an object by starting

with a base mesh and iteratively applying projection,

smoothing and subdivision operators to it. In (Jeong

and Kim, 2002) Jeong et al. use the shrink-wrapping

approach to create a mesh of a genus-0 point cloud by

subdividing and shrink-wrapping its bounding box.

3 OVERVIEW

The algorithm consists of 6 steps,

GRAPP 2007 - International Conference on Computer Graphics Theory and Applications

54

1. Construct Delaunay Cover

2. Voxelize the Delaunay Cover

3. Triangulate the voxel grid surface

4. Snap the triangulated voxel surface to the point

cloud

5. Clean-up the triangulation (to obtain a manifold

triangulation)

6. (Optionally) optimize.

Note that the optimization step is only required when

the voxel grid is relatively coarse. In the following

sections we explain each of these steps in more detail.

4 DELAUNAY COVER

In order for the voxel surface to separate the inside

and the outside of the shape it needs to be closed. If

the voxelization is applied directly to the point cloud

it may result in holes in places where the sampling

density is larger than the grid size. To overcome this

problem we use an intermediate structure, called the

Delaunay cover of the point cloud. It consists of a

collection of triangles, which deﬁne a barrier between

the inside and the outside regions.

To explain the concept of a Delaunay Cover we

need a couple of deﬁnitions. First we need the no-

tion of the local planar Delaunay triangulation at p

i

,

which is the Delaunay triangulation of the projection

of the k nearest neighbors of p

i

on the tangent plane at

p

i

. The tangent plane is usually approximated by the

least squares plane through the k nearest neighbors.

The local planar Delaunay triangulation induces a lo-

cal triangulation at p

i

of the original k nearest neigh-

bors in the point cloud P.

Deﬁnition 1 (Delaunay Fan) A Delaunay fan

DFan(p

i

) of p

i

is the set of triangles in the local

triangulation of p

i

sharing p

i

as their common vertex.

Deﬁnition 2 (Delaunay Cover) Delaunay cover

DC(P) of a point cloud P is the union of all the

triangles in the Delaunay fans of each point in the

point cloud, i.e. DC(P) = ∪

p

i

∈P

DFan(p

i

).

In the planar case, when all points are in the plane

and no four of them are cocircular, the Delaunay cover

is simply the Delaunay triangulation of the points. In

3D the Delaunay cover approximates the point cloud,

but is neither a consistent triangulation, nor does it

have correctly oriented triangle normals, see ﬁgure

1(b).

(a)

Figure 2: Reﬁnement of the Delaunay cover : the triangle

is subdivided if one of its sides is longer than the voxel side

length. The new inserted vertices are the midpoints of the

triangle edges.

5 VOXELIZATION OF THE

DELAUNAY COVER

To voxelize the Delaunay cover into a regular voxel

grid, we could use the triangle-voxel intersection test.

In this approach a voxel is colored black if it is in-

tersected by a triangle and it is white otherwise. It

is possible to implement this kind of scan-conversion

efﬁciently using an octree and the Separating Axes

method for the intersection test, see (Ju, 2004). How-

ever in our algorithm we use a simpler technique to

color the voxels without computing intersections and

avoiding the construction of an octree.

5.1 Reﬁnement of the Delaunay Cover

Let h be the voxel grid size (if the voxels are rect-

angular, let h be the minimal voxel edge length). In

order to obtain a proper voxelization, it is sufﬁcient

to sample the Delaunay cover so that the distance be-

tween the sample points is smaller than h. The sam-

pled points can then be used to create a voxelization

in a straightforward way as explained later in 5.2.

To achieve the required sampling density we re-

ﬁne the triangles in the Delaunay cover using a 1-

to-4 triangle split, as shown in ﬁgure 2. For each

triangle four new triangles are created if one of the

triangle sides is longer than h. The reﬁnement is

performed iteratively until all triangles have sides of

length smaller than h. The reﬁnement sequence can

be written as DC

0

(P) → DC

1

(P) → DC

2

(P) → . . . →

DC

κ

(P). With each DC

i

(P) there is an associated

point cloud P

i

.

5.2 Voxelization of the Reﬁnement

The reﬁnement of the Delaunay cover produces a set

of reﬁned points P

κ

. To compute the voxel grid of this

point cloud, its bounding box, represented by the cor-

ners (x

min

, y

min

, z

min

)

⊤

and (x

max

, y

max

, z

max

)

⊤

, is di-

vided into cells of side length h. An example of such

a voxelization is shown in ﬁgure 1(c). In our imple-

mentation we use a boolean voxel grid, represented

VOLUMETRIC SNAPPING: WATERTIGHT TRIANGULATION OF POINT CLOUDS

55

+ +

Z

Y

X

=

Figure 3: The three stripes parallel to the XY-plane, XZ-

plane and YZ-plane are combined to obtain a triangulation

of the voxel.

by a 3D matrix V ∈ Z

n

x

×n

y

×n

z

2

, where n

x

, n

y

and n

z

is

the number of voxels in the corresponding dimension.

The matrix has a nonzero entry iff the corresponding

voxel contains at least one point p

i

= (x

i

, y

i

, z

i

) in P

κ

.

Starting with the zero matrix V, the voxelization is

obtained by setting

V

x

i

− x

min

h

,

y

i

− y

min

h

,

z

i

− z

min

h

= 1.

However, the memory consumption of this ap-

proach poses a problem, because the classical repre-

sentation of a 3D matrix grows as a cube of the num-

ber of cells in each dimension. Fortunately, the matrix

V will typically be very sparse, so the memory prob-

lem can be avoided by using a sparse representation

of V. Our sparse representation stores only the non-

zero entries in a hash table. This approach is both

extremely fast and memory efﬁcient.

6 TRIANGULATION OF THE

VOXEL GRID SURFACE

We construct a consistent triangulation of the voxel-

grid by processing it slice by slice in 3 directions (X,

Y and Z). A slice is a 2D submatrix of V where one

of the 3 dimensions is ﬁxed, e.g. the ﬁrst horizon-

tal slice in the Z-direction is given by B = V(·, ·, 1).

As shown in ﬁgure 3 the cube (one voxel) is com-

pletely and consistently covered by overlaying three

triangle strips. The overlaid strips may cover some

of the voxel faces two times. This is easily resolved

by removing double triangles. For convex objects any

two striping directions are actually sufﬁcient to cover

the whole surface. However for more complicated ob-

jects, e.g. the torus, we need 3 directions to be certain

that the whole grid surface is covered.

6.1 The Contouring Algorithm

The contouring algorithm operates on a slice of V,

which is a 2D submatrix B ∈ Z

n

x

×n

y

2

(if the slice is in

the Z-direction). It traces the contour counterclock-

wise around the nonzero (gray) entries in B, as shown

in ﬁgure 5(a). Starting with the rightmost non-empty

X

(a)

X

(b)

X

(c)

X

(d)

Figure 4: The four cases for the tracing algorithm.

cell, we start moving upwards and always keep the

gray cells to the left of the tracing direction.

The tracing algorithm can be implemented by ob-

serving that there are only 4 cases to consider during

tracing. They are depicted in ﬁgure 4. Imagine we are

at position X in the ﬁgure, having just traced the verti-

cal line below it. To decide where to go next we need

to look at the content of the four neighboring cells.

The four cases in the ﬁgure are the possible cases, all

other conﬁgurations can be reduced to these 4 cases

by rotation.

The traced 2D contour is used to create a triangu-

lation of the outer surface of the slice. We create 2

parallel contours in 3D by lifting the traced 2D con-

tour to 3D and offsetting it with the cell size in the

third dimension. The outer surface of the slice is the

quad strip of voxel faces contained between two con-

tours. These voxel faces are triangulated by connect-

ing the corresponding points (see ﬁgure 3).

If B contains multiple contours, they are extracted

by applying the tracing algorithm multiple times.

Each time a contour is extracted all the cells it en-

closes are ﬁlled with zeros and the tracing algorithm

is repeated.

6.2 Contouring Cropped Grids

The contouring algorithm can be extended to handle

holes lying on the boundaries of the bounding box.

This extension allows the reconstructed mesh to be

cropped by shrinking the bounding box. In order for

the contouring algorithm to work with holes, the orig-

inal matrix B is augmented with a boundary layer of

non-empty entries. When applying the tracing algo-

rithm in the presence of a hole, it produces a dual con-

tour as shown in ﬁgure 5(b). The ﬁnal contour is ob-

tained by removing the traced segments between c

1

and c

2

.

7 SNAPPING

Voronoi diagrams can be constructed by adaptively

subdividing and sampling the space using an octree

(or a quadtree in 2D), see e.g. (Lavender et al., 1992;

Boada et al., 2002). This approach is especially useful

for approximating the generalized Voronoi diagram,

GRAPP 2007 - International Conference on Computer Graphics Theory and Applications

56

(a)

c

1

c

2

(b)

Figure 5: (a) contour of a slice of the moose (b) dual contour

of the slice of the mannequin head model with a hole.

where the sites are geometric primitives other than

points.

Snapping the corners of a uniform triangulated

grid to the closest points in the data set has a sim-

ilar effect to the space sampling approach. In the

following paragraph we show that snapping can be

used to construct a Delaunay triangulation (the dual

of the Voronoi diagram) of points in the plane. In 3D

we sample the space in the vicinity of the Delaunay

cover using voxel corners. If the voxels are smaller

than the inter-point distances in the point cloud, we

obtain an effect similar to the 2D situation, leading to

a Delaunay-like triangulation of the surface points.

7.1 Delaunay Triangulation

Figure 6 illustrates the snapping algorithm in the

plane. The red sample points are overlaid with trian-

gulated grids (ﬁgures 6(a)-6(c)) with increasing res-

olutions. Figures 6(d)-6(f) show the resulting trian-

gulations after snapping each grid point to the closest

red point. Coarse grids produce a triangulation with

overlapping triangles, or miss some of the original red

points (ﬁgures 6(d) and 6(e)). Fine grids result in the

Delaunay triangulation of the red points (ﬁgure 6(f)).

The triangulation is actually the Delaunay triangula-

tion plus various degenerate and repeated triangles,

but these extra triangles are easy to remove.

To state a sufﬁcient condition for obtaining the

Delaunay triangulation we analyse the Voronoi di-

agram of the red points (e.g. ﬁgure 6(a)). In the

Voronoi diagram we call two Voronoi cells neighbors

if they share an edge. We deﬁne the distance between

two cells as the shortest distance between any two

points lying on the boundary of these cells. In this

way the distance between neighboring cells is zero.

The sufﬁcient condition for obtaining the Delau-

nay triangulation by snapping the grid is that the grid

diagonals (longest triangle side) should be smaller

than the distance between any two non-neighboring

Voronoi cells. This condition also implies that degen-

erate cases, such as 4 or more points lying on a circle,

(a) (b) (c)

(d) (e) (f)

Figure 6: (a) cell size=0.6 (b) cell size=0.31 (c) cell size=0.1

(d) triangulation corresponding to (a), note the overlapping

triangles; (e) triangulation corresponding to (b); (f) triangu-

lation corresponding to (c), this is the Delaunay triangula-

tion.

(a) (b) (c)

Figure 7: The three possible conﬁgurations in the snap-

ping algorithm which yield non-degenerate triangles: (a)

the gray triangle is snapped to a Delaunay triangle corre-

sponding to the Voronoi vertex inside the grid cell (b) the

gray triangle is snapped to the Delaunay triangle corre-

sponding to the Voronoi vertex in the neighboring cell (c)

both gray triangles are snapped to the same Delaunay tri-

angle corresponding to the Voronoi vertex outside the grid

cell.

cannot be Delaunay triangulated with the snapping

algorithm, because in that case the distance between

non-neighboring cells is zero.

To see why this condition is true we analyse the

possible conﬁgurations of the grid cells w.r.t. the

Voronoi diagram. Under above condition there are

only three essential conﬁgurations which yield non-

degenerate triangles after snapping. These cases are

shown in ﬁgure 7. All three cases create only Delau-

nay triangles, sometimes multiple times (as in ﬁgure

7(c)).

8 CLEAN-UP

After snapping, the resulting triangulation is usually

not a topologically manifold triangulation. By topo-

logically manifold we mean that each point has a fan

of triangles homeomorphic to a disc and each edge is

VOLUMETRIC SNAPPING: WATERTIGHT TRIANGULATION OF POINT CLOUDS

57

(a) (b)

Figure 8: (a) non-manifold edge on the outer surface of the

voxel grid (b) collapse of a non-manifold edge.

shared exactly by two triangles. During the clean-up

step we process the triangles such that the result is a

manifold triangulation.

To obtain a manifold triangulation we remove the

following items (in this order):

1. degenerate triangles (having at least two coincid-

ing vertices)

2. multiple triangles (having the same vertices)

3. dangling triangles (which do not have three neigh-

boring triangles)

4. non-manifold edges (edges shared by more than

two triangles)

A degenerate triangle is created when two or three

vertices of a voxel triangle are snapped to the same

data point. Double triangles arise in cases as shown

in ﬁgure 7(c). The removal of the ﬁrst two items can

occasionally result in dangling triangles, which are

simply deleted from the triangulation. In some rare

cases the triangulation of the exterior surface of the

voxel grid can contain non-manifold edges, as shown

on ﬁgure 8(a). To remove the non-manifold edges we

collapse them, by snapping one end of the edge to

the other, as shown in ﬁgure 8(b). Note that an edge

collapse introduces degenerate and double triangles,

which are cleaned up by executing the ﬁrst three items

once more.

9 OPTIMIZATION

The optimization step is only required when the voxel

grid is coarse relative to the inter-point distance in the

point cloud. The idea of the optimization step is to

diffuse the vertices over the surface such that the po-

sition of each vertex is approximately at the center of

its neighbors. The optimization is performed for two

reasons. On the one hand, it improves the mesh qual-

ity and yields triangles with better aspect ratio. On the

other hand, it unfolds locally folded triangles, which

can occasionally appear after the snapping of coarse

grids. Such triangles typically have a normal which is

(a) (b)

Figure 9: Illustration of how the smooth-snap iteration re-

solves folded triangles; (a) folded triangles near the leg of

the moose (b) mesh after one smooth-snap iteration.

in the opposite direction to the normals of the neigh-

boring triangles (ﬁgure 9(a)).

The optimization process is a number of smooth-

snap iterations, consisting of two steps:

1. Smooth the manifold mesh and

2. Re-snap the smoothed mesh onto the point cloud.

In practice 1 or 2 iterations already give a signiﬁcant

improvement of the triangulation. We implemented

the smoothing step using the simplest possible ap-

proach, i.e. Laplacian smoothing, where each ver-

tex in the triangulation is replaced by the centroid of

its neighbors. To obtain better diffusion we swap the

edges in the 1-ring neighborhoods of vertices with va-

lency 4, but only when no new valency 4 vertices are

created by the edge swap.

10 RESULTS AND DISCUSSION

We applied the proposed meshing algorithm to differ-

ent kinds of points clouds. The Moose point cloud

(ﬁgure 1) is uniformly sampled. The Mannequin

Head (ﬁgure 12) has adaptive sampling density, with

more points in places of high curvature. In addition it

illustrates the ability of the algorithm to handle point

clouds with boundaries. Finally, the Cycladic Head

model (ﬁgure 11) consists of a number of overlapping

registered scans.

For both the Moose and the Mannequin Head data

sets we used ﬁne voxel grids without the optimization

step (ﬁgures 12 and 1). Table 10 summarizes the algo-

rithm statistics for the Moose model containing 10K

points for different grid sizes. Note that there are no

folded triangles for the ﬁnest grid resolution. We used

a relatively coarse grid for the Cycladic Head model,

followed by two smooth-snap optimization steps (ﬁg-

ure 11).

The algorithm was implemented in C++ and exe-

cuted on an Pentium 4 2.4Ghz machine with 512MB

of RAM. The total time for the Moose 3K model

was 4.8s, with the contouring step consuming 70% of

the time. The Cycladic Head required a total of 76s,

GRAPP 2007 - International Conference on Computer Graphics Theory and Applications

58

grid size DC-reﬁnement # grid vertices nm edges

1

degenerate double dangling # folds

2

ﬁnal

3

14× 21× 22 – 1010 0 52 0 0 34 984

49× 78× 82 43597 13759 7 9048 127 121 395 9116

120× 192× 202 208674 82948 1 144718 147 78 0 10502

1

– number of non-manifold edges

2

– number of folded fans

3

– number of points in the ﬁnal triangulation (after clean-up)

Figure 10: Statistics for the Moose 10K point cloud. Table shows the number of points, degenerate triangles, double triangles,

dangling triangles, folded triangles and the number of points in the ﬁnal triangulation for different grid sizes.

(a) (b)

(c) (d)

Figure 11: (a) 9 aligned (registered) scans of the Cycladic

Head point cloud, each scan has a different color (in total

190K points) (b) resulting mesh on a 61× 97 × 102 grid,

14K points and 28K triangles (c) close-up of the nose of the

reconstructed mesh (d) close-up of the region near the socle

of the model.

with 31% of the time spent on the construction of the

Delaunay cover. The computation of the Delaunay

cover requires a parameter k for the number of near-

est neighbors. In our experience k ∈ [15, 25] yields

sufﬁcient coverage for most point clouds. The snap-

ping step is implemented using an octree structure, so

that closest points can be located efﬁciently.

11 CONCLUSION

We found the method to work very well with real data

obtained from a 3D laser scanner as well as ﬁltered

point clouds. It allows the construction of interpo-

lating triangulations with various levels of detail by

choosing the voxel size h. In order to obtain a closed

voxelization we introduce the concept of a Delaunay

cover. For ﬁltered point clouds the Delaunay cover

allows the use of small h, resulting in high quality

triangulation of the points. For coarse grids the De-

launay cover may not be required, but in practice we

always compute the Delaunay cover, otherwise it is

difﬁcult to determine the appropriate grid cell size. A

limitation of the method is that it cannot be applied to

point clouds with holes, unless the holes are aligned

with the boundaries of the bounding box.

In our implementation we perform the extraction

of the outer voxel surface by a 2D tracing algorithm,

requiring n

x

+ n

y

+ n

z

slices of the voxel grid. An

alternative is to use a 3D ﬂooding algorithm, which

would require O((n

x

+ n

y

+ n

z

)

3

) storage, while our

contouring algorithm has quadratic storage complex-

ity.

ACKNOWLEDGEMENTS

We thank Martin Reimers for helpful discussions

and for providing his software for inspection of non-

manifoldness in triangulations. We thank the CMA,

Oslo, for the use of their 3D scanner to generate the

Moose and the Cycladic Head point clouds. This

work was partly supported by the Project IUAP P5/22

of the Belgian Science Policy Ofﬁce and the BeMatA

program of the Norwegian Research Council.

REFERENCES

Amenta, N., Choi, S., and Kolluri, R. (2001). The power

crust, unions of balls, and the medial axis transform.

Computational Geometry: Theory and Applications,

19(2-3):127–153.

Bernardini, F., Mittleman, J., Rushmeier, H., Silva, C., and

Taubin, G. (1999). The ball-pivoting algorithm for

surface reconstruction. IEEE Transactions on Visual-

ization and Computer Graphics, 5(4):349–359.

VOLUMETRIC SNAPPING: WATERTIGHT TRIANGULATION OF POINT CLOUDS

59

Boada, I., Coll, N., and Sellar

´

es, J. (2002). Hierarchical pla-

nar voronoi diagram approximations. In Proceedings

of the 14th Canadian Conference on Computational

Geometry, pages 40–45.

Carr, J. C., Beatson, R. K., Cherrie, J., Mitchell, T. J.,

Fright, W. R., McCallum, B. C., and Evans, T. R.

(2001). Reconstruction and representation of 3d ob-

jects with radial basis functions. In ACM SIGGRAPH

2001, pages 67–76.

Curless, B. and Levoy, M. (1996). A volumetric method for

building complex models from range images. Com-

puter Graphics, 30(Annual Conference Series):303–

312.

Dey, T. K. (2006). Curve and Surface Reconstruction:

Algorithms with Mathematical Analysis. Cambridge

University Press.

Edelsbrunner, H. and M

¨

ucke, E. P. (1994). Three-

dimensional alpha shapes. ACM Transactions on

Graphics, 13(1):43–72.

Floater, M. and Reimers, M. (2001). Meshless parame-

terization and surface reconstruction. Comp. Aided

Geom. Design, 18:77–92.

Hoppe, H., DeRose, T., Duchamp, T., McDonald, J., and

Stuetzle, W. (1992). Surface reconstruction from un-

organized points. In ACM SIGGRAPH 1992, pages

71–78.

Hornung, A. and Kobbelt, L. (2006). Robust reconstruction

of watertight 3d models from non-uniformly sampled

point clouds without normal information. In Euro-

graphics Symposium on Geometry Processing, pages

41–50.

Jeong, W. and Kim, C. (2002). Direct reconstruction of dis-

placed subdivision surface from unorganized points.

In Graphical Models, volume 64(2), pages 78–93.

Ju, T. (2004). Robust repair of polygonal models. ACM

Trans. Graph., 23(3):888–895.

Ju, T., Losasso, F., Schaefer, S., and Warren, J. (2002).

Dual contouring of hermite data. ACM Trans. Graph.,

21(3):339–346.

Kobbelt, L. P., Vorsatz, J., Labsik, U., and Seidel, H.-P.

(1999). A shrink wrapping approach to remeshing

polygonal surfaces. In Computer Graphics Forum

(Eurographics ’99), volume 18(3), pages 119–130.

Lavender, D., Bowyer, A., Davenport, J., Wallis, A., and

Woodwark, J. (1992). Voronoi diagrams of set-

theoretic solid models. IEEE Computer Graphics and

Applications, 12(5):69–77.

Lorensen, W. and Cline, H. (1987). Marching cubes: A high

resolution 3d surface construction algorithm. ACM

Trans. Graph., 21(4):163–170.

Ohtake, Y., Belyaev, A., Alexa, M., Turk, G., and Seidel,

H.-P. (2003). Multi-level partition of unity implicits.

ACM Trans. Graph., 22(3):463–470.

Pauly, M., Kobbelt, L. P., and Gross, M. (2006). Point-

based multiscale surface representation. ACM Trans.

Graph., 25(2):177–193.

Scheidegger, C., Fleishman, S., and Silva, C. (2005). Tri-

angulating point-set surfaces with bounded error. In

Proceedings of the third Eurographics Symposium on

Geometry Processing, pages 63–72.

Szeliski, R. and Tonnesen, D. (1992). Surface modeling

with oriented particle systems. In SIGGRAPH 1992,

Computer Graphics Proceedings, pages 185–194.

Wood, Z., Hoppe, H., Desbrun, M., and Schr

¨

oder, P. (2004).

Removing excess topology from isosurfaces. ACM

Trans. Graph., 23(2):190–208.

Zwicker, M. and Gotsman, C. (2004). Meshing point clouds

using spherical parameterization. In Proceedings of

the Eurographics Symposium on Point-Based Graph-

ics.

(a)

(b)

(c)

Figure 12: (a) point cloud of the Mannequin model (6K

points) (b) reconstructed mesh on a 190 × 253 × 301 grid

(c) closeup of the ear.

GRAPP 2007 - International Conference on Computer Graphics Theory and Applications

60