CharacterGen: 从单个图像高效生成3D角色,并配合多视角姿态正交化
这是SIGGRAPH'24 (TOG) CharacterGen代码库。
- 包括Blender和three.js的VRM模型渲染脚本。
- 2D生成阶段的推理代码。
- 3D生成阶段的推理代码。
快速开始
1. 准备环境
使用 python3.9
,然后运行
pip install -r requirements.txt
2. 运行脚本
运行整个流水线
python webui.py
该脚本会自动下载权重。
您也可以使用 huggingface-cli
手动下载权重。
huggingface-cli download --resume-download zjpshadow/CharacterGen --include 2D_Stage/* --local-dir .
huggingface-cli download --resume-download zjpshadow/CharacterGen --include 3D_Stage/* --local-dir .
如果在下载过程中发现错误,您可以下载整个存储库并移动到正确的文件夹。
仅运行2D阶段
cd 2D_Stage
python webui.py
仅运行3D阶段
cd 3D_Stage
python webui.py
获取Anime3D数据集
由于政策限制,我们无法重新分发VRM格式3D角色的原始数据。 您可以按照 PAniC-3D 说明下载vroid数据集。 然后您可以使用我们发布的渲染脚本通过Blender或three.js进行渲染。
Blender
首先,您应该安装 Blender 和 Blender的VRM插件。
然后您可以渲染VRM并在某些fbx动画中导出obj。
blender -b --python render_script/blender/render.py importVrmPath importFbxPath outputFolder [is_apose]
最后一个输入参数表示是否使用姿势;如果使用,输出姿势;否则,输出fbx中任意帧的动作。
three-vrm
比Blender VRM插件快得多。
首先安装 Node.js 以使用npm环境。
cd render_script/three-js
npm install three @pixiv/three-vrm
如果您想渲染VRM的深度图像,您应该用 我的版本 替换three-vrm。
首先,运行后端来捕获来自前端的数据(默认端口是 17070
),记得改变文件夹路径。
pip install fastapi uvicorn aiofiles pillow numpy
python up_backend.py
其次,运行前端来渲染图像。
npm run dev
然后打开网站 http://localhost:5173/,它使用 2 个线程来渲染图像,这需要大约 1 天的时间。
我们的结果
单个输入图像 | 2D多视图图像 | 3D角色 |
---|---|---|
致谢
本项目建立在 Tune-A-Video 和 TripoSR 之上。 渲染脚本建立在 three-vrm 和 VRM-Addon-for-Blender 之上。 非常感谢许多朋友无私地帮助我们的工作。我们非常感谢 Yuanchen、Yangguang 和 Yuan Liang 在代码细节和想法方面的指导。 我们感谢所有作者的优秀作品和帮助。
引用
如果您发现我们的代码或论文有帮助,请考虑引用:
@article{peng2024charactergen,
title ={CharacterGen: Efficient 3D Character Generation from Single Images with Multi-View Pose Canonicalization},
author ={Hao-Yang Peng and Jia-Peng Zhang and Meng-Hao Guo and Yan-Pei Cao and Shi-Min Hu},
journal ={ACM Transactions on Graphics (TOG)},
year ={2024},
volume ={43},
number ={4},
doi ={10.1145/3658217}
}