UltKit

STL vs OBJ vs 3MF: Format Fail 3D Mana Patut Anda Guna?

Gunakan STL untuk cetakan satu warna yang hanya perlu di-slice, OBJ apabila model membawa tekstur untuk rendering atau enjin permainan, dan 3MF apabila slicer anda menyokongnya dan anda mahu unit, warna serta beberapa bahagian kekal utuh semasa dipindahkan. Format menentukan metadata yang dibawa bersama mesh; format tidak pernah menentukan sama ada mesh itu sendiri sempurna.

Jonas WeberJonas WeberEditor prestasi web
Dikemas kini 12 min bacaan
Pencetak 3D meja dalam kepungan lutsinar di atas meja putih, dengan komputer riba yang memaparkan model 3D dan bahagian cetakan berwarna-warni termasuk peta rupa bumi dan gear merah

STL: senarai segi tiga dan tiada yang lain

STL dicipta pada 1987 untuk mesin stereolitografi pertama 3D Systems, dan reka bentuknya mencerminkan asal-usul itu. Fail ialah senarai segi tiga yang rata, setiap satu diterangkan dengan normal faset dan tiga titik sudut. Tiada jadual bucu bersama, jadi satu sudut yang disentuh enam segi tiga ditulis enam kali. Tiada medan unit juga: koordinat 25 boleh bermaksud milimeter, inci atau meter, dan hampir semua slicer menganggapnya milimeter. Warna, tekstur dan nama bahagian tiada tempat dalam format asas, dan itulah sebabnya setiap slicer, perisian CAD dan perkhidmatan cetakan masih membacanya.

STL mempunyai dua pengekodan. STL ASCII menulis segalanya dalam teks, dengan baris seperti facet normal, outer loop dan vertex 12.5 0 3.2, jadi anda boleh membukanya dalam editor teks dan membaca nombornya. STL binari bermula dengan pengepala 80 bait dan kiraan segi tiga 4 bait, kemudian menyimpan setiap segi tiga sebagai dua belas nombor titik apung 4 bait ditambah medan atribut 2 bait: tepat 50 bait bagi setiap segi tiga. Peraturan ini memudahkan ramalan saiz. Model sejuta segi tiga kira-kira 50 MB dalam bentuk binari, dan versi ASCII bagi mesh yang sama biasanya empat hingga enam kali lebih besar kerana setiap digit menjadi satu aksara.

Kesederhanaan ini kekuatan sekali perangkap. STL tidak dapat memberitahu sama ada ia dimaksudkan sebagai satu bahagian atau tiga, sama ada ia dieksport dalam inci, atau sama ada segi tiganya benar-benar membentuk pepejal. Slicer menekanya daripada koordinat mentah, dan apabila tekaan salah, anda mendapat bahagian 25.4 kali lebih kecil atau dinding yang hilang. Bagi bahagian satu warna yang anda reka sendiri dan eksport dalam milimeter, semua itu tidak menjadi masalah, dan STL kekal sebagai format yang paling kurang berkemungkinan ditolak.

OBJ: poligon, UV dan fail bahan sampingan

OBJ berasal daripada Wavefront Technologies, yang perisian Advanced Visualizer-nya menggunakannya pada akhir 1980-an, dan ia tersebar sepanjang 1990-an sebagai format teks biasa yang boleh dipertukarkan oleh hampir semua program 3D. Berbeza daripada STL, ia menyimpan senarai bucu dan membina muka daripada indeks, jadi sudut yang dikongsi disimpan sekali sahaja, dan muka boleh berupa segi tiga, segi empat atau poligon yang lebih besar. Baris yang bermula dengan v menyimpan kedudukan, vt koordinat tekstur (UV), vn normal dan f muka. Kumpulan (g) dan objek (o) menamakan bahagian, jadi OBJ kekal dengan strukturnya apabila dipindahkan melalui Blender, Maya atau ZBrush.

Rupa disimpan di luar fail .obj. Baris mtllib menamakan fail .mtl pelengkap, dan baris usemtl menetapkan bahan kepada muka. Fail .mtl menyimpan warna seperti Kd (resap) dan merujuk imej tekstur dengan entri seperti map_Kd wood.png. Maka OBJ bertekstur sekurang-kurangnya tiga fail: geometri, pustaka bahan dan satu atau lebih imej, semuanya dirujuk melalui laluan relatif. Jika anda hanya menghantar .obj, penerima melihat model kelabu. Pengasingan itu berguna dalam saluran paip permainan dan VFX yang artisnya menukar tekstur tanpa menyentuh geometri, dan ia sebab paling biasa model yang dimuat turun kelihatan salah.

