Final Project Milestone Report : Point-cloud to Mesh

Name:   Star Li | SID: 3033789672   Han Cui | SID: 3033631995


Overall Progress

Our project is an algorithm to convert point cloud data into meshes based on Ball-Pivoting Algorithm(BPA). So far, we have good progress in coding parts.

Data preparation and pre-processing are done in the first place. using .ply files from the Stanford repository, we wrote some python codes to convert them into .xyz files, a custom format which contain not only the locations but also the normal directions of the points. To achieve this, we borrow the area-weighted vertex normal method from proj 2 to interpolate the normals. In addition to these large point-clouds, we also wrote several programs to generate fake point-cloud data of simple geometries (e.g. sphere, cube, etc.) for debugging purpose.

Once the data is ready, we began to implement the algorithm from scratch. We started off from basic data structures, such as vertex, edge, triangle, etc., and finished some useful helper functions (e.g. circum-sphere construction) along the way. Since our algorithm involves tremendous K-nearest-neighbor queries, we implemented an accelerating structure, Octree which supports efficient construction and searching. For the core BPA, we have implemented the function to find the seed triangle, with other supporting functions like compatibility check, sphere construction, and spatial nearest neighbors from Octree. Furthermore, all of the above functions and structures have been tested on our own on simple 3D geometries.

For the overall pipeline, we included some file I/O functions to help working with files in the disk. Also, we get the chance to write the CMake files ourselves for the very first time in this course and enable cross-platform development.


Project pipelines, ✔ means finished


Project Goals

Back in our initial proposal, we set up 3 (potential) goals for our project. While some of them are in good shape right now, some requires some modification and the details are specified below.

Goal 1: Ball-Pivoting Algorithm

We ended up converting vanilla .ply file to our custom format without using external packages. For the BPA itself, we went half way through the core codes, and finished data structure constructions, initiated pipelines like reading files, and included unit-test codes. For the following days, we would finish the BPA with other core codes as expand triangulation and candidate vertex selection, and other post-processes.

Modifications:

None

Goal 2: Integrate with MeshEdit and Experiments

We started with some experiments that benchmark our speed, and we would also add methods to measure the precision of our reconstruction. For the MeshiEdit, we would like to find a way to let it render .ply files, and maybe also .xyz files if needed.

Modifications:

None

Goal 3: Advanced Surface Reconstruction

(This part is considered "tentative" for us due to the intense schedule in the summer course. We will prioritize working in the first two tasks and begin this one once the above are finished)

As mentioned in the proposal, we feel strongly motivated to implement the Poisson Reconstruction Surface (PSR), however, due to the fast pace and shorter pierid of final project, we might only have a decent chance to do it.

Modifications:


Schedule


Additional Resources

In addition to those listed in the proposal, we find the following resources useful as well this week



Made with ❤ with Bootstrap, by Star Li (listar2000@berkeley.edu)