更新: このリポジトリは非推奨になりました。単にテクスチャメッシュを生成する必要がある場合は、Meshfinity または公式 TripoSR リポジトリを使用してください。テクスチャをベイクする前に生成されたメッシュ ジオメトリを特に変更する必要がある場合に備えて、このリポジトリのコンテンツはオンラインのままになりますが、多くのユーザーはこの機能を必要としません。
TripoSR は、2D メッシュから 3D 形状およびテクスチャ データを推測するための優れたオープンソース モデルです。最近の多くの機械学習ベースの生成 3D グラフィックス モデルと同様に、TripoSR は 3D データに従来のポリゴン メッシュではなく、NeRF (神経放射場) の体積表現を使用します。 TripoSR リポジトリには、マーチング キューブ アルゴリズムを使用して、生成された NeRF をメッシュに変換するコードが含まれていますが、カラー データをテクスチャではなく頂点カラーに保存するため、解像度が大幅に制限され、カラー データを破壊することなくジオメトリをさらに操作する (メッシュの単純化など) ことができなくなります。
TripoSR Bake は、メッシュをエクスポートするプロセスを 2 つの部分に分割します。 01-mesh.py
では、マーチング キューブを使用してメッシュの近似が抽出され、(元の TripoSR リポジトリと同様に) .obj
に書き込まれますが、TripoSR モデル推論からの NeRF 予測を含む.pkl
ファイルも保存されます。メッシュの境界が保持されている限り (つまり、メッシュ全体を拡大縮小/回転/平行移動しない限り)、. .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