{"id":20099284,"url":"https://github.com/dcharatan/point2mesh-reimplementation","last_synced_at":"2026-03-06T18:03:31.979Z","repository":{"id":68843777,"uuid":"312652256","full_name":"dcharatan/point2mesh-reimplementation","owner":"dcharatan","description":"A reimplementation of Hanocka et al.'s paper Point2Mesh: A Self-Prior for Deformable Meshes for CSCI 1470: Deep Learning at Brown University.","archived":false,"fork":false,"pushed_at":"2020-12-16T20:46:40.000Z","size":7707,"stargazers_count":38,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-06T06:46:02.124Z","etag":null,"topics":["graphics","mesh-processing","meshes","point2mesh","reimplementation","tensorflow"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dcharatan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-11-13T18:19:34.000Z","updated_at":"2025-04-19T13:43:08.000Z","dependencies_parsed_at":"2023-05-26T21:30:13.889Z","dependency_job_id":null,"html_url":"https://github.com/dcharatan/point2mesh-reimplementation","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dcharatan/point2mesh-reimplementation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcharatan%2Fpoint2mesh-reimplementation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcharatan%2Fpoint2mesh-reimplementation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcharatan%2Fpoint2mesh-reimplementation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcharatan%2Fpoint2mesh-reimplementation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dcharatan","download_url":"https://codeload.github.com/dcharatan/point2mesh-reimplementation/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcharatan%2Fpoint2mesh-reimplementation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30189483,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T17:33:53.563Z","status":"ssl_error","status_checked_at":"2026-03-06T17:33:51.678Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["graphics","mesh-processing","meshes","point2mesh","reimplementation","tensorflow"],"created_at":"2024-11-13T17:09:43.409Z","updated_at":"2026-03-06T18:03:31.971Z","avatar_url":"https://github.com/dcharatan.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Point2Mesh Reimplementation\n\n![](data/gifs/triceratops_gif_small.gif)\n\nThis is a reimplementation of [Point2Mesh: A Self-Prior for Deformable Meshes](https://ranahanocka.github.io/point2mesh/) by Rana Hanocka, Gal Metzer, Raja Giryes and Daniel Cohen-Or. It was written by David Charatan, Solon James and Grace Deng as a final project for CSCI 1470: Deep Learning at Brown University. The authors' original implementation (in PyTorch) can be found [here](https://github.com/ranahanocka/Point2Mesh/). Watch a short video we made about the project [here](https://youtu.be/k34zExyJHvo).\n\n## Running the Code\n\nSeveral example point clouds can be found in the `data` folder. To fit to a point cloud, do the following:\n\n```\npython3 -m source.script_modules.train_model data/point_clouds/elephant_settings.json\n```\n\nReplace `elephant_settings.json` with a JSON settings file of your choice. For more information about valid JSON settings files, see `options.py`.\n\n## Notes About this Implementation\n\nThis implementation runs slower than the original implementation and doesn't include the PartMesh structure (splitting meshes into parts so that larger meshes can be optimized). However, we tried to add lots of comments to the code to make this implementation easier to follow than the original.\n\n## Project Setup\n\n### Creating a Virtual Environment\n\nTo create a virtual environment, run `python3 -m venv venv`. Then, do `source venv/bin/activate` (or equivalent) and `pip3 install -r requirements.txt` to install the project's dependencies.\n\n### Manifold Software Dependency\n\nThe remeshing and simplification operations Point2Mesh depends on require [this watertight manifold software](https://github.com/hjwdzh/Manifold). To install it, `cd` into the `point2mesh-reimplementation` folder and run the following:\n\n```\ngit clone --recursive -j8 git://github.com/hjwdzh/Manifold\ncd Manifold\nmkdir build\ncd build\ncmake .. -DCMAKE_BUILD_TYPE=Release\nmake\n```\n\n### Installing OpenEXR\n\nOpenEXR, a dependency of TensorFlow Graphics, cannot be installed directly via `pip`. Instead, follow the steps below:\n\n#### Windows\n\nDownload a precompiled wheel file from `https://www.lfd.uci.edu/~gohlke/pythonlibs/`, move it to the workspace folder, then run `python -m pip install SomePackage-1.0-py2.py3-none-any.whl`. Running `pip3 install tensorflow-graphics` should then work.\n\n#### MacOS\n\n```\nbrew install openexr\nexport CFLAGS=\"-I/Users/USERNAME/homebrew/include/OpenEXR -std=c++11\"\nexport LDFLAGS=\"-L/Users/USERNAME/homebrew/lib\"\npip3 install tensorflow-graphics\n```\n\n#### Ubuntu\n\n```\nsudo apt-get install python3-dev\nsudo apt-get install libopenexr-dev\nsudo apt-get install openexr\npip3 install tensorflow-graphics\n```\n\n### Running Scripts\n\nThe scripts in `script_modules` can be run as Python modules. To run `create_convex_hull.py`, run the command `python3 -m source.script_modules.create_convex_hull` from the project's root directory. Several VS Code run configurations are included in `.vscode/launch.json`.\n\n### Running Unit Tests\n\nTo run the unit tests in VS Code, open the command menu (\u003ckbd\u003e⌘ Command\u003c/kbd\u003e \u003ckbd\u003e⇧ Shift\u003c/kbd\u003e \u003ckbd\u003eP\u003c/kbd\u003e on MacOS) and run `Python: Discover Tests` and then `Python: Run All Tests`. I recommend discovering and running tests through Python Test Explorer for Visual Studio Code (`littlefoxteam.vscode-python-test-adapter`) if you add more tests, since it's hard to diagnose broken tests that aren't being discovered with the default test explorer.\n\n### GCP VM Creation Steps\n\nDisclaimer: This is a bit hacky since GCP's setup precludes usage of the normal venv setup.\n\nFirst, make a VM:\n\n- Region: `us-west1 (Oregon)`\n- Series: `N1`\n- Machine type: `n1-standard-4 (4 vCPU, 15 GB memory)`\n- Under `CPU platform and GPU`: Add one `NVIDIA Tesla V100` GPU\n- Scroll down and check `Allow HTTP traffic` and `Allow HTTPS traffic`\n- Set the boot disk to `Deep Learning on Linux` and `Intel® optimized Deep Learning Image: TensorFlow 2.3 m59 (with Intel® MKL-DNN/MKL and CUDA 110)`.\n\nNow, SSH into the VM under `Open in browser window`. You might have to wait a few minutes before this is possible (before that, it might hang). Now, in the terminal:\n\n- When it prompts you for driver installation when you first log in, say yes.\n\nNow run the following commands:\n\n```\ngit clone https://github.com/dcharatan/point2mesh-reimplementation.git\ncd point2mesh-reimplementation\n\ngit clone --recursive -j8 git://github.com/hjwdzh/Manifold\ncd Manifold\nmkdir build\ncd build\ncmake .. -DCMAKE_BUILD_TYPE=Release\nmake\n\ncd ~/point2mesh-reimplementation\npip3 install trimesh\nrm -rf /opt/conda/lib/python3.7/site-packages/cloudpickle\npip3 install cloudpickle==1.4.0\nsudo apt-get install libopenexr-dev\nsudo apt-get install openexr\npip3 install tensorflow-graphics\n```\n\nNow you can run the training script via:\n\n```\npython3 -m source.script_modules.train_model\n```\n\n### Retrieving OBJs from Google Cloud\n\n```\nmv results ~\nzip -r temp.zip results\n```\n\nIf using the browser-based SSH terminal, now click the cog (settings icon) and download `temp.zip`.\n\n## Acknowledgements\n\nThe files `elephant.pwn`, `hand.pwn` and `sphere.pwn` were taken from Alex Jacobson's [mesh reconstruction project](https://github.com/alecjacobson/geometry-processing-mesh-reconstruction).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcharatan%2Fpoint2mesh-reimplementation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdcharatan%2Fpoint2mesh-reimplementation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcharatan%2Fpoint2mesh-reimplementation/lists"}