OBJ berkongsi kelemahan STL pada skala: ia menyimpan nombor kosong tanpa unit. Kebanyakan alat pemodelan menulis meter atau sentimeter, sedangkan slicer membaca milimeter, jadi OBJ daripada kedai aset permainan boleh tiba dengan skala tersasar 10 atau 1,000 kali. Untuk mencetak, OBJ tidak menambah apa-apa yang digunakan slicer kecuali warna per bucu dalam beberapa alat, jadi jika anda perlu mencetak aset seni, biasanya paling mudah menyimpan tekstur untuk rendering dan menghantar mesh bersih kepada slicer. Sebaliknya, menukar STL ke OBJ ialah jalan paling singkat daripada model cetakan ke aliran kerja rendering atau permainan.

3MF: pakej ZIP yang dibina untuk cetakan

3MF diterbitkan pada 2015 oleh 3MF Consortium, kumpulan yang dimulakan oleh Microsoft bersama syarikat dalam industri percetakan dan CAD. Fail .3mf ialah arkib ZIP, format bekas yang sama dibincangkan dalam ZIP vs RAR vs 7z. Namakan semula kepada .zip dan anda akan menemui fail XML 3D/3dmodel.model dengan mesh, fail jenis kandungan, fail perhubungan dan selalunya lakaran kecil serta konfigurasi slicer. Setiap model mengisytiharkan unitnya (mikron, milimeter, sentimeter, inci, kaki atau meter), jadi masalah skala yang menghantui STL dan OBJ tidak berlaku. Warna, bahan asas, beberapa objek dan penempatannya pada plat binaan semuanya sebahagian daripada spesifikasi.

Spesifikasi itu juga memerlukan mesh bersifat manifold dan berorientasi konsisten: setiap tepi dikongsi tepat dua segi tiga, semuanya menghadap ke luar. Pengeksport yang mengikut peraturan tidak dapat menulis geometri terbuka dan bersilang sendiri yang boleh dibawa oleh STL. Sokongannya luas dalam alat semasa. PrusaSlicer, Bambu Studio, OrcaSlicer dan UltiMaker Cura membaca 3MF, PrusaSlicer dan Bambu Studio menyimpan keseluruhan projek sebagai .3mf dengan tetapan cetakan dan warna yang dilukis di dalamnya, dan aplikasi 3D Builder Microsoft di Windows membukanya terus. Titik lemahnya ialah perisian tegar lama, portal ladang cetakan dan pengimport CAD yang masih mengharapkan STL; untuk itu, tukar 3MF ke STL dan terima bahawa tambahan itu tertinggal.

from ↓ · to →UnitsColorTexturesBerbilang bahagianTetapan cetakanPeraturan manifold
STL– STL to Units: no– STL to Color: no– STL to Textures: no– STL to Berbilang bahagian: no– STL to Tetapan cetakan: no– STL to Peraturan manifold: no
OBJ– OBJ to Units: noOBJ to Color: yesOBJ to Textures: yesOBJ to Berbilang bahagian: yes– OBJ to Tetapan cetakan: no– OBJ to Peraturan manifold: no
3MF3MF to Units: yes3MF to Color: yes3MF to Textures: yes3MF to Berbilang bahagian: yes3MF to Tetapan cetakan: yes3MF to Peraturan manifold: yes
supported not offeredBaris ialah format, lajur ialah apa yang boleh dibawa oleh fail itu sendiri. Warna dan tekstur OBJ memerlukan fail .mtl dan imej berasingan; tekstur 3MF datang daripada sambungan bahannya. Beberapa alat menulis warna ke dalam bait tidak terpakai STL binari, tetapi tiada piawaian yang meliputinya.
Sebaris pencetak 3D berbingkai terbuka di atas meja kayu, yang paling hampir mempunyai beberapa bahagian silinder biru pada plat binaannya
Foto: Unsplash

Memadankan format dengan tugasan

