{"id":26878841,"url":"https://github.com/colin97/deepmetahandles","last_synced_at":"2025-05-07T17:48:03.716Z","repository":{"id":39001854,"uuid":"338513751","full_name":"Colin97/DeepMetaHandles","owner":"Colin97","description":"DeepMetaHandles: Learning Deformation Meta-Handles of 3D Meshes with Biharmonic Coordinates","archived":false,"fork":false,"pushed_at":"2022-07-28T23:42:36.000Z","size":7810,"stargazers_count":83,"open_issues_count":1,"forks_count":6,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-31T12:36:39.515Z","etag":null,"topics":["3d-deep-learning","3d-graphics","deep-learning","deformation","mesh-deformation","mesh-generation","mesh-processing"],"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/Colin97.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}},"created_at":"2021-02-13T06:38:06.000Z","updated_at":"2024-10-24T06:14:53.000Z","dependencies_parsed_at":"2022-09-12T18:51:48.042Z","dependency_job_id":null,"html_url":"https://github.com/Colin97/DeepMetaHandles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Colin97%2FDeepMetaHandles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Colin97%2FDeepMetaHandles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Colin97%2FDeepMetaHandles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Colin97%2FDeepMetaHandles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Colin97","download_url":"https://codeload.github.com/Colin97/DeepMetaHandles/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252930524,"owners_count":21827070,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["3d-deep-learning","3d-graphics","deep-learning","deformation","mesh-deformation","mesh-generation","mesh-processing"],"created_at":"2025-03-31T12:29:46.076Z","updated_at":"2025-05-07T17:48:03.697Z","avatar_url":"https://github.com/Colin97.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DeepMetaHandles (CVPR2021 Oral)\n\n\u003cimg src=\"fig/teaser.jpg\" align=\"center\"\u003e \n\u003cdiv float=\"center\"\u003e\n\u003cimg src=\"fig/chair0/5c70ab.gif\" width=\"10.2%\"\u003e\n\u003cimg src=\"fig/chair0/11e521.gif\" width=\"10.2%\"\u003e\n\u003cimg src=\"fig/chair0/587ee5.gif\" width=\"10.2%\"\u003e\n\u003cimg src=\"fig/chair7/4a0e7f.gif\" width=\"10.2%\"\u003e\n\u003cimg src=\"fig/chair7/37a095.gif\" width=\"10.2%\"\u003e\n\u003cimg src=\"fig/chair7/a2bffa.gif\" width=\"10.2%\"\u003e\n\u003cimg src=\"fig/chair6/4a0e7f.gif\" width=\"10.2%\"\u003e\n\u003cimg src=\"fig/chair6/9aa05f.gif\" width=\"10.2%\"\u003e\n\u003cimg src=\"fig/chair6/39fee0.gif\" width=\"10.2%\"\u003e  \n\u003c/div\u003e\n\u003cdiv float=\"center\"\u003e\n\u003cimg src=\"fig/chair5/7e4335.gif\" width=\"10.2%\"\u003e\n\u003cimg src=\"fig/chair5/104256.gif\" width=\"10.2%\"\u003e\n\u003cimg src=\"fig/chair5/f76d50.gif\" width=\"10.2%\"\u003e\n\u003cimg src=\"fig/chair9/11e521.gif\" width=\"10.2%\"\u003e\n\u003cimg src=\"fig/chair9/f1563f.gif\" width=\"10.2%\"\u003e\n\u003cimg src=\"fig/chair9/fde8c8.gif\" width=\"10.2%\"\u003e\n\u003cimg src=\"fig/chair13/3e72bf.gif\" width=\"10.2%\"\u003e\n\u003cimg src=\"fig/chair13/5c6c95.gif\" width=\"10.2%\"\u003e\n\u003cimg src=\"fig/chair13/5c70ab.gif\" width=\"10.2%\"\u003e\n\u003c/div\u003e\n\n [[project]](https://mhsung.github.io/papers/deep-meta-handles.html) [[paper]](https://arxiv.org/pdf/2102.09105) [[demo]](https://mhsung.github.io/deep-meta-handles-demo/web_demo.html) [[animations]](http://cseweb.ucsd.edu/~mil070/deep_meta_handles_supp_animations)  \n\nDeepMetaHandles is a shape deformation technique. It learns a set of meta-handles for each given shape. The disentangled meta-handles factorize all the plausible deformations of the shape, while each of them corresponds to an intuitive deformation direction. A new deformation can then be generated by the \"linear combination\" of the meta-handles. Although the approach is learned in an unsupervised manner, the learned meta-handles possess strong interpretability and consistency.\n\n## Environment setup\n\n1. Create a conda environment by `conda env create -f environment.yml`.\n2. Build and install [torch-batch-svd](https://github.com/KinglittleQ/torch-batch-svd).\n\n## Demo\n\n1. Download `data/demo` and `checkpoints/chair_15.pth` from [here](https://drive.google.com/drive/folders/1vYfcSJlVE9Hgh3nGlvGvg_GSFToVZH39?usp=sharing) and place them in the corresponding folder. Pre-processed demo data contains the manifold mesh, sampled control point, sampled surface point cloud, and corresponding biharmonic coordinates.\n2. Run `src/demo_target_driven_deform.py` to deform a source shape to match a target shape.\n3. Run `src/demo_meta_handle.py` to generate deformations along the direction of each learned meta-handle.\n\n## Train\n1. Download `data/chair` from [here](https://drive.google.com/drive/folders/1vYfcSJlVE9Hgh3nGlvGvg_GSFToVZH39?usp=sharing) and place them in the corresponding folder.\n2. Run the visdom server. (We use [visdom](https://github.com/fossasia/visdom)  to visualize the training process.)\n3. Run `src/train.py` to start training.\n\nNote: For different categories, you may need to adjust the number of meta-handles. Also, you need to tune the weights for the loss functions. Different sets of weights may produce significantly different results.\n\n## Pre-process your own data\n\n0. Compile codes in `data_preprocessing/.`\n1. Build and run [manifold](https://github.com/hjwdzh/Manifold) to convert your meshes into watertight manifolds.\n2. Run `data_preprocessing/normalize_bin` to normalize the manifold into a unit bounding sphere.\n3. Build and run [fTetWild](https://github.com/wildmeshing/fTetWild) to convert your manifolds into tetrahedral meshes. Please use `--output xxx.mesh` option to generate the `.mesh` format tet mesh. Also, you will get a `xxx.mesh__sf.obj` for the surface mesh. We will use `xxx.mesh` and `xxx.mesh__sf.obj` to calculate the biharmonic weights. We will only deform `xxx.mesh__sf.obj` later.\n4. Run `data_preprocessing/sample_key_points_bin` to sample control points from `xxx.mesh__sf.obj`. We use the FPS algorithm over edge distances to sample the control points.\n5. Run `data_preprocessing/calc_weight_bin` to calculate the bihrnomic weights. It takes `xxx.mesh`, `xxx.mesh__sf.obj`, and the control point file as input, and will output a text file containing the weight matrix for the vertices in `xxx.mesh__sf.obj`.\n6. Run `data_preprocessing/sample_surface_points_bin` to sample points on the `xxx.mesh__sf.obj` and calculate the corresponding biharmonic weights for the sampled point cloud.\n7. In our training, we remove those shapes (about 10%) whose biharmonic weight matrix contains elements that are smaller than -1.5 or greater than 1.5. We find that this can help us to converge faster.\n8. To reduce IO time during training, you may compress the data into a compact form and load them to the memory. For example, you can use python scripts in `data_preprocessing/merge_data` to convert cpp output into numpy files.\n\n\n## Citation\n\nIf you find our work useful, please consider citing our paper:\n\n```\n@article{liu2021deepmetahandles,\n  title={DeepMetaHandles: Learning Deformation Meta-Handles of 3D Meshes with Biharmonic Coordinates},\n  author={Liu, Minghua and Sung, Minhyuk and Mech, Radomir and Su, Hao},\n  journal={arXiv preprint arXiv:2102.09105},\n  year={2021}\n}\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcolin97%2Fdeepmetahandles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcolin97%2Fdeepmetahandles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcolin97%2Fdeepmetahandles/lists"}