Notebook on creating a 3D mesh from lidar

Dec 12, 2021

A growing subset of OpenTopography users are accessing data for use in various 3D modeling software environments.

To better support this user community, OpenTopography prepared a new Jupyter notebook to allow users to subset or thin dense point cloud datasets using a voxel grid, triangulate the new dataset to create a surface mesh, and export the mesh as an .STL file that can be opened in a variety of 3D modeling software. This notebook was prepared by summer 2021 OpenTopography USIP intern Nathaniel Quinn.

Due to the very high point density of lidar, thinning the raw point cloud data is a critical step to obtaining a functional mesh, and we utilize a voxel method of thinning in the notebook. The voxel grid thinning or subsetting process is based on the division of the point cloud extents into a grid of regular cubic cells or voxels. For each voxel, the closest point to the barycenter becomes the representative point, and the subset point cloud is created from this collection of representative points. As many point cloud datasets have a data density higher than required for many applications, this thinning allows users to minimize unnecessary computational costs in data processing and visualization. This is particularly necessary when creating surface meshes, as often full point clouds are extremely slow when triangulated and the added detail is often unnecessary. The voxel size is an adjustable variable for the user, and dictates the degree of thinning.

Users may download an .STL file of the triangulated surface mesh of the subset point cloud. This .STL product opens in most 3D modeling software and can be used in the digital space, as well as the physical with 3D printing.

We hope this new tool allows users a faster entrance into the world of point cloud 3D modeling, rendering, and visualization.

Access the Jupyter notebook HERE


Sample Mesh
Sample mesh derived from lidar data



Mesh in Meshlab
Sample mesh visualized in Meshlab


Mesh in Rhino
Sample mesh visualized in Rhino