Format yang sesuai bergantung pada destinasi seterusnya fail itu, bukan pada yang mana lebih baharu. Jika destinasinya slicer dan bahagian itu satu warna, STL sudah memadai, dan ia masih format yang difahami setiap forum, pustaka model dan perkhidmatan cetakan. Jika destinasinya perender, enjin permainan atau alat pemodelan artis lain, OBJ mengekalkan UV, normal dan kumpulan bernama yang dibuang STL, dan bentuk tekstnya memudahkan pemeriksaan masalah.

3MF berguna apabila fail membawa lebih daripada geometri. Cetakan berbilang warna yang dilukis dalam Bambu Studio, plat dua belas bahagian yang disusun untuk satu kerja, bahagian yang direka dalam inci, atau projek yang ingin dibuka semula dengan ketinggian lapisan dan isian yang sama, semuanya memerlukan 3MF, kerana tiada format lain di sini boleh menyimpan maklumat itu. Untuk beberapa destinasi, simpan versi terkaya sebagai salinan induk dan eksport yang lebih ringkas daripadanya dengan penukar model 3D dan bukannya menyambung beberapa penukaran.

STL untuk cetakan biasa

Satu bahagian, satu warna, dieksport dalam milimeter. Dibuka dalam setiap slicer, dialog import CAD dan borang muat naik perkhidmatan cetakan.

OBJ untuk model bertekstur

UV, normal dan kumpulan bernama untuk Blender, Maya, Unity atau Unreal. Sertakan fail .mtl dan imej tekstur bersamanya.

3MF untuk slicer moden

Unit sebenar, warna, beberapa objek dan tetapan cetakan dalam satu ZIP. Format projek asli PrusaSlicer dan Bambu Studio.

Lima punca fail 3D bermasalah

Kebanyakan cetakan gagal dan import rosak yang disalahkan pada format sebenarnya masalah pada mesh, atau pada andaian program penerima tentangnya. STL paling terdedah kerana ia tidak membawa metadata untuk menangkap kesilapan; OBJ berkongsi masalah skala dan fail yang hilang; 3MF mengelakkan kebanyakannya melalui reka bentuk, walaupun pengeksport yang cuai masih boleh menulis mesh yang buruk. Buka baris di bawah untuk melihat rupa setiap kegagalan dan puncanya.

Mesh bukan manifold

Tepi yang dikongsi satu segi tiga atau tiga atau lebih, jurang antara permukaan, atau dinding dengan ketebalan sifar. Slicer menunjukkan lapisan hilang, lubang rawak atau amaran tentang tepi terbuka. Puncanya pada pemodelan atau eksport, selalunya daripada menggabungkan bahagian yang hanya bersentuhan.

Normal terbalik

Sesetengah segi tiga menghadap ke dalam. Perender menunjukkan tompok hitam atau lut sinar, dan slicer mungkin menganggap kawasan itu sebagai ruang kosong. Arahan kira semula normal dalam Blender, Meshmixer atau alat pembaikan slicer boleh membetulkannya.

Kekeliruan milimeter dan inci

Bahagian yang dilukis dalam inci tiba 25.4 kali lebih kecil dalam slicer yang menganggap milimeter; sentimeter yang dibaca sebagai milimeter memberi ralat 10 kali. STL dan OBJ tidak dapat merekod unit, jadi anda menetapkannya semasa mengeksport atau menukar.

Fail .mtl atau tekstur hilang

OBJ yang dimuatkan berwarna kelabu atau magenta telah kehilangan pustaka bahan atau imejnya, atau laluan dalam .mtl menuju ke folder pada komputer artis asal. Simpan semua fail dalam satu folder dan zipkan bersama.

Fail STL ASCII yang sangat besar

Imbasan terperinci yang disimpan sebagai STL ASCII boleh melebihi beberapa ratus megabait, yang melambatkan slicer dan mencapai had muat naik. Mengeksport semula mesh yang sama sebagai STL binari mengecilkannya kepada kira-kira satu perlima tanpa mengubah satu segi tiga pun.

Saiz fail biasa bagi setiap format

Saiz mengikut struktur. STL binari tetap pada 50 bait bagi setiap segi tiga, jadi anda boleh mengiranya sebelum eksport. STL ASCII mengulang setiap sudut sebagai teks dan biasanya empat hingga enam kali lebih besar daripada binari. OBJ menyimpan setiap bucu bersama sekali dan merujuknya melalui indeks, jadi bagi mesh tertutup biasa ia lebih kecil daripada STL ASCII dan lebih kurang dalam julat STL binari, lebih besar jika ia juga membawa UV dan normal. 3MF menyimpan XML berindeks dan memampatkannya dalam ZIP, yang biasanya menjadikannya paling kecil daripada ketiga-tiganya untuk geometri yang sama.

