Prolincur Technologies

LAS / PLY / E57Mesh (OBJ / glTF)

Point cloud to mesh: from scans to usable surfaces

How to turn large point clouds into clean, lightweight surface meshes for analysis, CAD and the web.

Why this conversion is hard

  • Point clouds have millions of points but no surfaces, so engineers cannot measure or model on them directly.
  • Raw scans contain noise, outliers and holes.
  • A naive reconstruction produces meshes far too heavy for a browser.

How we do it

  1. 01

    Clean

    Downsample to an even density and remove statistical outliers.

  2. 02

    Estimate normals

    Each point gets a consistently oriented normal, which surface reconstruction depends on.

  3. 03

    Reconstruct

    Poisson surface reconstruction builds a watertight surface. Low-density areas, which are usually invented surface, are trimmed.

  4. 04

    Simplify

    Quadric decimation reduces the triangle count while keeping the shape that matters.

A short working example

A starting point to show the idea. Production pipelines add validation, tiling and error handling around it.

Python with Open3D: Poisson reconstruction and decimation
import numpy as np
import open3d as o3d

pcd = o3d.io.read_point_cloud("scan.ply")
pcd = pcd.voxel_down_sample(voxel_size=0.02)
pcd, _ = pcd.remove_statistical_outlier(nb_neighbors=20, std_ratio=2.0)
pcd.estimate_normals(o3d.geometry.KDTreeSearchParamHybrid(radius=0.1, max_nn=30))
pcd.orient_normals_consistent_tangent_plane(30)

mesh, densities = o3d.geometry.TriangleMesh.create_from_point_cloud_poisson(pcd, depth=9)
densities = np.asarray(densities)
mesh.remove_vertices_by_mask(densities < np.quantile(densities, 0.05))

mesh = mesh.simplify_quadric_decimation(target_number_of_triangles=100_000)
o3d.io.write_triangle_mesh("surface.obj", mesh)

What usually goes wrong

  • Poisson depth controls detail and memory: raise it step by step.
  • Wrongly oriented normals create inside-out surfaces.
  • For very large scans, tile the cloud spatially and reconstruct tile by tile.

Need this in your product?

Tell us about your data and your product. You will talk to an engineer from the first call.