UltKit

STL vs OBJ vs 3MF: watter 3D-lêerformaat moet u gebruik?

Gebruik STL vir 'n enkelkleurdruk wat u net hoef te sny, OBJ wanneer die model teksture vir lewering of 'n speletjie-enjin dra, en 3MF wanneer u snyprogram dit ondersteun en u wil hê dat eenhede, kleure en verskeie onderdele die oordrag moet oorleef. Die formaat bepaal watter metadata saam met die maas reis; dit bepaal nooit of die maas self in orde is nie.

Jonas WeberJonas WeberRedakteur: webwerkverrigting
Opgedateer 12 min lees
'n 3D-drukker in 'n deursigtige omhulsel op 'n wit lessenaar, met 'n skootrekenaar wat 'n 3D-model wys en kleurvolle gedrukte onderdele, onder meer 'n terreinkaart en 'n rooi rat

STL: 'n lys driehoeke en niks anders nie

STL is in 1987 geskryf vir 3D Systems se eerste stereolitografiemasjiene, en die ontwerp wys dit. 'n Lêer is 'n plat lys driehoeke, elk beskryf deur 'n vlaknormaal en drie hoekpunte. Daar is geen gedeelde hoekpunttabel nie, so 'n hoek wat aan ses driehoeke raak, word ses keer geskryf. Daar is ook geen eenheidveld nie: 'n koördinaat van 25 kan millimeter, duim of meter beteken, en byna elke slicer raai millimeter. Kleur, tekstuur en onderdeelname het geen plek in die kernformaat nie, en juis daarom lees elke slicer, CAD-pakket en drukdiens dit nog.

STL kom in twee enkoderings. ASCII-STL skryf alles in teks uit, met reëls soos facet normal, outer loop en vertex 12.5 0 3.2, sodat jy dit in 'n teksredigeerder kan oopmaak en die getalle lees. Binêre STL begin met 'n 80-greep-kopstuk en 'n 4-greep-driehoektelling, en stoor dan elke driehoek as twaalf 4-greep-dryfpunte plus 'n 2-greep-kenmerkveld: presies 50 grepe per driehoek. Daardie reël maak die grootte maklik om te voorspel. 'n Model met 'n miljoen driehoeke is ongeveer 50 MB as binêr, en die ASCII-weergawe van dieselfde maas is gewoonlik vier tot ses keer groter omdat elke syfer 'n karakter word.

Die eenvoud is sowel die sterkpunt as die slaggat. 'n STL kan nie sê of dit een onderdeel of drie moes wees nie, of dit in duim uitgevoer is nie, of of die driehoeke werklik 'n soliede liggaam omsluit nie. Die slicer werk dit uit rou koördinate uit, en as hy verkeerd raai, kry jy 'n onderdeel wat 25,4 keer te klein is of 'n ontbrekende wand. Vir 'n eenkleur-onderdeel wat jy self ontwerp en in millimeter uitgevoer het, maak niks hiervan saak nie, en STL bly die formaat wat die minste geneig is om verwerp te word.

OBJ: veelhoeke, UV's en 'n aparte materiaallêer

