更新:此存儲庫已棄用。如果您只需要產生紋理網格,請使用 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