PEMBARUAN: Repositori ini tidak digunakan lagi. Silakan gunakan Meshfinity atau repo resmi TripoSR jika Anda hanya perlu membuat jerat bertekstur. Konten repo ini akan tetap online jika Anda secara khusus perlu memodifikasi geometri mesh yang dihasilkan sebelum membuat tekstur - tetapi banyak pengguna tidak memerlukan fungsi ini.
TripoSR adalah model sumber terbuka yang luar biasa untuk menyimpulkan data bentuk dan tekstur 3D dari jerat 2D. Seperti banyak model berbasis pembelajaran mesin terbaru untuk grafik 3D generatif, TripoSR menggunakan representasi volumetrik NeRF (neural radiance field) untuk data 3D-nya, dibandingkan dengan jaring poligon tradisional. Repositori TripoSR menyertakan kode untuk mengubah NeRF yang dihasilkan menjadi mesh menggunakan algoritme Marching Cubes, tetapi menyimpan data warna dalam warna titik, bukan tekstur, sehingga sangat membatasi resolusi dan mencegah manipulasi geometri lebih lanjut (misalnya penyederhanaan mesh) tanpa merusak data warna.
TripoSR Bake membagi proses ekspor mesh menjadi dua bagian. Dalam 01-mesh.py
, perkiraan mesh diekstraksi menggunakan Marching Cubes dan ditulis ke .obj
(seperti pada repo TripoSR asli), namun juga menyimpan file .pkl
yang berisi prediksi NeRF dari inferensi model TripoSR. File .obj
kemudian dapat diedit secara manual (misalnya diperhalus atau disederhanakan), selama batas-batas mesh dipertahankan (yaitu tidak menskalakan/memutar/menerjemahkan mesh secara keseluruhan). Setelah pengeditan mesh, skrip 02-texture.py
digunakan untuk menghasilkan atlas UV untuk mesh dan memasukkan data NeRF ke peta UV ini. Dengan menggunakan metode ini, bahkan jaring poli rendah pun dapat berisi detail warna resolusi tinggi dari keluaran NeRF asli. Perlu diingat bahwa kualitas tekstur akan menurun karena simpul mesh terdeformasi semakin jauh dari volume asli mesh. Seperti biasa, hasil akan bervariasi tergantung pada gambar input, kualitas mesh yang dihasilkan, filter/pengeditan yang diterapkan sebelum memberi tekstur pada mesh, dan efisiensi atlas UV yang dikemas.
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
Untuk penjelasan lengkap mengenai opsi yang tersedia, jalankan python 01-mesh.py --help
dan 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