OBJ kom van Wavefront Technologies, wie se Advanced Visualizer-sagteware dit in die laat 1980's gebruik het, en dit het in die 1990's versprei as die platteksformaat wat byna elke 3D-program kon uitruil. Anders as STL hou dit 'n hoekpuntlys en bou vlakke uit indekse, sodat 'n gedeelde hoek een keer gestoor word, en vlakke kan driehoeke, vierhoeke of groter veelhoeke wees. Reëls wat met v begin, bevat posisies, vt tekstuurkoördinate (UV's), vn normale en f die vlakke. Groepe (g) en voorwerpe (o) gee name aan die dele, sodat OBJ 'n heen-en-weer-reis deur Blender, Maya of ZBrush met sy struktuur ongeskonde oorleef.

Voorkoms bly buite die .obj-lêer. 'n mtllib-reël noem 'n begeleidende .mtl-lêer, en usemtl-reëls ken materiale aan vlakke toe. Die .mtl-lêer stoor kleure soos Kd (diffuus) en verwys na tekstuurbeelde met inskrywings soos map_Kd wood.png. 'n Getekstureerde OBJ is dus minstens drie lêers: die meetkunde, die materiaalbiblioteek en een of meer beelde, almal met relatiewe paaie. Stuur jy net die .obj, sien die ontvanger 'n grys model. Daardie skeiding is nuttig in spel- en VFX-werkvloeie waar kunstenaars teksture omruil sonder om die meetkunde aan te raak, en dit is die algemeenste rede waarom 'n afgelaaide model verkeerd lyk.

OBJ deel STL se blinde kol oor skaal: dit stoor kaal getalle sonder eenheid. Die meeste modelleergereedskap skryf meter of sentimeter, terwyl slicers millimeter lees, so 'n OBJ uit 'n speletjie-batewinkel kan 10 of 1 000 keer skeef aankom. Vir druk voeg OBJ niks by wat 'n slicer gebruik nie, behalwe kleur per hoekpunt in 'n paar programme, so as jy 'n kunsbate wil druk, is dit gewoonlik die eenvoudigste om die teksture vir weergawe te hou en die slicer 'n skoon maas te gee. Andersom is om 'n STL na 'n OBJ om te skakel die kortste pad van 'n drukmodel na 'n weergawe- of spelwerkvloei.

3MF: 'n ZIP-pakket gebou vir drukwerk

3MF is in 2015 gepubliseer deur die 3MF Consortium, 'n groep wat deur Microsoft begin is saam met maatskappye uit die druk- en CAD-bedryf. 'n .3mf-lêer is 'n ZIP-argief, dieselfde houerformaat wat in ZIP vs RAR vs 7z bespreek word. Hernoem een na .zip en jy vind 'n 3D/3dmodel.model-XML-lêer met die maas, 'n inhoudstipe-lêer, verhoudingslêers en dikwels duimnaelbeelde en slicer-opstelling. Elke model verklaar sy eenheid (mikron, millimeter, sentimeter, duim, voet of meter), so die skaalprobleem wat STL en OBJ pla, kom eenvoudig nie voor nie. Kleure, basismateriale, verskeie voorwerpe en hul plasing op die drukplaat is almal deel van die spesifikasie.

Die spesifikasie vereis ook dat maasse veelvoudig (manifold) en konsekwent georiënteer is: elke rand word deur presies twee driehoeke gedeel, almal na buite gerig. Uitvoerders wat die reëls volg, kan nie die oop, self-kruisende meetkunde skryf wat 'n STL gewillig dra nie. Ondersteuning is breed by huidige programme. PrusaSlicer, Bambu Studio, OrcaSlicer en UltiMaker Cura lees 3MF, PrusaSlicer en Bambu Studio stoor hul hele projek as 'n .3mf met drukinstellings en geverfde kleure binne, en Microsoft se 3D Builder-toepassing op Windows maak dit direk oop. Die swak plek is ouer firmware, drukplaas-portale en CAD-invoerders wat steeds STL verwag; vir daardie gevalle skakel die 3MF na STL om en aanvaar dat die ekstras agterbly.

from ↓ · to →UnitsColorTexturesVerskeie deleDrukinstellingsManifold-reël
STL– STL to Units: no– STL to Color: no– STL to Textures: no– STL to Verskeie dele: no– STL to Drukinstellings: no– STL to Manifold-reël: no
OBJ– OBJ to Units: noOBJ to Color: yesOBJ to Textures: yesOBJ to Verskeie dele: yes– OBJ to Drukinstellings: no– OBJ to Manifold-reël: no
3MF3MF to Units: yes3MF to Color: yes3MF to Textures: yes3MF to Verskeie dele: yes3MF to Drukinstellings: yes3MF to Manifold-reël: yes
supported not offeredRye is formate, kolomme is wat die lêer self kan dra. OBJ-kleur en -teksture het die aparte .mtl-lêer en beelde nodig; 3MF-teksture kom uit sy materiaaluitbreiding. 'n Paar programme skryf kleur in die ongebruikte grepe van binêre STL, maar geen standaard dek dit nie.
'n Ry oopraam-3D-drukkers op houtbanke, die naaste een met verskeie blou silindriese dele op sy drukplaat
Foto: Unsplash

Die formaat by die taak pas

Die regte formaat hang af van waarheen die lêer volgende gaan, nie van watter een nuwer is nie. As die volgende stop 'n slicer is en die onderdeel een kleur is, is STL goed, en dit is steeds die formaat wat elke forum, modelbiblioteek en drukdiens verstaan. As die volgende stop 'n weergawer, 'n spelenjin of 'n ander kunstenaar se modelleergereedskap is, behou OBJ die UV's, normale en benoemde groepe wat STL weggooi, en sy teksvorm maak probleme maklik om na te gaan.

3MF verdien sy plek wanneer die lêer meer as meetkunde dra. 'n Veelkleurdruk in Bambu Studio geverf, 'n plaat van twaalf dele vir een taak gerangskik, 'n onderdeel in duim ontwerp, of 'n projek wat jy met dieselfde laaghoogte en vulling weer wil oopmaak, het almal 3MF nodig, omdat geen ander formaat hier daardie inligting kan hou nie. Met verskeie bestemmings: hou die rykste weergawe as jou meesterkopie en voer eenvoudiger weergawes daaruit uit met 'n 3D-model-omskakelaar in plaas van omskakelings aanmekaar te ketting.

STL vir eenvoudige drukwerk

Een onderdeel, een kleur, in millimeter uitgevoer. Maak oop in elke slicer, CAD-invoerdialoog en drukdiens-oplaaivorm.

OBJ vir getekstureerde modelle

UV's, normale en benoemde groepe vir Blender, Maya, Unity of Unreal. Stuur die .mtl-lêer en tekstuurbeelde saam.

3MF vir moderne slicers

Regte eenhede, kleure, verskeie voorwerpe en drukinstellings in een ZIP. Eie projekformaat van PrusaSlicer en Bambu Studio.

Vyf maniere waarop 'n 3D-lêer skeefloop

Die meeste mislukte drukwerk en gebreekte invoere wat op die formaat blameer word, is eintlik probleme in die maas, of in wat die ontvangende program daaroor aangeneem het. STL is die mees blootgestelde omdat dit geen metadata dra om foute te vang nie; OBJ deel die skaal- en ontbrekende-lêer-probleme; 3MF vermy die meeste daarvan deur ontwerp, hoewel 'n onoplettende uitvoerder steeds 'n slegte maas kan skryf. Maak die rye hieronder oop om te sien hoe elke fout lyk en waar dit gewoonlik vandaan kom.

Nie-manifold-maas

Rande wat deur een driehoek of deur drie of meer gedeel word, gapings tussen oppervlakke, of mure met nul dikte. Die slicer wys ontbrekende lae, ewekansige gate of 'n waarskuwing oor oop rande. Die oorsaak lê in die modellering of uitvoer, dikwels deur dele saam te voeg wat net raak.

Omgekeerde normale

Sommige driehoeke wys na binne. Weergawers wys swart of deursigtige kolle, en slicers kan die gebied as leë ruimte hanteer. 'n Herbereken-normale-opdrag in Blender, Meshmixer of die slicer se herstelgereedskap los dit op.

Millimeter- en duim-verwarring

'n Onderdeel in duim geteken kom 25,4 keer te klein aan in 'n slicer wat millimeter aanneem; sentimeter wat as millimeter gelees word, gee 'n 10-voudige fout. STL en OBJ kan nie die eenheid aanteken nie, so jy stel dit by uitvoer of omskakeling.

Ontbrekende .mtl-lêer of teksture

'n OBJ wat grys of magenta laai, het sy materiaalbiblioteek of beelde verloor, of die paaie in die .mtl wys na 'n gids op die oorspronklike kunstenaar se rekenaar. Hou alle lêers in een gids en zip hulle saam.

Reuse ASCII-STL-lêers

'n Gedetailleerde skandering as ASCII-STL gestoor kan etlike honderde megagrepe oorskry, wat slicers vertraag en oplaaigrense tref. Om dieselfde maas as binêre STL weer uit te voer, krimp dit tot ongeveer 'n vyfde sonder om 'n enkele driehoek te verander.

Hoe groot elke formaat gewoonlik word

Grootte volg uit struktuur. Binêre STL is vas op 50 grepe per driehoek, so jy kan dit voor uitvoer bereken. ASCII-STL herhaal elke hoek as teks en beland gewoonlik vier tot ses keer bo binêr. OBJ stoor elke gedeelde hoekpunt een keer en verwys daarna met 'n indeks, so vir 'n tipiese geslote maas is dit kleiner as ASCII-STL en ongeveer in die reeks van binêre STL, groter as dit ook UV's en normale dra. 3MF stoor geïndekseerde XML en pers dit dan binne die ZIP saam, wat dit gewoonlik die kleinste van die drie maak vir dieselfde meetkunde.

Die syfers hieronder is tipies vir 'n geslote maas van ongeveer 500 000 driehoeke, soos 'n gedetailleerde beeldjie. Werklike lêers wissel met koördinaatpresisie en uitvoerder, so beskou hulle as ordegroottes, nuttig wanneer 'n drukdiens oplaaie beperk of 'n STL wat uit 'n 3MF uitgevoer is etlike kere groter uitkom.

Binêre STL (500 000 driehoeke × 50 grepe)
≈ 25 MB
ASCII-STL, dieselfde maas, tipies
≈ 100–150 MB
OBJ sonder UV's, tipies
≈ 15–30 MB
3MF ná ZIP-kompressie, tipies
≈ 5–12 MB

Wat omskakeling regmaak en wat dit nooit sal regmaak nie

'n Omskakeling lees die driehoeke uit een houer en skryf hulle in 'n ander. Alles wat die teikenformaat kan uitdruk, kom saam; alles wat dit nie kan nie, word weggelaat. Daarom is STL na OBJ verliesloos vir meetkunde, verloor 3MF na STL kleure, eenhede en plaatuitleg, en verloor OBJ na STL teksture en onderdeelname. In die 3D-gereedskap op UltKit is die ekstra besluite eksplisiet: Modeleenhede sê vir die omskakelaar watter skaal die bron gebruik, Op-as hanteer die Y-op-teenoor-Z-op-verskil tussen spelenjins en slicers, en Voeg saam in een maas bepaal of aparte dele apart bly.

Wat geen omskakeling doen nie, is om 'n maas te herstel. As 'n STL 'n gat het, het die OBJ wat jy daaruit maak dieselfde gat, en 'n 3MF-uitvoerder sal dit óf weier óf tog skryf. Herstel is 'n aparte stap in 'n maasgereedskap of die slicer se ingeboude regmaker, en dit word die beste een keer in jou meesterlêer gedoen voordat jy enigiets anders uitvoer. Dieselfde geld vir skaal: omskakeling kan nie weet dat 'n onderdeel in duim bedoel was nie tensy jy dit sê. Detail werk dieselfde: 'n lae-veelhoek-STL word 'n lae-veelhoek-OBJ of -3MF, so voer weer uit vanaf die bronmodel wanneer kwaliteit saak maak.

Wat 'n formaatverandering doen

  • Skuif dieselfde driehoeke na 'n houer wat 'n ander program aanvaar
  • Pas die eenheid toe wat jy onder Modeleenhede kies en herstel 'n 25,4×- of 10×-skaalfout
  • Draai die model tussen Y-op en Z-op met Op-as
  • Krimp 'n ASCII-STL deur eerder binêr te skryf
  • Hou aparte dele apart of voeg hulle saam, volgens Voeg saam in een maas

Wat dit presies soos dit was laat

  • Gate, oop rande en nie-manifold-meetkunde
  • Omgekeerde of teenstrydige normale
  • Self-kruisende dele en mure met nul dikte
  • Detail wat verlore gegaan het toe die maas die eerste keer uitgevoer is
  • Kleure en teksture wanneer die teikenformaat geen plek daarvoor het nie

Besluitnemingstabel: STL, OBJ of 3MF

Twee ander formate kom op wanneer hierdie vraag gevra word. STEP (ISO 10303) stoor presiese soliede liggame en oppervlakke eerder as driehoeke, so dit is die formaat wanneer 'n onderdeel terug moet na Fusion 360, SolidWorks of FreeCAD vir wysiging. GLB, die binêre vorm van die Khronos Group se glTF 2.0, pak 'n maas met sy materiale en teksture in een lêer in meter en is die formaat om 'n model op die web of in Android-AR te wys.

Vir die drie formate wat hierdie artikel dek, som die tabel hieronder die keuse volgens bestemming op. As twee rye pas, kies die formaat wat meer inligting dra en voer die eenvoudiger een later uit; van 3MF na STL gaan is maklik, terwyl verlore kleure of eenhede herbou handwerk is.

Kies volgens waarheen die lêer volgende gaan
SituasieBeste formaatHoekom
Eenkleur-onderdeel na enige slicerSTL (binêr)Universele ondersteuning; die slicer het niks anders nodig nie
Oplaai na 'n modelbiblioteek of drukdiensSTL, plus 3MF indien aangebiedSTL word altyd aanvaar; 3MF behou eenhede en kleure
Veelkleur- of veelmateriaal-druk3MFEnigste formaat hier wat kleure en materiale per onderdeel vir slicers stoor
Plaat van verskeie dele met drukinstellings3MFStoor voorwerpplasing en slicer-instellings in een lêer
Onderdeel in duim ontwerp3MFVerklaar die eenheid, so niks word met 25,4 geskaal nie
Getekstureerde model vir Blender, Unity of UnrealOBJ (+ .mtl en beelde)Behou UV's, normale en materiaaltoekennings
Vinnige kontrole in 'n teksredigeerderOBJ of ASCII-STLGewone teks wat jy reël vir reël kan lees
Ou firmware of sagteware wat net STL lysSTLStrip die ekstras en stuur die maas

Belangrikste punte

  • STL stoor net driehoeke: geen eenhede, geen kleur nie, en 50 grepe per driehoek in binêre vorm.
  • OBJ voeg UV's, normale en benoemde groepe by, maar sy kleure en teksture hang af van 'n aparte .mtl-lêer en beeldlêers.
  • 3MF is 'n ZIP van XML wat eenhede, kleure, verskeie voorwerpe en drukinstellings aanteken, en geslote maasse vereis.
  • Gebruik STL vir eenvoudige eenkleur-drukwerk, OBJ vir getekstureerde modelle in kuns- en spelwerkvloei, en 3MF wanneer jou slicer dit ondersteun.
  • Omskakeling verander die houer, nie die maas nie: herstel gate en normale in 'n maasgereedskap, en stel die eenheid self.
DeelXFacebookWhatsAppTelegram

Gereelde vrae

Word STL deur 3MF vervang?

Stadig, wat druk-werkvloeie betref. PrusaSlicer en Bambu Studio stoor reeds projekte as 3MF, maar STL bly die formaat wat elke program en modelbiblioteek aanvaar, so die twee sal nog jare saam bestaan.

Kan 'n binêre STL kleur stoor?

Nie op enige standaardmanier nie. 'n Paar programme skryf kleur in die 2-greep-attribuutveld van elke driehoek, maar die meeste slicers ignoreer dit. Gebruik dus 3MF of OBJ wanneer kleur saak maak.

Hoekom lyk my OBJ grys nadat ek dit afgelaai het?

Die .mtl-lêer of die tekstuurbeelde is agtergelaat, of die paaie binne die .mtl wys na vouers wat nie op jou rekenaar bestaan nie. Sit die .obj, .mtl en beelde in een vouer en laai die model weer.

Gee ASCII- of binêre STL 'n akkurater druk?

Nie een druk in die praktyk akkurater nie. Albei beskryf dieselfde driehoeke; binêr stoor koördinate as 32-bis-dryfpunte en ASCII as teks, en binêre lêers is gewoonlik etlike kere kleiner.

Kan ek 'n OBJ terug na STL omskakel om te druk?

Ja. Die driehoeke word onveranderd oorgedra, terwyl UV's, materiale en teksture weggelaat word omdat STL geen plek daarvoor het nie. Kontroleer daarna die skaal, want OBJ-lêers uit modelleergereedskap is dikwels in meter of sentimeter.

Watter formaat moet ek gebruik om 'n model te deel sodat ander dit kan druk?

Bied 'n STL aan vir die wydste versoenbaarheid en, as die model verskeie dele of kleure het of in duim ontwerp is, voeg 'n 3MF daarnaas by sodat mense met 'n moderne slicer die volle opstelling kry.

Lees verder