UltKit

STL vs OBJ vs 3MF: Format File 3D Mana yang Sebaiknya Dipakai?

Pakai STL untuk cetakan satu warna yang tinggal di-slice, OBJ saat model membawa tekstur untuk render atau game engine, dan 3MF bila slicer Anda mendukungnya dan Anda ingin satuan, warna, serta beberapa bagian tetap utuh dalam perjalanan. Format menentukan metadata apa yang ikut bersama mesh; format tidak pernah menentukan apakah mesh itu sendiri sehat.

Jonas WeberJonas WeberEditor performa web
Diperbarui 12 menit baca
Printer 3D desktop dalam kotak pelindung bening di atas meja putih, dengan laptop yang menampilkan model 3D dan hasil cetakan warna-warni, termasuk peta kontur dan roda gigi merah

STL: daftar segitiga, tanpa yang lain

STL ditulis pada 1987 untuk mesin stereolitografi pertama buatan 3D Systems, dan asal-usul itu terlihat jelas dari desainnya. Sebuah file hanyalah daftar segitiga yang datar, masing-masing dijelaskan oleh satu normal bidang (facet normal) dan tiga titik sudut. Tidak ada tabel verteks bersama, sehingga sudut yang bersentuhan dengan enam segitiga ditulis enam kali. Tidak ada pula kolom satuan: koordinat 25 bisa berarti milimeter, inci, atau meter, dan hampir semua slicer menebak milimeter. Warna, tekstur, dan nama bagian tidak punya tempat di format intinya, dan justru karena itulah setiap slicer, paket CAD, dan jasa cetak masih bisa membacanya.

STL hadir dalam dua encoding. STL ASCII menuliskan semuanya sebagai teks, dengan baris seperti facet normal, outer loop, dan vertex 12.5 0 3.2, sehingga Anda bisa membukanya di editor teks dan membaca angkanya. STL biner diawali header 80 byte dan jumlah segitiga 4 byte, lalu menyimpan setiap segitiga sebagai dua belas bilangan float 4 byte ditambah kolom atribut 2 byte: tepat 50 byte per segitiga. Aturan itu membuat ukurannya mudah diperkirakan. Model satu juta segitiga berukuran sekitar 50 MB dalam bentuk biner, dan versi ASCII dari mesh yang sama biasanya empat sampai enam kali lebih besar karena setiap digit menjadi satu karakter.

Kesederhanaan ini sekaligus kekuatan dan jebakannya. STL tidak bisa memberi tahu apakah ia dimaksudkan sebagai satu bagian atau tiga, apakah diekspor dalam inci, atau apakah segitiganya benar-benar membungkus sebuah benda padat. Slicer harus menyimpulkannya dari koordinat mentah, dan kalau tebakannya salah, Anda mendapat bagian yang 25,4 kali terlalu kecil atau dinding yang hilang. Untuk bagian satu warna yang Anda rancang sendiri dan ekspor dalam milimeter, semua itu tidak menjadi soal, dan STL tetap menjadi format yang paling kecil kemungkinannya ditolak.

OBJ: poligon, UV, dan file material pendamping

OBJ berasal dari Wavefront Technologies, yang memakainya di perangkat lunak Advanced Visualizer pada akhir 1980-an, lalu menyebar sepanjang 1990-an sebagai format teks biasa yang bisa dipertukarkan oleh hampir semua program 3D. Berbeda dari STL, OBJ menyimpan daftar verteks dan menyusun bidang dari indeks, sehingga sudut bersama cukup disimpan sekali, dan bidangnya bisa berupa segitiga, segi empat, atau poligon yang lebih besar. Baris yang diawali v berisi posisi, vt koordinat tekstur (UV), vn normal, dan f bidang. Grup (g) dan objek (o) memberi nama pada bagian-bagian model, sehingga OBJ bisa bolak-balik melewati Blender, Maya, atau ZBrush dengan strukturnya tetap utuh.

Tampilan model disimpan di luar file .obj. Baris mtllib menyebut file .mtl pendamping, dan baris usemtl menetapkan material pada bidang. File .mtl menyimpan warna seperti Kd (difus) dan menunjuk ke gambar tekstur lewat entri seperti map_Kd wood.png. Jadi, OBJ bertekstur terdiri dari setidaknya tiga file: geometri, pustaka material, dan satu atau beberapa gambar, semuanya dirujuk lewat path relatif. Kirim hanya file .obj, dan penerimanya akan melihat model berwarna abu-abu. Pemisahan ini berguna di alur kerja game dan VFX, tempat seniman mengganti tekstur tanpa menyentuh geometri, sekaligus menjadi penyebab paling umum model unduhan tampak salah.

