SIGGRAPH 2020 [Paper] [Project Page]
Point2Mesh is a technique for reconstructing a surface mesh from an input point cloud. This approach "learns" from a single object, by optimizing the weights of a CNN to deform some initial mesh to shrink-wrap the input point cloud. The argument for going this route is: since the (local) convolutional kernels are optimized globally across the entire shape, this encourages local-scale geometric self-similarity across the reconstructed shape surface.
The code was written by Rana Hanocka and Gal Metzer.
- Clone this repo:
git clone https://github.com/ranahanocka/point2mesh.git
cd point2mesh- Relies on PyTorch version 1.4 (or 1.5) and PyTorch3D version 0.2.0.
Install via conda environmentconda env create -f environment.yml(creates an environment called point2mesh)
This code relies on the Robust Watertight Manifold Software.
First cd into the location you wish to install the software. For example, we used cd ~/code.
Then follow the installation instructions in the Watertight README.
If you installed Manifold in a different path than ~/code/Manifold/build, please update options.py accordingly (see this line)
Download our example data
bash ./scripts/get_data.shFirst, if using conda env first activate env e.g. source activate point2mesh.
All the scripts can be found in ./scripts/examples.
Here are a few examples:
bash ./scripts/examples/giraffe.shbash ./scripts/examples/bull.shbash ./scripts/examples/tiki.shbash ./scripts/examples/noisy_guitar.sh... and more.
To run all the examples in this repo:
bash ./scripts/run_all_examples.shYou should provide an initial mesh file. If the shape has genus 0, you can use the convex hull script provided in ./scripts/process_data/convex_hull.py
If you find this code useful, please consider citing our paper
@article{Hanocka2020p2m,
title = {Point2Mesh: A Self-Prior for Deformable Meshes},
author = {Hanocka, Rana and Metzer, Gal and Giryes, Raja and Cohen-Or, Daniel},
year = {2020},
issue_date = {July 2020},
publisher = {Association for Computing Machinery},
volume = {39},
number = {4},
issn = {0730-0301},
url = {https://doi.org/10.1145/3386569.3392415},
doi = {10.1145/3386569.3392415},
journal = {ACM Trans. Graph.},
}
If you have questions or issues running this code, please open an issue.

