3D Capture & Reality Modeling

Point Cloud Surfacing

A point cloud is just measured dots in space. Surfacing is the step that connects those dots into a continuous surface — a mesh — that you can model, render, measure, and analyze. There is no single best way to do it, so NDEVR ships several surfacing engines. This guide explains what each one does, its trade-offs, and when to reach for it.

What
Connecting measured points into a continuous surface — a mesh of triangles (or polygons).
Two families
Interpolating (the surface passes through the points) vs approximating (it fits a surface near them, averaging out noise).
Two shapes
2.5D height fields (terrain — one height per location) vs full 3D (objects with overhangs and closed volumes).
Normals
Some engines need per-point normals; NDEVR computes them automatically when they are missing.
Output
Triangles or general polygons, optionally carrying the cloud’s color.
Point cloudsurfaceSurfaced mesh
Surfacing connects the loose points of a cloud (left) into a continuous mesh (right) — the surface you actually model, render, and measure against. Diagram: NDEVR.

What Surfacing Is

From a distance, a dense point cloud already looks like a solid surface. But software cannot drape a texture over loose points, slice a section through them, or compute a watertight volume from them. For most work you need an actual surface: a mesh — a web of triangles (or polygons) whose faces form a continuous skin. Surfacing is the step that builds that skin from the points.

Every engine on this page takes the same input — positions, and sometimes color and normals — and produces the same kind of output: surface vertices joined into triangles or general polygons, optionally carrying the cloud’s color. What differs is how they decide which points to connect, and that choice is everything.

A dolphin rendered as a mesh of triangular faces
The output of surfacing is a mesh: thousands of triangles that together form a continuous surface. Image: Chrschn, public domain, via Wikimedia Commons.

Two Questions That Pick the Method

The engines look different, but they mostly sort along two questions about your data and your goal.

1. Is your surface a height field, or a full 3D shape?

Terrain — the ground, a field, a road, a stockpile seen from above — has one height per location. Surfaces like that are “2.5D” height fields, and the simplest, fastest engines exploit that. An object with overhangs, a building facade, a tunnel, a tree, or a statue is fully 3D: a single XY spot can have many surfaces stacked above it, so it needs an engine that works in true 3D.

2.5D height fieldone height per location1 surfaceZFull 3Doverhangs & undersides2 surfaces
A terrain has one height per location, so a height-field engine can model it (left). An arch — or any object with an overhang — stacks several surfaces over the same spot, so it needs a full-3D engine (right). Diagram: NDEVR.

2. Should the surface pass through the points, or smooth them?

If your data is clean and you trust every point, an interpolating engine that runs the surface exactly through the points keeps all the detail. If the cloud is noisy, or you want a clean watertight result, an approximating engine that fits a surface near the points — averaging out the scatter — gives a far better mesh.

Normals: usually handled for you

A few engines (Poisson, RBF, Hoppe, and greedy projection) need a normal at every point — the direction the surface faces — to tell inside from outside. NDEVR estimates and orients normals automatically when they are missing, so you rarely set them by hand; but the quality of those normals is what makes or breaks those methods.

The Surfacing Engines

Each engine below is one option NDEVR can run on a selection of points. They are grouped from the simplest height-field methods to the full-3D reconstructions.

Delaunay triangulation (TIN)

The classic terrain method. The points are projected onto a horizontal plane and connected into the “best” non-overlapping triangles — the Delaunay criterion favors fat, well-shaped triangles over thin slivers — then the triangle network is draped back over the points’ real elevations. The result is a Triangulated Irregular Network (TIN) that passes exactly through every input point. The triangulated mesh at the top of this page is built this way.

  • Strengths — very fast; exact (honors every point); deterministic; the natural base for contours, slope/volume analysis, and DTM/DSM terrain models.
  • Limitations — strictly 2.5D: it cannot represent overhangs, vertical walls, or the underside of anything. Noise and stray points become spikes, because the surface is forced through them.
  • Key setting — essentially parameter-free; you control quality mostly by thinning/cleaning the cloud first and by the boundary you surface within.
  • Reach for it when — you have ground or top-surface data and want a fast, faithful terrain model.

Cloth simulation (CSF)