Angka di bawah tipikal untuk mesh tertutup sekitar 500,000 segi tiga, seperti patung kecil yang terperinci. Fail sebenar berbeza mengikut ketepatan koordinat dan pengeksport, jadi anggaplah ia sebagai tertib magnitud, berguna apabila perkhidmatan cetakan menghadkan muat naik atau STL yang dieksport daripada 3MF menjadi beberapa kali lebih besar.

STL binari (500,000 segi tiga × 50 bait)
≈ 25 MB
STL ASCII, mesh sama, tipikal
≈ 100–150 MB
OBJ tanpa UV, tipikal
≈ 15–30 MB
3MF selepas pemampatan ZIP, tipikal
≈ 5–12 MB

Apa yang dibaiki oleh penukaran dan apa yang tidak akan pernah dibaikinya

Penukaran membaca segi tiga daripada satu bekas dan menulisnya ke dalam yang lain. Apa-apa yang boleh dinyatakan oleh format sasaran ikut serta; yang tidak boleh akan digugurkan. Itulah sebabnya STL ke OBJ tidak menjejaskan geometri, 3MF ke STL kehilangan warna, unit dan susun atur plat, dan OBJ ke STL kehilangan tekstur dan nama bahagian. Dalam alat 3D di UltKit, keputusan tambahan itu jelas: Unit model memberitahu penukar skala yang digunakan sumber, Paksi atas menangani perbezaan Y-atas dengan Z-atas antara enjin permainan dan slicer, dan Gabung menjadi satu mesh menentukan sama ada bahagian berasingan kekal berasingan.

Apa yang tidak dilakukan oleh mana-mana penukaran ialah membaiki mesh. Jika STL mempunyai lubang, OBJ yang anda hasilkan daripadanya mempunyai lubang yang sama, dan pengeksport 3MF sama ada menolaknya atau menulisnya juga. Pembaikan ialah langkah berasingan dalam alat mesh atau pembaik terbina dalam slicer, dan paling baik dilakukan sekali, dalam fail induk anda, sebelum mengeksport apa-apa yang lain. Begitu juga skala: penukaran tidak tahu bahagian itu dimaksudkan dalam inci melainkan anda memberitahunya. Perincian juga serupa: STL poligon rendah menjadi OBJ atau 3MF poligon rendah, jadi eksport semula daripada model sumber apabila kualiti penting.

Apa yang dilakukan oleh pertukaran format

  • Memindahkan segi tiga yang sama ke dalam bekas yang diterima program lain
  • Menggunakan unit yang anda pilih di bawah Unit model, membetulkan ralat skala 25.4× atau 10×
  • Memutar model antara Y-atas dan Z-atas dengan Paksi atas
  • Mengecilkan STL ASCII dengan menulis binari sebaliknya
  • Mengekalkan atau menggabungkan bahagian berasingan, bergantung pada Gabung menjadi satu mesh

Apa yang ditinggalkan seperti asal

  • Lubang, tepi terbuka dan geometri bukan manifold
  • Normal terbalik atau tidak konsisten
  • Bahagian bersilang sendiri dan dinding berketebalan sifar
  • Perincian yang hilang semasa mesh mula-mula dieksport
  • Warna dan tekstur apabila format sasaran tiada tempat untuknya

Jadual keputusan: STL, OBJ atau 3MF

Dua format lain muncul setiap kali soalan ini ditanya. STEP (ISO 10303) menyimpan pepejal dan permukaan tepat dan bukannya segi tiga, jadi ia format yang sesuai apabila bahagian perlu dimasukkan semula ke Fusion 360, SolidWorks atau FreeCAD untuk disunting. GLB, bentuk binari glTF 2.0 daripada Khronos Group, membungkus mesh bersama bahan dan teksturnya dalam satu fail berunit meter dan ialah format untuk memaparkan model di web atau dalam AR Android.

Bagi tiga format yang diliputi artikel ini, jadual di bawah meringkaskan pilihan mengikut destinasi. Jika dua baris sesuai, pilih format yang membawa lebih banyak maklumat dan eksport yang lebih ringkas kemudian; daripada 3MF ke STL mudah, manakala membina semula warna atau unit yang hilang ialah kerja manual.

