Point Cloud to Mesh
Point cloud triangulation turns a set of 3D points captured by LiDAR or other scanning technologies into a continuous triangle mesh.
Discover moreFrom raw scans to a usable 3D model
MeshLib takes point clouds from LiDAR and 3D scanners through every step to a finished model: import, clean, sample, estimate normals, align scans with ICP and reconstruct a triangle mesh. One SDK for C++, Python, C# and C.
Point cloud triangulation turns a set of 3D points captured by LiDAR or other scanning technologies into a continuous triangle mesh.
Discover moreMesh triangulation converts point clouds into triangle meshes quickly, using vertex normals to guide the surface.
Discover moreICP aligns two 3D datasets: it takes a source point cloud or mesh and estimates the rigid transformation that places it onto the target.
Discover moreA typical scan-to-model pipeline has six steps. Each one is a MeshLib function you can call on its own or chain with the others.
Load point clouds from E57, LAS, LAZ, PLY, PTS, XYZ, XYZN, ASC, CSV, OBJ and DXF files.
PointsLoad::fromAnySupportedFormat
Find stray points far from the surface, then thin dense scans with uniform or grid sampling to keep the detail you need at a size you can process.
findOutlierspointUniformSamplingpointGridSampling
Raw scans usually come without normals. MeshLib computes them and orients them consistently, which reconstruction and point-to-plane registration depend on.
makeOrientedNormalsorientNormals
Register overlapping scans with point-to-point or point-to-plane ICP, or align many scans at once with multiway ICP. ICP is a local refinement: it starts from a rough initial placement of the scans.
ICPMultiwayICP
Triangulate the points directly, or fuse them through a voxel grid to get a single surface from overlapping scans.
triangulatePointCloudpointsToMeshFusion
Compute distances between point clouds and meshes to check a scan against a reference model.
findMaxDistanceSqfindSignedDistances
Laser scanner and LiDAR formats load directly, without a conversion step.
Three calls take a scan from a file to a triangle mesh. The same API is available in C# and C.
from meshlib import mrmeshpy as mm
cloud = mm.loadPoints("scan.ply")
mesh = mm.triangulatePointCloud(cloud)
mm.saveMesh(mesh, "scan_mesh.ply")// error handling omitted for brevity
auto cloud = MR::PointsLoad::fromAnySupportedFormat( "scan.ply" );
auto mesh = MR::triangulatePointCloud( *cloud );
MR::MeshSave::toAnySupportedFormat( *mesh, "scan_mesh.ply" );Booleans, mesh repair, decimation and ICP — in your browser, as JavaScript and WebAssembly. No install, no sign-up.
Open live demoOr install the SDK — free to evaluate
Point cloud processing is the set of operations that turn raw 3D scan points into usable data: loading the scan, removing outliers, sampling, estimating normals, aligning several scans and reconstructing a mesh surface.
Yes. MeshLib triangulates point clouds directly with triangulatePointCloud and can also fuse overlapping scans through a voxel grid with pointsToMeshFusion. See Point Cloud to Mesh.
MeshLib reads E57, LAS, LAZ, PLY, PTS, XYZ, XYZN, ASC, CSV, OBJ and DXF point clouds. The full list is on the file formats page.
Yes. MeshLib aligns scans with point-to-point and point-to-plane ICP and aligns many scans at once with multiway ICP. Point-to-plane ICP needs normals, so compute them first if the scan has none. See ICP.
Yes. The Python package exposes the same point cloud functions as the C++ core; install it with pip install meshlib.
We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.
The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site.
We also use third-party cookies that help us analyze how you use this website, store your preferences, and provide the content and advertisements that are relevant to you. These cookies will only be stored in your browser with your prior consent.
You can choose to enable or disable some or all of these cookies but disabling some of them may affect your browsing experience.
Your browser is sending a Global Privacy Control signal, so we treat it as an opt-out of advertising: “Accept All” leaves the Advertisement category off. You can still turn it on yourself under Customize.
To learn more about how Google processes personal information, visit: Google privacy policy
Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.
Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.
Other cookies are those that are being identified and have not been classified into any category as yet.