Mengurangi poligon GLB dengan gltfpack

Retensi segitiga menentukan proporsi jumlah segitiga asli yang ingin dipertahankan. Hasilnya mungkin masih di atas target karena batas kesalahan atau kendala mesh. Pengaturan ini memengaruhi geometri; dimensi dan encoding tekstur diatur secara terpisah.

Mulai dengan target moderat

Unggah model asli, biarkan tekstur tetap sama, dan atur Target segitiga tersisa ke 50%. Biarkan galat penyederhanaan pada bawaan 1%. Bandingkan garis melengkung, bagian tipis, dan lubang sebelum menurunkan lagi. Untuk model dengan beberapa mesh, periksa setiap bagian, bukan hanya jumlah keseluruhan.

gltfpack -i input.glb -o output.glb -si 0.5 -kn -km -ke

Mengapa target mungkin tidak tercapai

Batas galat membatasi kesalahan penyederhanaan yang dapat diterima. Batas lebih ketat dapat menghentikan pengurangan lebih awal. Batas terbuka, sambungan atribut, dan struktur bagian mesh kecil juga dapat mengurangi pilihan penyederhanaan yang aman. Situs melaporkan hasil terukur dan kemungkinan penyebab; mesin tidak menentukan satu alasan penghentian yang pasti.

Kunci vertex batas jika bagian terpisah harus mempertahankan kecocokan tepi terbuka. Ini dapat membantu menghindari celah, tetapi mungkin menyisakan lebih banyak segitiga. Uji bagian yang dirakit setelah ekspor; penguncian batas tidak menjamin setiap sambungan visual tetap sama.

Hasil pengukuran pada contoh riak

Pengaturan penyederhanaanSegitiga output
Mesh asli8.192
Target 50%, batas galat bawaan4.095
Target 10%, galat nol, batas terkunci8.192
Target 10%, penyederhanaan agresif812

Pengujian menggunakan contoh asli CC0 yang sama dan gltfpack native 1.3. Jumlah segitiga menghitung setiap primitif mesh sekali. Hasil bergantung pada model, dan jumlah mendekati target tidak menunjukkan apakah bentuk tersisa dapat diterima.

Bandingkan siluet dari sudut yang sama

Gambar ini merender file dalam tabel dengan kamera, pencahayaan, dan material yang sama di Three.js 0.180.0. Buka gambar untuk melihat ukuran penuh. Mulai dari lekukan luar dan lubang dalam; jangan menilai hasil hanya dari jumlah segitiga.

Model riak asli dari kamera pembanding tetap
Asli: 8.192 segitiga
Model riak setelah mempertahankan 50 persen segitiga
50% tersisa: 4.095 segitiga
Model riak setelah mempertahankan 10 persen secara agresif
10% agresif: 812 segitiga

Pada hasil agresif 10%, lubang dalam terlihat memiliki segmen lebih lurus dan sudut lebih tajam. Lekukan luar juga kehilangan sebagian kebulatannya. Perubahan ini mudah terlewat pada thumbnail kecil, meskipun target segitiga tercapai.

Contoh ini tidak memiliki skinning atau animasi. Satu sudut pandang tidak dapat mengungkap masalah gerakan, permukaan tersembunyi, atau semua perubahan pencahayaan. Putar hasil Anda sendiri dan periksa pada ukuran tampilan yang dituju sebelum menerima jumlah segitiga lebih rendah.

Gunakan penyederhanaan agresif setelah membandingkan

Penyederhanaan agresif mengutamakan jumlah yang diminta dan mengabaikan batas galat. Antarmuka menonaktifkan kolom galat selama mode ini aktif. Gunakan pada salinan dan periksa siluet serta pencahayaan permukaan. Ini bukan jalan pintas untuk mempertahankan kualitas model yang sulit.

gltfpack -i input.glb -o output.glb -si 0.1 -sa -kn -km -ke

Jika pengurangan segitiga hampir tidak memperkecil file →

Referensi mesin: gltfpack

Buka pengoptimal ↗