This is the official repository for the CVPR2025 paper: ''Fancy123: One Image to High-Quality 3D Mesh Generation via Plug-and-Play Deformation'' by Qiao Yu, Xianzhi Li, Yuan Tang, Xu Han, Long Hu, Yixue Hao, and Min Chen.
Fancy123 generates a high-quality textured 3D mesh given a single RGB image:
https://github.com/user-attachments/assets/470f1244-197a-472a-98d6-599775638ac7
Fancy123's core idea is to utilize 2D image deformation to address the multiview inconsistency issue, and 3D mesh deformation to address the low fidelity issue:
https://github.com/user-attachments/assets/6700ac0d-7331-4097-8cf3-3a3e7ede6b70
Please refer to scripts/install.md.
Fancy123 works during inference and is training-free!
First, put your images under `examples', then run InstantMesh to get an initial mesh:
python run_init.py
You'll see generated multiview images in outputs/instant-mesh-large/images and initial meshes in outputs/instant-mesh-large/meshes.
Then, run Fancy123's enhancement steps:
python main_fancy123_refine.py
You'll see results in outputs/instant-mesh-large/fancy123_meshes. You can use tools like MeshLab or Blender to visualize the final result named `final_mesh.obj'.
unproject_wo_2D_deform.obj: if its geometry seems bad, try setting geo_refine=False in main_fancy123_refine.py L105.2D_deform_deformed.obj seems ok but 3D_deformed_mesh.obj looks smaller or shrunk, you can try setting lap_weight smaller or even to 0 in configs/instantmesh.yaml. We found that a larger laplacian weight makes the mesh shrink.2D_deform_deformed.obj seems ok but 3D_deformed_mesh.obj looks bad, it may be that no suitable camera parameters are found. If your input image is almost 0-elevation, you can try setting input_all_0_elevation to True in configs/instantmesh.yaml. In this way we don't try to find the best camera parameters but use the default settings.use_vertex_wise_NBF: False in configs/instantmesh.yaml.
If you still cannot get a good result, try other random seeds, or leave an issue so that I can see if there's anything that I can help.We have intensively borrowed code from the following repositories. Many thanks to the authors for sharing their code.
If you find Fancy123 helpful, please cite our paper:
@InProceedings{Yu_2025_CVPR,
author = {Yu, Qiao and Li, Xianzhi and Tang, Yuan and Han, Xu and Hu, Long and Hao, Yixue and Chen, Min},
title = {Fancy123: One Image to High-Quality 3D Mesh Generation via Plug-and-Play Deformation},
booktitle = {Proceedings of the Computer Vision and Pattern Recognition Conference (CVPR)},
month = {June},
year = {2025},
pages = {595-604}
}
11 commits
Python
100.0%
This is the official repository for the CVPR2025 paper: ''Fancy123: One Image to High-Quality 3D Mesh Generation via Plug-and-Play Deformation'' by Qiao Yu, Xianzhi Li, Yuan Tang, Xu Han, Long Hu, Yixue Hao, and Min Chen.
Fancy123 generates a high-quality textured 3D mesh given a single RGB image:
https://github.com/user-attachments/assets/470f1244-197a-472a-98d6-599775638ac7
Fancy123's core idea is to utilize 2D image deformation to address the multiview inconsistency issue, and 3D mesh deformation to address the low fidelity issue:
https://github.com/user-attachments/assets/6700ac0d-7331-4097-8cf3-3a3e7ede6b70
Please refer to scripts/install.md.
Fancy123 works during inference and is training-free!
First, put your images under `examples', then run InstantMesh to get an initial mesh:
python run_init.py
You'll see generated multiview images in outputs/instant-mesh-large/images and initial meshes in outputs/instant-mesh-large/meshes.
Then, run Fancy123's enhancement steps:
python main_fancy123_refine.py
You'll see results in outputs/instant-mesh-large/fancy123_meshes. You can use tools like MeshLab or Blender to visualize the final result named `final_mesh.obj'.
unproject_wo_2D_deform.obj: if its geometry seems bad, try setting geo_refine=False in main_fancy123_refine.py L105.2D_deform_deformed.obj seems ok but 3D_deformed_mesh.obj looks smaller or shrunk, you can try setting lap_weight smaller or even to 0 in configs/instantmesh.yaml. We found that a larger laplacian weight makes the mesh shrink.2D_deform_deformed.obj seems ok but 3D_deformed_mesh.obj looks bad, it may be that no suitable camera parameters are found. If your input image is almost 0-elevation, you can try setting input_all_0_elevation to True in configs/instantmesh.yaml. In this way we don't try to find the best camera parameters but use the default settings.use_vertex_wise_NBF: False in configs/instantmesh.yaml.
If you still cannot get a good result, try other random seeds, or leave an issue so that I can see if there's anything that I can help.We have intensively borrowed code from the following repositories. Many thanks to the authors for sharing their code.
If you find Fancy123 helpful, please cite our paper:
@InProceedings{Yu_2025_CVPR,
author = {Yu, Qiao and Li, Xianzhi and Tang, Yuan and Han, Xu and Hu, Long and Hao, Yixue and Chen, Min},
title = {Fancy123: One Image to High-Quality 3D Mesh Generation via Plug-and-Play Deformation},
booktitle = {Proceedings of the Computer Vision and Pattern Recognition Conference (CVPR)},
month = {June},
year = {2025},
pages = {595-604}
}
11 commits
Python
100.0%