Final Project - Trent Snyder

3D Surface Reconstruction: Point Clouds -> Meshes

    My final project focused on the last part of the photogrammetry pipeline, which is taking a generated point cloud and turning it into an object mesh. I did this through a library called Point Cloud Library (PCL) downloadable here - -.

File  formats used were .pcd (point cloud data) -> .obj.

In order to have enough time for multiple renderings of the finished .OBJ files, I used the pcl::GreedyProjectionTriangulation class included in the pcl::surface package (documentation here - This performs a greedy triangulation on 3D points based on 2D projections. This mean that the meshes are generated "faster" but can suffer in quality due to some greedy shortcuts, like assuming locally smooth surfaces and relatively smooth transitions between areas with different point densities.


What This Means:

Good Input Data leads to faster/higher quality meshes.

More Complex Input Data leads to a drop in quality and speed.



The process used for implementation can basically be summed up as this:

  1. Load point cloud data into PointCloud format
  2. Do a normal estimation for the surface
  3. Load back into a new PointCloud with normals
  4. Create search tree.
  5. Set parameters: Mu, neighbors, max and min angles, search radius
  6. Reconstruct
  7. Export as .obj

Conclusion: Worked well for simple more uniform meshes, but on the complex real-world data had trouble doing accurate renderings.

Lessons Learned:


Complex Data Attempts

Complex Surfacing Attempts Point Cloud Visual Mesh Render (Maya)
Face 1 f1P Face1 PC f1R Face1 MR
Face 2 f2PFace2 PC f2R Face2 MR
Shoes sP Shoes PC sR Shoes MR
Office oP office PC oR OR

Additional Photos

Shoes Side: Shoes MR

Poly Face Shoes MR