OBJ punya titik buta yang sama dengan STL soal skala: ia menyimpan angka polos tanpa satuan. Sebagian besar alat pemodelan menulis dalam meter atau sentimeter, sedangkan slicer membaca milimeter, sehingga OBJ dari toko aset game bisa tiba dengan selisih 10 atau 1.000 kali. Untuk mencetak, OBJ tidak menambahkan apa pun yang dipakai slicer selain warna per verteks di beberapa alat, jadi kalau Anda perlu mencetak aset seni, biasanya paling mudah menyimpan teksturnya untuk render dan mengirim mesh yang bersih ke slicer. Untuk arah sebaliknya, mengubah STL menjadi OBJ adalah jalan terpendek dari model cetak ke alur kerja render atau game.

3MF: paket ZIP yang dirancang untuk mencetak

3MF diterbitkan pada 2015 oleh 3MF Consortium, kelompok yang dirintis Microsoft bersama perusahaan dari industri percetakan dan CAD. File .3mf adalah arsip ZIP, format wadah yang sama dengan yang dibahas di ZIP vs RAR vs 7z. Ganti ekstensinya menjadi .zip, dan Anda akan menemukan file XML 3D/3dmodel.model berisi mesh, file content-types, file relasi, dan sering kali thumbnail serta konfigurasi slicer. Setiap model menyatakan satuannya (mikron, milimeter, sentimeter, inci, kaki, atau meter), sehingga masalah skala yang selalu menghantui STL dan OBJ tidak pernah muncul. Warna, material dasar, beberapa objek, dan posisinya di pelat cetak semuanya menjadi bagian dari spesifikasi.

Spesifikasinya juga mewajibkan mesh yang manifold dan orientasinya konsisten: setiap tepi dipakai bersama oleh tepat dua segitiga, dan semuanya menghadap ke luar. Eksportir yang mengikuti aturan tidak bisa menulis geometri terbuka dan saling memotong yang dengan santai dibawa STL. Dukungan di alat-alat masa kini sudah luas. PrusaSlicer, Bambu Studio, OrcaSlicer, dan UltiMaker Cura membaca 3MF; PrusaSlicer dan Bambu Studio menyimpan seluruh proyek sebagai .3mf lengkap dengan pengaturan cetak dan warna hasil pengecatan; dan aplikasi 3D Builder dari Microsoft di Windows bisa membukanya langsung. Titik lemahnya ada pada firmware lama, portal print farm, dan importer CAD yang masih mengharapkan STL; untuk itu, ubah 3MF ke STL dan terima bahwa informasi tambahannya tertinggal.

from ↓ · to →SatuanWarnaTeksturBanyak bagianPengaturan cetakAturan manifold
STL– STL to Satuan: no– STL to Warna: no– STL to Tekstur: no– STL to Banyak bagian: no– STL to Pengaturan cetak: no– STL to Aturan manifold: no
OBJ– OBJ to Satuan: noOBJ to Warna: yesOBJ to Tekstur: yesOBJ to Banyak bagian: yes– OBJ to Pengaturan cetak: no– OBJ to Aturan manifold: no
3MF3MF to Satuan: yes3MF to Warna: yes3MF to Tekstur: yes3MF to Banyak bagian: yes3MF to Pengaturan cetak: yes3MF to Aturan manifold: yes
supported not offeredBaris adalah format, kolom adalah apa yang bisa dibawa oleh file itu sendiri. Warna dan tekstur OBJ membutuhkan file .mtl terpisah dan file gambar; tekstur 3MF berasal dari ekstensi materialnya. Beberapa alat menulis warna ke byte yang tidak terpakai di STL biner, tetapi tidak ada standar yang mengaturnya.
Deretan printer 3D rangka terbuka di atas bangku kayu, yang paling depan memuat beberapa komponen silinder biru di pelat cetaknya
Foto: Unsplash

Mencocokkan format dengan pekerjaan

