🚀 MeshAnything:基于自回归Transformer的艺术家级网格生成
MeshAnything是一个利用自回归Transformer进行网格生成的项目,能够根据输入的图像等信息生成高质量的3D网格,为3D建模领域提供了新的解决方案。
🚀 快速开始
安装
我们的环境已在Ubuntu 22、CUDA 11.8以及A100、A800和A6000 GPU上进行了测试。按照以下步骤进行安装:
git clone https://github.com/buaacyw/MeshAnything.git && cd MeshAnything
conda create -n MeshAnything python==3.10.13
conda activate MeshAnything
pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt
pip install flash-attn --no-build-isolation
使用
本地Gradio演示 
python app.py
网格命令行推理
# 文件夹输入
python main.py --input_dir examples --out_dir mesh_output --input_type mesh
# 单文件输入
python main.py --input_path examples/wand.ply --out_dir mesh_output --input_type mesh
# 先使用Marching Cubes进行预处理
python main.py --input_dir examples --out_dir mesh_output --input_type mesh --mc
点云命令行推理
# 注意:如果您想使用自己的点云,请确保包含法线信息。
# 文件格式应为形状为(N, 6)的.npy文件,其中N是点数。前3列是坐标,后3列是法线。
# 文件夹推理
python main.py --input_dir pc_examples --out_dir pc_output --input_type pc_normal
# 单文件推理
python main.py --input_dir pc_examples/mouse.npy --out_dir pc_output --input_type pc_normal
⚠️ 重要提示
- 在A6000 GPU上生成一个网格大约需要7GB内存和30秒时间。
- 输入的网格将被归一化到一个单位边界框中。为了获得更好的结果,输入网格的向上向量应为+Y。
- 由于计算资源的限制,MeshAnything是在面数少于800的网格上进行训练的,无法生成面数超过800的网格。输入网格的形状应足够尖锐;否则,仅用800个面来表示它将具有挑战性。因此,前馈式图像到3D的方法可能由于形状质量不足而经常产生不良结果。我们建议使用3D重建、扫描和基于SDS的方法(如DreamCraft3D)的结果作为MeshAnything的输入。
- 更多示例请参考:https://huggingface.co/spaces/Yiwen-ntu/MeshAnything/tree/main/examples
💡 使用建议
该仓库仍在建设中,感谢您的耐心等待。后续计划如下:
📄 致谢
我们的代码基于以下优秀的仓库:
📚 BibTeX引用
@misc{chen2024meshanything,
title={MeshAnything: Artist-Created Mesh Generation with Autoregressive Transformers},
author={Yiwen Chen and Tong He and Di Huang and Weicai Ye and Sijin Chen and Jiaxiang Tang and Xin Chen and Zhongang Cai and Lei Yang and Gang Yu and Guosheng Lin and Chi Zhang},
year={2024},
eprint={2406.10163},
archivePrefix={arXiv},
primaryClass={cs.CV}
}