The Cloth Simulation Filter turns the cloud upside down and drops a virtual sheet of “cloth” onto it under gravity. The cloth settles onto the points, and a stiffness setting keeps it from sagging into every dip — so it traces out the underlying ground while ignoring vegetation, vehicles, and buildings. It is the standard tool for extracting bare earth, and the settled cloth doubles as a smooth ground surface.

  • Strengths — excellent, robust ground extraction under trees and clutter; intuitive; few parameters; no normals needed; smooths out noise.
  • Limitations — terrain only (a single 2.5D surface); iterative, so slower than a TIN; needs a little tuning on very steep or terraced ground; fine ground detail is smoothed.
  • Key setting — cloth resolution (the spacing of the simulated grid): finer resolution follows more terrain detail at higher cost, plus a “steep slopes” option for rugged sites.
  • Reach for it when — you need a clean ground model, or to separate ground from everything else, in a vegetated or messy scan.

A two-sided variant runs the cloth from the top and the bottom and joins the two drapes into a single closed shell — a quick way to wrap a stockpile or mound in a closed surface (for volume or visualization) without needing normals. It costs roughly twice as much and can self-intersect in deep concavities, so it is a convenience wrap, not a true 3D reconstruction.

Left: a raw point cloud with vegetation. Right: the bare-earth surface extracted from the ground points.
Cloth simulation’s specialty: take the raw cloud (left), keep only the ground, and surface it into a clean bare-earth terrain model (right). Image: U.S. Geological Survey, 3D Elevation Program (public domain).

Marching cubes (voxel grid)

NDEVR’s native full-3D method. The points are dropped into a 3D grid of cells (voxels); each cell accumulates how much “stuff” it contains, and the marching cubes algorithm then extracts a surface wherever that density crosses a threshold. Because it works on a volume rather than a plane, it happily wraps overhangs and closed shapes — and it carries the cloud’s color straight through to the mesh.

Sample the cloud onto a grid, then extract the surfacetrue surfaceextracted mesh (finer grid = closer fit)
Marching cubes samples the points into a grid and extracts the surface cell by cell. A coarse grid (shown) gives a faceted approximation; a finer grid hugs the true surface more closely, at the cost of memory. Diagram: NDEVR.
  • Strengths — full 3D; very robust to noise and outliers (they average into the grid); needs no normals; preserves color; predictable.
  • Limitations — blocky if the grid is coarse; memory and time climb quickly as you refine it; tends to fill small concavities and holes; the surface floats near the points rather than through them.
  • Key setting — grid resolution (voxel size): the master trade-off between detail and memory.
  • Reach for it when — you have a noisy, dense, full-3D cloud (often without reliable normals) and want a robust mesh that keeps color.

Poisson reconstruction

The go-to for turning a dense scan of a solid object into a clean mesh. Poisson treats the oriented points as samples of the surface’s gradient and solves a single global equation for the smooth surface whose normals best match them. The result is smooth and watertight, and it gracefully bridges gaps and holes. It needs a normal at every point (computed automatically if absent).

Left: a real seashell. Right: a smooth watertight 3D mesh reconstructed from a scan of it.
Poisson excels at dense scans of solid, organic objects: a real shell (left) and a smooth, watertight reconstructed mesh (right). Image: Colin Kranz, CC BY-SA 4.0, via Wikimedia Commons.
  • Strengths — smooth, watertight surfaces; outstanding on dense, noisy scans of objects, people, and rooms; fills holes naturally.
  • Limitations — needs good normals; because it always closes the surface, it “balloons” out past the data and usually needs trimming; rounds off genuinely sharp edges; slower; the closed-surface assumption is wrong for open terrain.
  • Key setting — octree depth: higher depth resolves finer detail (more memory and time, and more sensitivity to noise); lower depth is smoother and coarser.
  • Reach for it when — you have a dense cloud of a closed object and want one smooth, watertight mesh.

Implicit grids: RBF & Hoppe

