更新:此存储库已弃用。如果您只需要生成纹理网格,请使用 Meshfinity 或官方 TripoSR 存储库。如果您在烘焙纹理之前特别需要修改生成的网格几何形状,则此存储库的内容将保持在线状态 - 但许多用户不需要此功能。
TripoSR 是一个出色的开源模型,用于从 2D 网格推断 3D 形状和纹理数据。与许多最新的基于机器学习的生成 3D 图形模型一样,TripoSR 使用 NeRF(神经辐射场)体积表示来表示其 3D 数据,而不是传统的多边形网格。 TripoSR 存储库包含使用 Marching Cubes 算法将其生成的 NeRF 转换为网格的代码,但以顶点颜色而不是纹理存储颜色数据,严重限制分辨率并阻止在不破坏颜色数据的情况下进一步操作几何体(例如网格简化)。
TripoSR Bake 将导出网格的过程分为两部分。在01-mesh.py
中,使用 Marching Cubes 提取网格的近似值并将其写入.obj
(如原始 TripoSR 存储库中所示),但它还保存一个.pkl
文件,其中包含来自 TripoSR 模型推理的 NeRF 预测。然后可以手动编辑.obj
文件(例如平滑或简化),只要保留网格的边界(即不缩放/旋转/平移整个网格)。网格编辑后, 02-texture.py
脚本用于生成网格的 UV 图集,并将 NeRF 数据烘焙到该 UV 贴图上。使用这种方法,即使是低多边形网格也可以包含原始 NeRF 输出的高分辨率颜色细节。请记住,随着网格顶点变形远离网格的原始体积,纹理质量将会降低。与往常一样,结果将根据输入图像、生成的网格的质量、网格纹理之前应用的过滤器/编辑以及打包 UV 图集的效率而有所不同。
git clone https://github.com/iffyloop/TripoSR-Bake.git
cd TripoSR-Bake
# TripoSR requires a real virtualenv environment,
# not the built-in venv that comes with Python
pip install virtualenv
python -m virtualenv venv
# Now we install dependencies for this repo
source venv/bin/activate # venvScriptsactivate.bat on Windows
pip install torch # For CUDA support, follow the instructions at https://pytorch.org/get-started/locally/
pip install -r requirements.txt
有关可用选项的完整说明,请运行python 01-mesh.py --help
和python 02-texture.py --help
。
# Generate Marching Cubes mesh
python 01-mesh.py --input input/chair.png --output-mesh output/chair.obj --output-scene-codes output/chair.pkl --no-remove-background --density-threshold 15.0 --marching-resolution 512 --marching-oversampling 1 --tsr-chunk-size 8192 --device cpu
# Bake texture
# Before this stage, you probably want to smooth and remesh the generated chair.obj mesh in MeshLab,
# then use that as the --input-mesh below instead of the raw Marching Cubes mesh.
# Editing the mesh is merely a suggestion, not a requirement. The original mesh can also be textured.
python 02-texture.py --input-mesh output/chair.obj --input-scene-codes output/chair.pkl --output-mesh output/chair-textured.obj --output-texture output/chair-textured.png --texture-resolution 1024 --texture-padding 2 --tsr-chunk-size 8192 --device cpu