Format yang tepat bergantung pada ke mana file akan dibawa berikutnya, bukan pada mana yang lebih baru. Jika perhentian berikutnya adalah slicer dan bagiannya satu warna, STL sudah cukup, dan format ini masih dipahami oleh setiap forum, pustaka model, dan jasa cetak. Jika tujuan berikutnya adalah renderer, game engine, atau alat pemodelan milik seniman lain, OBJ mempertahankan UV, normal, dan grup bernama yang dibuang STL, dan bentuk teksnya memudahkan pemeriksaan masalah.

3MF layak dipilih ketika file membawa lebih dari sekadar geometri. Cetakan multiwarna yang dicat di Bambu Studio, satu pelat berisi dua belas bagian yang diatur untuk satu pekerjaan, bagian yang dirancang dalam inci, atau proyek yang ingin Anda buka lagi dengan tinggi layer dan infill yang sama, semuanya membutuhkan 3MF, karena tidak ada format lain di sini yang bisa menyimpan informasi tersebut. Bila tujuannya beragam, simpan versi terlengkap sebagai salinan induk dan ekspor versi yang lebih sederhana darinya dengan konverter model 3D, alih-alih mengonversi berantai.

STL untuk cetakan biasa

Satu bagian, satu warna, diekspor dalam milimeter. Terbuka di setiap slicer, dialog impor CAD, dan formulir unggah jasa cetak.

OBJ untuk model bertekstur

UV, normal, dan grup bernama untuk Blender, Maya, Unity, atau Unreal. Sertakan file .mtl dan gambar teksturnya.

3MF untuk slicer modern

Satuan yang nyata, warna, beberapa objek, dan pengaturan cetak dalam satu ZIP. Format proyek bawaan PrusaSlicer dan Bambu Studio.

Lima penyebab file 3D bermasalah

Sebagian besar cetakan gagal dan impor rusak yang dituduhkan pada format sebenarnya bersumber dari masalah pada mesh, atau dari asumsi program penerima tentang mesh itu. STL paling rentan karena tidak membawa metadata apa pun untuk menangkap kesalahan; OBJ berbagi masalah skala dan file yang hilang; 3MF menghindari sebagian besar masalah itu sejak rancangannya, meski eksportir yang ceroboh tetap bisa menulis mesh yang buruk. Buka baris-baris di bawah untuk melihat seperti apa setiap kegagalan dan dari mana biasanya asalnya.

Mesh non-manifold

Tepi yang hanya dipakai satu segitiga atau oleh tiga segitiga atau lebih, celah di antara permukaan, atau dinding dengan ketebalan nol. Slicer menampilkan layer yang hilang, lubang acak, atau peringatan tentang tepi terbuka. Penyebabnya ada di tahap pemodelan atau ekspor, sering kali karena menggabungkan bagian yang hanya bersentuhan.

Normal terbalik

Sebagian segitiga menghadap ke dalam. Renderer menampilkan bercak hitam atau tembus pandang, dan slicer bisa menganggap area itu sebagai ruang kosong. Perintah hitung ulang normal di Blender, Meshmixer, atau alat perbaikan slicer bisa membereskannya.

Tertukar antara milimeter dan inci

Bagian yang digambar dalam inci tiba 25,4 kali terlalu kecil di slicer yang mengasumsikan milimeter; sentimeter yang terbaca sebagai milimeter menghasilkan kesalahan 10 kali. STL dan OBJ tidak bisa mencatat satuan, jadi Anda yang menetapkannya saat mengekspor atau mengonversi.

File .mtl atau tekstur hilang

OBJ yang muncul abu-abu atau magenta telah kehilangan pustaka material atau gambarnya, atau path di dalam .mtl menunjuk ke folder di komputer seniman aslinya. Simpan semua file dalam satu folder dan zip bersama-sama.

File STL ASCII yang sangat besar

Hasil pindaian detail yang disimpan sebagai STL ASCII bisa melampaui beberapa ratus megabyte, sehingga memperlambat slicer dan menabrak batas unggahan. Mengekspor ulang mesh yang sama sebagai STL biner menyusutkannya menjadi sekitar seperlima tanpa mengubah satu segitiga pun.

Seberapa besar ukuran file tiap format

Ukuran mengikuti struktur. STL biner tetap 50 byte per segitiga, sehingga Anda bisa menghitungnya sebelum mengekspor. STL ASCII mengulang setiap sudut sebagai teks dan biasanya empat sampai enam kali lebih besar daripada versi biner. OBJ menyimpan setiap verteks bersama satu kali dan merujuknya lewat indeks, sehingga untuk mesh tertutup pada umumnya hasilnya lebih kecil daripada STL ASCII dan kira-kira setara STL biner, lebih besar jika juga membawa UV dan normal. 3MF menyimpan XML berindeks lalu mengompresnya di dalam ZIP, yang biasanya menjadikannya yang terkecil dari ketiganya untuk geometri yang sama.