Two more full-3D reconstructions that, like Poisson, build an invisible signed-distance field (positive outside the surface, negative inside) and then run marching cubes on a regular grid to pull out the zero-level surface. They differ in how that field is defined. RBF (radial basis functions) fits one smooth global function through the points — good at extrapolating across gaps. Hoppe sets the distance from the nearest point’s tangent plane — fast and local. Both need oriented normals.

  • Strengths — smooth implicit surfaces; RBF bridges sparse gaps well; Hoppe is fast and direct; useful alternatives when Poisson is not the right fit.
  • Limitations — need normals; a regular grid uses more memory than Poisson’s octree; Hoppe is sensitive to inconsistent normals (it can leave holes); RBF slows down on very large clouds.
  • Key setting — grid resolution (voxel size), plus an iso-level offset to inflate or shrink the surface slightly.
  • Reach for it when — you want an implicit reconstruction with specific behavior: RBF to fill gaps in sparse data, Hoppe for a quick signed-distance mesh on clean, well-oriented points.

Greedy projection

A direct, “connect-the-dots” triangulation in 3D. Greedy projection starts from a seed triangle and grows the mesh outward, repeatedly stitching each point to nearby neighbors that satisfy distance and angle limits, until a front of triangles has spread across the cloud. Like Delaunay, it is interpolating — the mesh runs through the actual points, so it keeps fine detail and does not smooth. It needs normals.

Grow triangles outward, point to pointmeshedgrowing fronttoo far apart — left as a hole
Greedy projection grows a mesh from the points outward, connecting near neighbors along a moving front. Where points are too sparse or uneven, it simply leaves a hole rather than guessing. Diagram: NDEVR.
  • Strengths — fast; keeps the original points (exact, detail-preserving); does not smooth; great on clean, evenly-sampled scans.
  • Limitations — needs normals; leaves holes in sparse, uneven, or overlapping regions; struggles with noise; the result is not watertight, and local choices can create stray non-manifold patches.
  • Key setting — search radius (the longest edge / neighborhood it will bridge): too small leaves holes, too large stitches across gaps it should not.
  • Reach for it when — you have a clean, fairly uniform cloud and want a faithful, detail-preserving mesh fast, with no smoothing.

Choosing the Right One

Answer the two questions from above — height field or full 3D, and through-the-points or smoothed — and this table narrows it to one or two engines. “Through” means the surface passes through every point (interpolating); “near” means it fits a surface close to them (approximating).

NDEVR surfacing engines at a glance. “Normals: auto” means required but estimated for you when missing.
EngineShapePointsNormalsNoiseWatertightBest for
Delaunay / TIN2.5DThroughNoPoorNoTerrain, ground & top surfaces, contours, volumes
Cloth (CSF)2.5DNearNoGoodNoBare-earth from vegetated or cluttered scans
Two-sided CSF3D (closed)NearNoGoodRoughlyA quick closed shell around a pile or mound
Marching cubes (grid)3DNearNoExcellentYesNoisy full-3D clouds; keeps color
Poisson3DNearAutoExcellentYesDense scans of solid objects → smooth watertight mesh
RBF / Hoppe3DNearAutoGoodMostlyImplicit reconstruction; RBF fills gaps, Hoppe is fast
Greedy projection3DThroughAutoPoorNoClean, even clouds; faithful detail, fast

A quick rule of thumb: for terrain, start with a TIN, or cloth simulation if you must strip vegetation first. For a scanned object, start with Poisson; drop to marching cubes if your normals are unreliable, or to greedy projection if the data is clean and you want to preserve every point.

After Surfacing

A raw mesh is rarely the final product. A few finishing steps apply across every engine:

  • Normals — NDEVR estimates and orients per-point normals automatically for the engines that need them; their consistency is what keeps a reconstruction from turning inside-out.
  • Color — the cloud’s color can be carried onto the surface, or sampled from the nearby points after the fact, so the mesh keeps its real-world appearance.
  • Cleanup — nearby duplicate vertices can be merged, and the surface can be clipped to a boundary you select — useful for trimming the over-extended edges Poisson and the implicit methods tend to produce.
  • Simplify — a dense mesh can be decimated down to a lighter one for modeling, sharing, or the web, while keeping its shape.

Pick the engine that matches your data, and the point cloud you captured becomes a surface you can build on — a terrain model, a watertight scan, or a faithful as-built mesh. To go back a step and understand the input, see What is a Point Cloud?; for how clouds are captured in the first place, see What is LiDAR? and What is Photogrammetry?