Diperbarui 13 September 2026
Apa yang dipertahankan oleh konversi 3D dan berapa biayanya
Mengonversi sebuah mesh tidak gratis dan bukan operasi tanpa kehilangan. GLB dan glTF mempertahankan semuanya. OBJ mempertahankan objek terpisah dan nama materialnya, tetapi menghapus warna per vertex. STL hanya mempertahankan segitiga. PLY mempertahankan warna per vertex, tetapi meratakan adegan menjadi satu mesh. USDZ mempertahankan kedua objek dan UV, kehilangan warna per vertex dan nama material saat dibaca ulang, dan menulis zip dari USDA. Angka-angka di bawah ini diukur, bukan diperkirakan.
Setiap angka di halaman ini berasal dari menjalankan konverter yang sama yang digunakan situs ini, dengan file asli, dan membaca atribut langsung dari byte yang ditulis. Diukur dengan 13 September 2026 dengan three.js r179. Metode ada di akhir halaman dan skrip ada di repositori.

Apa yang disimpan setiap format?#
Sebuah adegan referensi dengan dua kubus dengan nama berbeda, masing-masing dengan bahan logam bernama sendiri, warna per vertex, koordinat UV, dan normal, diubah ke enam tujuan. GLB dan glTF kembali lengkap. Semua format lainnya kehilangan sesuatu, dan masing-masing kehilangan hal yang berbeda.
| Tujuan | Dua objek | Koordinat UV | Warna per vertex | Nama material | Jumlah vertex |
|---|---|---|---|---|---|
| GLB | Dipelihara 2 | Dipertahankan | Dipertahankan | Dipertahankan | 48 vertex |
| glTF | Dipelihara 2 | Dipertahankan | Dipertahankan | Dipertahankan | 48 vertex |
| OBJ | Dipelihara 2 | Dipertahankan | Hilang | Dipertahankan | 72 vertex |
| STL | Digabungkan menjadi 1 | Hilang | Hilang | Hilang | 72 vertex |
| PLY | Digabungkan menjadi 1 | Dipertahankan | Dipertahankan | Hilang | 48 vertex |
| USDZ | Dipelihara 2 | Dipertahankan | Hilang | Hilang | 72 vertex |
Mengapa STL dan PLY menggabungkan sebuah adegan menjadi satu mesh?#
Tidak satu pun dari kedua format memiliki grafik adegan. GLB, glTF, dan OBJ dapat mendeskripsikan beberapa objek bernama dalam satu file; STL mendeskripsikan satu solid, dan PLY satu daftar elemen, jadi kedua kubus menjadi satu mesh dan tidak ada cara untuk memisahkannya kembali.
Ini adalah kerugian yang paling mengejutkan, karena tidak terlihat. Model yang dikonversi terlihat identik di penampil. Hanya ketika Anda mencoba memilih, mengubah material, atau menganimasikan salah satu bagiannya, Anda menyadari bahwa bagian-bagiannya tidak ada lagi.
Jika model harus tetap dapat dipisahkan, tujuannya harus GLB, glTF, atau OBJ. Jika akan ke laminator atau pencetakan dengan satu material, penggabungan tidak menghabiskan apa pun.
Seberapa besar file bertambah?#
Lebih dari yang diharapkan kebanyakan orang. Dalam mesh yang dihasilkan secara nyata, OBJ memakan 5,6 kali lebih banyak daripada GLB asal, dan PLY 1,4 kali lebih banyak. Keduanya memiliki geometri yang sama.
| Konversi | Asal | Hasil | Rasio | Vertex yang ditulis |
|---|---|---|---|---|
| mug.glb a GLB | 880 KB | 1.173 KB | 1,3x | 25.000 |
| mug.glb a glTF | 880 KB | 1.564 KB | 1,8x | 25.000 |
| mug.glb a OBJ | 880 KB | 4.928 KB | 5,6x | 150.000 |
| mug.glb a STL | 880 KB | 2.441 KB | 2,8x | 150.000 |
| mug.glb a PLY | 880 KB | 1.221 KB | 1,4x | 25.000 |
| mug.glb a USDZ | 880 KB | 2.927 KB | 3,3x | 150.000 |
| lion.glb a GLB | 8.768 KB | 11.690 KB | 1,3x | 249.369 |
| lion.glb a glTF | 8.768 KB | 15.587 KB | 1,8x | 249.369 |
| lion.glb a OBJ | 8.768 KB | 51.880 KB | 5,9x | 1.496.202 |
| lion.glb a STL | 8.768 KB | 24.352 KB | 2,8x | 1.496.202 |
| lion.glb a PLY | 8.768 KB | 12.176 KB | 1,4x | 249.369 |
| lion.glb a USDZ | 8.768 KB | 30.487 KB | 3,5x | 1.496.202 |
Mengapa OBJ dan STL melipatgandakan jumlah vertex?#
Karena tidak satupun dari keduanya berbagi simpul di antara segitiga-segitiga. Sebuah mesh yang diindeks dengan baik menyimpan setiap sudut hanya sekali dan merujuknya dari semua segitiga yang menyentuhnya; OBJ dan STL, seperti yang tertulis di sini, menyimpan ketiga sudut dari setiap segitiga secara terpisah. Dalam uji dengan lion.glb, itu mengubah 249.369 simpul menjadi 1.496.202, beberapa 6 kali lagi.
Geometri tidak berubah. Permukaan yang sama, segitiga yang sama, siluet yang sama; hanya akuntansi yang menjadi lebih mahal, dan arsip tumbuh lebih kurang dalam proporsi yang sama.
PLY adalah contoh kontra yang berguna. Ini mempertahankan indeks, sehingga mesh yang sama ditulis dengan ukuran yang hampir sama dengan asalnya dan tetap membawa warna per vertex. Untuk mesh besar yang hanya perlu mempertahankan geometri, PLY adalah tujuan jujur termurah dalam daftar ini.
Teks dibandingkan dengan biner memperburuknya. glTF adalah JSON dengan buffer yang dikodekan dalam base64, yang biayanya sekitar satu 33 persen lebih banyak daripada GLB identik, karena base64 mengubah setiap tiga byte menjadi empat.
Mengapa file tersebut tumbuh bahkan saat dikonversi dari GLB ke GLB?#
Karena konverter menghitung normal verteks dari setiap mesh yang datang tanpa normal dan kemudian menulisnya. Sebuah mesh yang dihasilkan seringkali tidak memiliki atribut normal apapun, jadi perjalanan bolak-balik menambahkan satu vektor penuh per verteks.
Ujian dengan mug.glb adalah contoh yang jelas: masuk 880 KB dan keluar 1.173 KBtanpa perubahan apapun pada geometri. Normal yang ditambahkan adalah perbedaannya.
Ini adalah keputusan yang disengaja, bukan cacat. Sebuah mesh tanpa normal terlihat dengan shading datar dan berbentuk faset di sebagian besar viewer, jadi konverter menghitungnya sekali saat memuatnya daripada membiarkan setiap alat berikutnya menebaknya.
Apakah konversi mengubah bentuknya?#
Tidak. Setiap tujuan dikonversi dan kemudian dibaca kembali, dan permukaannya keluar identik: jumlah segitiga yang sama dan total luas permukaan yang sama, hingga batas pengukuran, dalam sebuah jala 498.734 segitiga. Geometri adalah bagian dari file 3D yang tetap utuh setelah konversi.
| Tujuan | Segitiga setelah | Kesalahan luas permukaan | Bagaimana koordinat disimpan |
|---|---|---|---|
| GLB | tanpa perubahan | 0% | float32 biner |
| glTF | tanpa perubahan | 0% | buffer dalam base64 |
| OBJ | tanpa perubahan | 0% | teks dengan 17 desimal |
| STL | tanpa perubahan | 0% | float32 biner |
| PLY | tanpa perubahan | 0% | float32 biner |
| USDZ | tanpa perubahan | 0% | zip dari USDA |
Jadi, apakah konversi 3D mengalami kehilangan atau tidak?#
Keduanya, dan perbedaannya yang berguna. Geometri tidak kehilangan apapun: bentuk yang masuk adalah bentuk yang keluar. Semua yang mengelilingi geometri memang hilang, dan bagian yang hilang sepenuhnya tergantung pada tujuan yang kamu pilih.
Di sini tidak ada yang memotong koordinat. GLB, STL, dan PLY menulis float biner 32-bit. glTF menyematkan buffer biner yang sama sebagai base64 di dalam JSON-nya. USDZ menulis zip dari USDA. OBJ adalah satu-satunya yang menulis posisi sebagai teks desimal, dan menulisnya dengan presisi penuh alih-alih membulatkannya, yang sebagian menjadi alasan mengapa file-nya jauh lebih besar.
Itu berarti kekhawatiran umum, bahwa setiap konversi sedikit merusak model, seperti menyimpan ulang JPEG, tidak berlaku. Mengonversi dari GLB ke OBJ dan kembali tidak menghaluskan mesh.
Apa yang memang dilakukan adalah mengabaikan apa yang muncul di bagian atas halaman ini: grafo adegan di STL dan PLY, warna per vertex di OBJ, STL dan USDZ, nama material di STL, PLY dan USDZ, dan UV di STL. Kehilangan itu bersifat permanen, dalam arti bahwa mengonversi kembali tidak bisa menciptakannya kembali.
Tujuan mana yang harus kamu pilih?#
Pilih tujuan sesuai dengan apa yang harus bertahan, bukan sesuai dengan ekstensi yang disarankan alat penerima pertama dalam daftarnya. Ini adalah pilihan yang dapat dipertahankan berdasarkan apa yang diukur di atas.
| Jika kamu membutuhkan | Pilih | Mengapa |
|---|---|---|
| Semuanya dipertahankan, dalam satu file | GLB | Satu-satunya tujuan yang mempertahankan bersama graf adegan, nama material, UV, dan warna per vertex, dengan ukuran terkecil dari format lengkap. |
| Semua terjaga, dapat dibaca oleh manusia | glTF | Konten yang sama dengan GLB, sekitar satu 33 persen lebih besar karena buffer berada dalam base64 di dalam JSON. |
| Objek terpisah dengan nama di program desktop | OBJ | Mempertahankan kedua objek dan kedua nama material. Mengabaikan warna per vertex dan menulis file terbesar dari enam. |
| Cetak 3D | STL | Segitiga dan tidak lebih, yang merupakan semua yang dibaca oleh slicer. Yang terkecil dari tujuan yang bukan glTF dalam mesh nyata. |
| Geometri dan warna per vertex, dengan bobot ringan | PLY | Satu-satunya format yang bukan glTF yang mempertahankan warna per vertex, dan mempertahankan indeks, jadi ukurannya tetap dekat dengan asalnya. |
| Quick Look Apple / AR di iPhone | USDZ | Mempertahankan kedua objek dan UV di adegan referensi. Kehilangan warna per vertex dan nama material saat dibaca ulang. Sebuah zip USDA yang bisa dibuka oleh ponsel. |
Apa yang mendefinisikan format ini#
Pengukuran di atas adalah milik kami; apa yang dapat dibawa oleh setiap format bukanlah keputusan kami. Ini adalah spesifikasi dan referensi format yang menentukan hal itu, sehingga apa yang dinyatakan di halaman ini bisa diperiksa langsung dari sumbernya daripada semata-mata dipercaya.
- Spesifikasi glTF 2.0The Khronos Group
Tentukan graf adegan, material, dan aksesoris yang dibawa GLB dan glTF, dan jelaskan mengapa mereka adalah satu-satunya tujuan yang bertahan utuh di sini.
- Jenis media model/gltf-binaryIANA
Jenis yang terdaftar untuk GLB, kontainer biner yang diukur di atas.
- Jenis media model/stlIANA
STL sebagaimana terdaftar: segitiga dan normal wajah, tanpa bidang untuk warna, UV, material, atau nama objek.
- Format berkas Wavefront OBJPaul Bourke
Referensi klasik untuk OBJ, yang tidak memiliki bidang sendiri untuk warna per verteks, sesuai dengan yang dibuang oleh konversi.
- Format berkas poligon PLYPaul Bourke
Dokumentasikan properti per-vertex, termasuk warna, yang membuat PLY menjadi satu-satunya tujuan yang bukan glTF yang menyimpannya di sini.
- Spesifikasi format file USDZPixar / OpenUSD
USDZ adalah zip yang entri pertamanya adalah adegan USDA. Itu adalah paket yang ditulis dan dibaca oleh konverter ini.
Cara pengukuran#
Pengukuran menjalankan produk, bukan deskripsinya. Skrip mengimpor pemuat dan ekspor yang sama seperti konverter peramban, dengan opsi yang sama, dan ada di repositori agar angka-angka dapat direproduksi atau didiskusikan.
- Membangun adegan referensi dengan dua kubus bernama, masing-masing dengan bahan logam bernama, warna per-vertex, koordinat UV, dan normal.
- Memuat mesh yang dihasilkan secara nyata dengan cara yang sama seperti konverter memuat file yang Anda berikan, termasuk langkah yang menghitung normal vertex ketika sebuah mesh datang tanpa normal tersebut.
- Mengekspor ke GLB, glTF, OBJ, STL, PLY, dan USDZ dengan eksportir yang sama yang dipanggil konverter dan pengaturan biner yang sama.
- Mencatat ukuran dalam byte dari setiap hasil.
- Membaca atribut langsung dari byte yang ditulis dan bukan dari scene yang dimuat ulang, karena loader mengada-ada apa yang tidak ada dalam file: sebuah OBJ tanpa garis vn tetap dimuat ulang dengan atribut normal sintetis.
- Mempublikasikan tabel langsung dari hasil tersebut. Diukur 13 September 2026 dengan three.js r179.
Pertanyaan
- Apakah mengonversi file 3D mengurangi kualitas?
- Bentuknya tidak. Setiap tujuan dikonversi dan dibaca ulang, dan jumlah segitiga serta area permukaan total tetap identik dalam sebuah mesh dengan 498.734 segitiga, tanpa memotong koordinat dalam format apapun. Yang hilang adalah semua yang mengelilingi geometri, dan ini tergantung pada tujuannya: STL menghapus UV, warna, material, dan graf adegan; OBJ menghapus warna per vertex; PLY menghapus nama material dan menggabungkan adegan; USDZ menghapus warna per vertex dan nama material saat dibaca ulang; GLB dan glTF mempertahankan semuanya.
- Format 3D mana yang memakan tempat paling sedikit?
- GLB, dalam jaring nyata. Dalam tes ini GLB menulis 1.173 KB di mana OBJ menulis 4.928 KB untuk model yang sama, karena GLB adalah biner dan mempertahankan indeks simpul yang dibagikan, sedangkan OBJ yang dihasilkan adalah teks dan menyimpan secara terpisah setiap sudut dari setiap segitiga.
- Mengapa OBJ saya jauh lebih besar daripada GLB yang darinya dibuat?
- Untuk dua alasan, keduanya berukuran: OBJ adalah teks dan bukan biner, dan OBJ yang ditulis di sini tidak berbagi simpul antar segitiga, jadi jumlah simpulnya berlipat ganda. 6 di sebuah mesh yang terindeks dengan baik. Permukaannya sama; akuntansi tidak.
- Apakah STL mempertahankan warna?
- Tidak. STL biner menyimpan normal wajah dan tiga sudut per segitiga, dan tidak memiliki bidang untuk warna, UV, materi, atau nama objek. Itu diterapkan pada semua STL yang ditulis dalam uji coba ini.
- Bisakah saya mempertahankan warna per simpul tanpa menggunakan GLB?
- Ya, dengan PLY. Dalam pengujian ini, itu adalah satu-satunya tujuan yang bukan glTF yang menyatakan properti warna di header-nya. Namun, itu meratakan satu adegan yang berisi beberapa objek menjadi satu mesh, jadi Anda mempertahankan warna tetapi kehilangan bagian-bagian.
- Apakah mengonversi model 3D berulang kali merusaknya?
- Tidak. Berbeda dengan menyimpan ulang JPEG, konversi 3D tidak menumpuk kesalahan: koordinat disalin sebagai float biner atau, dalam kasus OBJ, ditulis sebagai desimal dengan presisi penuh. Perjalanan bolak-balik melalui salah satu format ini menghasilkan permukaan yang identik. Yang tidak kembali adalah informasi material dan adegan yang tidak dapat dibawa oleh tujuan sejak awal.
- Bisakah saya mereproduksi angka-angka ini?
- Ya. Skrip pengukuran ada di repositori, di scripts/measure-conversions.mjs, dan menulis JSON yang dibaca halaman ini. Terakhir dijalankan pada 13 September 2026 dengan three.js r179.