Angka di bawah ini umum untuk mesh tertutup sekitar 500.000 segitiga, misalnya figurin yang detail. Ukuran file sungguhan bervariasi menurut presisi koordinat dan eksportirnya, jadi anggap angka ini sebagai gambaran orde besaran, berguna ketika jasa cetak membatasi ukuran unggahan atau STL yang diekspor dari 3MF ternyata beberapa kali lebih besar.

STL biner (500.000 segitiga × 50 byte)
≈ 25 MB
STL ASCII, mesh yang sama, umumnya
≈ 100–150 MB
OBJ tanpa UV, umumnya
≈ 15–30 MB
3MF setelah kompresi ZIP, umumnya
≈ 5–12 MB

Yang diperbaiki konversi dan yang tidak akan pernah

Konversi membaca segitiga dari satu wadah dan menuliskannya ke wadah lain. Apa pun yang bisa dinyatakan format tujuan akan ikut terbawa; yang tidak bisa akan dibuang. Itulah sebabnya STL ke OBJ tidak kehilangan apa pun pada geometri, 3MF ke STL kehilangan warna, satuan, dan tata letak pelat, sedangkan OBJ ke STL kehilangan tekstur dan nama bagian. Di alat 3D UltKit, keputusan tambahan itu dibuat eksplisit: Satuan model memberi tahu konverter skala yang dipakai sumber, Sumbu atas menangani perbedaan Y-up dan Z-up antara game engine dan slicer, dan Gabungkan menjadi satu mesh menentukan apakah bagian-bagian yang terpisah tetap terpisah.

Yang tidak dilakukan konversi mana pun adalah memperbaiki mesh. Jika STL punya lubang, OBJ yang Anda buat darinya akan punya lubang yang sama, dan eksportir 3MF akan menolaknya atau tetap menuliskannya. Perbaikan adalah langkah terpisah di alat mesh atau fitur perbaikan bawaan slicer, dan paling baik dilakukan sekali, pada file induk, sebelum Anda mengekspor apa pun. Hal yang sama berlaku untuk skala: konversi tidak bisa tahu bahwa sebuah bagian dimaksudkan dalam inci kecuali Anda memberitahunya. Detail pun begitu: STL dengan sedikit poligon akan menjadi OBJ atau 3MF dengan sedikit poligon, jadi ekspor ulang dari model sumber bila kualitas penting.

Yang dilakukan pergantian format

  • Memindahkan segitiga yang sama ke wadah yang diterima program lain
  • Menerapkan satuan yang Anda pilih di Satuan model, memperbaiki kesalahan skala 25,4× atau 10×
  • Memutar model antara Y-up dan Z-up lewat Sumbu atas
  • Menyusutkan STL ASCII dengan menuliskannya dalam bentuk biner
  • Mempertahankan atau menggabungkan bagian yang terpisah, tergantung Gabungkan menjadi satu mesh

Yang dibiarkan persis seperti semula

  • Lubang, tepi terbuka, dan geometri non-manifold
  • Normal yang terbalik atau tidak konsisten
  • Bagian yang saling memotong dan dinding setebal nol
  • Detail yang sudah hilang saat mesh pertama kali diekspor
  • Warna dan tekstur bila format tujuan tidak punya tempat untuknya

Tabel keputusan: STL, OBJ, atau 3MF

Dua format lain selalu muncul setiap kali pertanyaan ini diajukan. STEP (ISO 10303) menyimpan benda padat dan permukaan yang eksak, bukan segitiga, sehingga format inilah yang dipakai ketika sebuah bagian perlu dibuka lagi di Fusion 360, SolidWorks, atau FreeCAD untuk diedit. GLB, bentuk biner dari glTF 2.0 milik Khronos Group, mengemas mesh beserta material dan teksturnya dalam satu file bersatuan meter dan menjadi format untuk menampilkan model di web atau di AR Android.