Pilih mengikut destinasi seterusnya fail
SituasiFormat terbaikSebab
Bahagian satu warna untuk mana-mana slicerSTL (binari)Sokongan sejagat; slicer tidak memerlukan apa-apa lagi
Memuat naik ke pustaka model atau perkhidmatan cetakanSTL, serta 3MF jika ditawarkanSTL sentiasa diterima; 3MF mengekalkan unit dan warna
Cetakan berbilang warna atau berbilang bahan3MFSatu-satunya format di sini yang menyimpan warna dan bahan per bahagian untuk slicer
Plat beberapa bahagian dengan tetapan cetakan3MFMenyimpan penempatan objek dan tetapan slicer dalam satu fail
Bahagian yang direka dalam inci3MFMengisytiharkan unit, jadi tiada apa-apa diskala dengan 25.4
Model bertekstur untuk Blender, Unity atau UnrealOBJ (+ .mtl dan imej)Mengekalkan UV, normal dan penetapan bahan
Semakan pantas dalam editor teksOBJ atau STL ASCIITeks biasa yang boleh dibaca baris demi baris
Perisian tegar atau perisian lama yang hanya menyenaraikan STLSTLBuang tambahan dan hantar mesh sahaja

Perkara penting

  • STL hanya menyimpan segi tiga: tanpa unit, tanpa warna, dan 50 bait bagi setiap segi tiga dalam bentuk binari.
  • OBJ menambah UV, normal dan kumpulan bernama, tetapi warna dan teksturnya bergantung pada fail .mtl dan fail imej yang berasingan.
  • 3MF ialah ZIP berisi XML yang merekod unit, warna, beberapa objek dan tetapan cetakan, dan memerlukan mesh tertutup.
  • Gunakan STL untuk cetakan satu warna biasa, OBJ untuk model bertekstur dalam saluran paip seni dan permainan, dan 3MF apabila slicer anda menyokongnya.
  • Penukaran mengubah bekas, bukan mesh: baiki lubang dan normal dalam alat mesh, dan tetapkan unit sendiri.
KongsiXFacebookWhatsAppTelegram

Soalan lazim

Adakah STL sedang digantikan oleh 3MF?

Perlahan-lahan, untuk aliran kerja percetakan. PrusaSlicer dan Bambu Studio sudah menyimpan projek sebagai 3MF, tetapi STL kekal sebagai format yang diterima oleh setiap alat dan perpustakaan model, jadi kedua-duanya akan wujud bersama selama bertahun-tahun.

Bolehkah STL binari menyimpan warna?

Tidak mengikut cara yang piawai. Segelintir program menulis warna ke dalam medan atribut 2 bait bagi setiap segi tiga, tetapi kebanyakan slicer mengabaikannya, jadi gunakan 3MF atau OBJ apabila warna penting.

Mengapa OBJ saya kelihatan kelabu selepas dimuat turun?

Fail .mtl atau imej tekstur tertinggal, atau laluan di dalam fail .mtl menunjuk ke folder yang tidak wujud pada komputer anda. Letakkan fail .obj, .mtl dan imej dalam satu folder, kemudian muatkan model sekali lagi.

STL ASCII atau binari, yang mana menghasilkan cetakan lebih tepat?

Kedua-duanya tidak mencetak dengan lebih tepat dalam praktiknya. Kedua-duanya menerangkan segi tiga yang sama; binari menyimpan koordinat sebagai float 32-bit dan ASCII sebagai teks, dan fail binari biasanya beberapa kali ganda lebih kecil.

Bolehkah saya tukar OBJ kembali ke STL untuk dicetak?

Ya. Segi tiga dibawa tanpa perubahan, manakala UV, bahan dan tekstur digugurkan kerana STL tidak mempunyai ruang untuknya. Semak skala selepas itu, kerana fail OBJ daripada alat pemodelan selalunya dalam unit meter atau sentimeter.

Format mana patut saya guna untuk berkongsi model supaya orang lain boleh mencetaknya?

Sediakan STL untuk keserasian terluas dan, jika model mempunyai beberapa bahagian, warna atau direka dalam inci, tambahkan 3MF di sebelahnya supaya mereka yang menggunakan slicer moden mendapat keseluruhan tetapan.

Teruskan membaca