Untuk tiga format yang dibahas artikel ini, tabel di bawah merangkum pilihan berdasarkan tujuan file. Jika dua baris sama-sama cocok, pilih format yang membawa lebih banyak informasi dan ekspor versi yang lebih sederhana belakangan; beralih dari 3MF ke STL itu mudah, sedangkan membangun ulang warna atau satuan yang hilang adalah pekerjaan manual.

Pilih berdasarkan ke mana file akan dibawa berikutnya
SituasiFormat terbaikAlasan
Bagian satu warna untuk slicer apa punSTL (biner)Didukung di mana saja; slicer tidak butuh yang lain
Mengunggah ke pustaka model atau jasa cetakSTL, ditambah 3MF jika tersediaSTL selalu diterima; 3MF mempertahankan satuan dan warna
Cetakan multiwarna atau multimaterial3MFSatu-satunya format di sini yang menyimpan warna dan material per bagian untuk slicer
Satu pelat berisi beberapa bagian dengan pengaturan cetak3MFMenyimpan posisi objek dan pengaturan slicer dalam satu file
Bagian yang dirancang dalam inci3MFMenyatakan satuannya, jadi tidak ada yang terskala 25,4 kali
Model bertekstur untuk Blender, Unity, atau UnrealOBJ (+ .mtl dan gambar)Mempertahankan UV, normal, dan penetapan material
Pemeriksaan cepat di editor teksOBJ atau STL ASCIITeks biasa yang bisa dibaca baris demi baris
Firmware atau perangkat lunak lama yang hanya mengenal STLSTLBuang informasi tambahan dan kirim mesh-nya saja

Poin penting

  • STL hanya menyimpan segitiga: tanpa satuan, tanpa warna, dan 50 byte per segitiga dalam bentuk binernya.
  • OBJ menambahkan UV, normal, dan grup bernama, tetapi warna dan teksturnya bergantung pada file .mtl terpisah dan file gambar.
  • 3MF adalah ZIP berisi XML yang mencatat satuan, warna, beberapa objek, dan pengaturan cetak, serta mewajibkan mesh tertutup.
  • Pakai STL untuk cetakan satu warna biasa, OBJ untuk model bertekstur di alur kerja seni dan game, dan 3MF kapan pun slicer Anda mendukungnya.
  • Konversi mengganti wadahnya, bukan mesh-nya: perbaiki lubang dan normal di alat mesh, dan tetapkan satuannya sendiri.
BagikanXFacebookWhatsAppTelegram

Pertanyaan yang sering diajukan

Apakah STL akan digantikan oleh 3MF untuk cetak 3D?

Perlahan, untuk alur kerja pencetakan. PrusaSlicer dan Bambu Studio sudah menyimpan proyek sebagai 3MF, tetapi STL tetap menjadi format yang diterima semua alat dan pustaka model, sehingga keduanya akan berdampingan selama bertahun-tahun.

Bisakah STL biner menyimpan warna?

Tidak dengan cara standar. Beberapa program menulis warna ke kolom atribut 2 byte di setiap segitiga, tetapi sebagian besar slicer mengabaikannya, jadi pakai 3MF atau OBJ bila warna penting.

Mengapa file OBJ saya tampil abu-abu setelah diunduh?

File .mtl atau gambar teksturnya tertinggal, atau path di dalam .mtl menunjuk ke folder yang tidak ada di komputer Anda. Taruh file .obj, .mtl, dan gambarnya dalam satu folder, lalu muat ulang modelnya.

Mana yang menghasilkan cetakan lebih akurat, STL ASCII atau STL biner?

Dalam praktiknya tidak ada yang lebih akurat. Keduanya menggambarkan segitiga yang sama; versi biner menyimpan koordinat sebagai float 32-bit dan versi ASCII sebagai teks, dan file biner biasanya beberapa kali lebih kecil.

Bisakah OBJ diubah kembali menjadi STL untuk dicetak?

Bisa. Segitiganya terbawa tanpa perubahan, sedangkan UV, material, dan tekstur dibuang karena STL tidak punya tempat untuknya. Periksa skalanya setelah itu, karena file OBJ dari alat pemodelan sering kali bersatuan meter atau sentimeter.

Format 3D apa yang sebaiknya dipakai untuk berbagi model agar dicetak orang lain?

Sediakan STL untuk kompatibilitas seluas mungkin dan, jika model terdiri dari beberapa bagian, berwarna, atau dirancang dalam inci, tambahkan 3MF di sampingnya agar pengguna slicer modern mendapatkan pengaturan lengkapnya.

Baca juga