UltKit

STL vs OBJ vs 3MF: ktorý 3D formát použiť?

Použite STL na jednofarebnú tlač, ktorú stačí len vyslicovať, OBJ, keď model nesie textúry na renderovanie alebo pre herný engine, a 3MF, keď ho váš slicer podporuje a chcete, aby sa zachovali jednotky, farby a viacero dielov. Formát určuje, aké metadáta putujú spolu so sieťou; nikdy však nerozhoduje o tom, či je samotná sieť v poriadku.

Jonas WeberJonas WeberRedaktor výkonu webu
Aktualizované 12 min čítania
Stolová 3D tlačiareň v priehľadnom kryte na bielom stole, vedľa notebook so zobrazeným 3D modelom a farebné vytlačené diely vrátane terénnej mapy a červeného ozubeného kolesa

STL: zoznam trojuholníkov a nič viac

STL vznikol v roku 1987 pre prvé stereolitografické stroje 3D Systems a jeho návrh o tom svedčí. Súbor je plochý zoznam trojuholníkov, z ktorých každý popisuje normála plôšky a tri rohové body. Neexistuje spoločná tabuľka vrcholov, takže roh, ktorý sa dotýka šiestich trojuholníkov, sa zapíše šesťkrát. Chýba aj pole pre jednotku: súradnica 25 môže znamenať milimetre, palce alebo metre a takmer každý slicer predpokladá milimetre. Farba, textúra a názvy častí v základnom formáte nemajú miesto, a preto ho dodnes číta každý slicer, CAD program aj tlačová služba.

STL existuje v dvoch kódovaniach. ASCII STL zapisuje všetko textom, riadkami ako facet normal, outer loop a vertex 12.5 0 3.2, takže ho otvoríte v textovom editore a čísla si prečítate. Binárny STL začína 80-bajtovou hlavičkou a 4-bajtovým počtom trojuholníkov, potom ukladá každý trojuholník ako dvanásť 4-bajtových desatinných čísel plus 2-bajtové pole atribútu: presne 50 bajtov na trojuholník. Vďaka tomu sa veľkosť dá ľahko odhadnúť. Model s miliónom trojuholníkov má v binárnej podobe asi 50 MB a ASCII verzia tej istej siete je typicky štyri až šesťkrát väčšia, lebo každá číslica je znak.

Jednoduchosť je silnou stránkou aj pascou. Z STL sa nedá zistiť, či mal ísť o jednu časť alebo tri, či bol exportovaný v palcoch, ani či trojuholníky skutočne uzatvárajú teleso. Slicer to musí odvodiť zo surových súradníc, a keď tipne zle, dostanete časť 25,4-krát menšiu alebo chýbajúcu stenu. Pri jednofarebnej časti, ktorú ste navrhli sami a exportovali v milimetroch, na tom nezáleží a STL zostáva formátom, ktorý sa najmenej pravdepodobne odmietne.

OBJ: polygóny, UV a sprievodný súbor materiálov

OBJ pochádza z Wavefront Technologies, ktorej softvér Advanced Visualizer ho používal koncom 80. rokov, a v 90. rokoch sa rozšíril ako textový formát, ktorý vedel vymieňať takmer každý 3D program. Na rozdiel od STL uchováva zoznam vrcholov a plôšky skladá z indexov, takže spoločný roh je uložený raz, a plôšky môžu byť trojuholníky, štvoruholníky alebo väčšie polygóny. Riadky začínajúce v obsahujú polohy, vt súradnice textúr (UV), vn normály a f plôšky. Skupiny (g) a objekty (o) pomenúvajú časti, takže OBJ prežije prenos cez Blender, Maya či ZBrush so zachovanou štruktúrou.

Vzhľad je mimo súboru .obj. Riadok mtllib uvádza sprievodný súbor .mtl a riadky usemtl priraďujú materiály plôškam. Súbor .mtl ukladá farby, napríklad Kd (difúzna), a odkazuje na obrázky textúr záznamami ako map_Kd wood.png. Texturovaný OBJ tak tvoria aspoň tri súbory: geometria, knižnica materiálov a jeden či viac obrázkov, všetko prepojené relatívnymi cestami. Ak pošlete iba .obj, príjemca uvidí sivý model. Toto oddelenie je užitočné v herných a VFX pipeline, kde umelci menia textúry bez zásahu do geometrie, a je to zároveň najčastejší dôvod, prečo stiahnutý model vyzerá zle.

OBJ má rovnakú slabinu ako STL pri mierke: ukladá holé čísla bez jednotky. Väčšina modelárskych nástrojov zapisuje metre alebo centimetre, zatiaľ čo slicery čítajú milimetre, takže OBJ z obchodu s herným obsahom môže mať mierku 10- alebo 1 000-krát vedľa. Pre tlač OBJ nepridáva nič, čo by slicer využil, okrem farieb vrcholov v niektorých nástrojoch, takže ak chcete tlačiť umelecký asset, zvyčajne je najjednoduchšie nechať textúry na renderovanie a slicer dostane čistú sieť. Opačným smerom je prevod STL na OBJ najkratšou cestou z tlačového modelu do renderovania alebo herného workflow.

3MF: balík ZIP navrhnutý na tlač

3MF vydalo v roku 2015 konzorcium 3MF Consortium, ktoré založil Microsoft spolu s firmami z tlačového a CAD priemyslu. Súbor .3mf je archív ZIP, rovnaký kontajner, o akom pojednáva článok ZIP vs RAR vs 7z. Ak ho premenujete na .zip, nájdete súbor XML 3D/3dmodel.model so sieťou, súbor typov obsahu, súbory vzťahov a často miniatúry a konfiguráciu slicera. Každý model deklaruje jednotku (mikrón, milimeter, centimeter, palec, stopa alebo meter), takže problém s mierkou, ktorý trápi STL a OBJ, tu jednoducho nevzniká. Farby, základné materiály, viac objektov a ich rozloženie na tlačovej platni sú súčasťou špecifikácie.

Špecifikácia tiež vyžaduje, aby siete boli manifold a konzistentne orientované: každá hrana patrí presne dvom trojuholníkom a všetky smerujú von. Exportéry, ktoré pravidlá dodržiavajú, nemôžu zapísať otvorenú ani sebaprenikajúcu geometriu, akú STL bez problémov prenáša. Podpora medzi súčasnými nástrojmi je široká. PrusaSlicer, Bambu Studio, OrcaSlicer a UltiMaker Cura čítajú 3MF, PrusaSlicer a Bambu Studio ukladajú celý projekt ako .3mf vrátane nastavení tlače a vyfarbených oblastí a aplikácia Microsoft 3D Builder vo Windowse ho otvorí priamo. Slabým miestom sú starší firmvér, portály tlačových fariem a CAD importéry, ktoré stále čakajú STL; pre ne previeste 3MF na STL a zmierte sa s tým, že doplnky ostanú pozadu.

from ↓ · to →UnitsColorTexturesViac častíNastavenia tlačePravidlo manifold
STL– STL to Units: no– STL to Color: no– STL to Textures: no– STL to Viac častí: no– STL to Nastavenia tlače: no– STL to Pravidlo manifold: no
OBJ– OBJ to Units: noOBJ to Color: yesOBJ to Textures: yesOBJ to Viac častí: yes– OBJ to Nastavenia tlače: no– OBJ to Pravidlo manifold: no
3MF3MF to Units: yes3MF to Color: yes3MF to Textures: yes3MF to Viac častí: yes3MF to Nastavenia tlače: yes3MF to Pravidlo manifold: yes
supported not offeredRiadky sú formáty, stĺpce to, čo samotný súbor dokáže niesť. Farby a textúry v OBJ potrebujú samostatný súbor .mtl a obrázky; textúry v 3MF pochádzajú z jeho rozšírenia pre materiály. Niektoré nástroje zapisujú farbu do nevyužitých bajtov binárneho STL, ale žiadny štandard to nepokrýva.
Rad 3D tlačiarní s otvorenou konštrukciou na drevených stoloch, na tej najbližšej je na tlačovej platni niekoľko modrých valcovitých dielov
Foto: Unsplash

Ako zvoliť formát podľa úlohy

Správny formát závisí od toho, kam súbor pôjde ďalej, nie od toho, ktorý je novší. Ak je ďalšou zastávkou slicer a časť je jednofarebná, STL stačí a stále je to formát, ktorému rozumie každé fórum, knižnica modelov aj tlačová služba. Ak je ďalšou zastávkou renderer, herný engine alebo modelovací nástroj iného umelca, OBJ zachová UV, normály a pomenované skupiny, ktoré STL zahodí, a jeho textová podoba uľahčuje kontrolu problémov.

3MF sa vyplatí, keď súbor nesie viac než geometriu. Viacfarebná tlač vyfarbená v Bambu Studio, platňa s dvanástimi časťami pripravená na jednu tlač, časť navrhnutá v palcoch alebo projekt, ktorý chcete znova otvoriť s rovnakou výškou vrstvy a výplňou, to všetko vyžaduje 3MF, pretože žiadny iný formát tu takú informáciu neuchová. Ak súbor smeruje na viac miest, ponechajte najbohatšiu verziu ako hlavnú kópiu a jednoduchšie z nej exportujte pomocou konvertora 3D modelov namiesto reťazenia prevodov.

STL pre jednoduché tlače

Jedna časť, jedna farba, export v milimetroch. Otvorí sa v každom slicery, CAD importnom dialógu aj formulári tlačovej služby.

OBJ pre texturované modely

UV, normály a pomenované skupiny pre Blender, Maya, Unity alebo Unreal. Súbor .mtl a obrázky textúr pribaľte k nemu.

3MF pre moderné slicery

Skutočné jednotky, farby, viac objektov a nastavenia tlače v jednom ZIP-e. Natívny formát projektu v PrusaSlicer a Bambu Studio.

Päť spôsobov, ako sa 3D súbor pokazí

Väčšina neúspešných tlačí a chybných importov, ktoré sa pripisujú formátu, sú v skutočnosti problémy siete alebo toho, čo o nej predpokladal prijímajúci program. STL je najviac vystavený, lebo nenesie metadáta, ktoré by chyby zachytili; OBJ zdieľa problémy s mierkou a chýbajúcimi súbormi; 3MF sa väčšiny z nich vyhýba už návrhom, hoci nedbanlivý exportér môže stále zapísať zlú sieť. V riadkoch nižšie nájdete, ako každá chyba vyzerá a odkiaľ zvyčajne pochádza.

Sieť, ktorá nie je manifold

Hrany patriace jednému trojuholníku alebo trom a viac, medzery medzi povrchmi alebo steny s nulovou hrúbkou. Slicer zobrazí chýbajúce vrstvy, náhodné diery alebo upozornenie na otvorené hrany. Príčina je v modelovaní alebo exporte, často pri zlučovaní častí, ktoré sa len dotýkajú.

Obrátené normály

Niektoré trojuholníky smerujú dovnútra. Renderery ukazujú čierne alebo priehľadné miesta a slicery môžu oblasť považovať za prázdny priestor. Pomôže príkaz na prepočet normál v Blenderi, Meshmixeri alebo v opravnom nástroji slicera.

Zámena milimetrov a palcov

Časť nakreslená v palcoch príde do slicera, ktorý predpokladá milimetre, 25,4-krát menšia; centimetre čítané ako milimetre dajú chybu 10-násobku. STL a OBJ jednotku zaznamenať nevedia, takže ju nastavíte pri exporte alebo prevode.

Chýbajúci súbor .mtl alebo textúry

OBJ, ktorý sa načíta sivý alebo purpurový, stratil knižnicu materiálov či obrázky, alebo cesty v .mtl ukazujú do priečinka na počítači pôvodného autora. Všetky súbory majte v jednom priečinku a zabaľte ich spolu.

Obrovské súbory ASCII STL

Detailný sken uložený ako ASCII STL môže presiahnuť niekoľko sto megabajtov, čo spomaľuje slicery a naráža na limity nahrávania. Opätovný export tej istej siete ako binárny STL ju zmenší zhruba na pätinu bez zmeny jediného trojuholníka.

Aké veľké bývajú súbory jednotlivých formátov

Veľkosť vyplýva zo štruktúry. Binárny STL má pevných 50 bajtov na trojuholník, takže ju viete vypočítať pred exportom. ASCII STL opakuje každý roh ako text a zvyčajne je štyri až šesťkrát väčší než binárny. OBJ ukladá každý spoločný vrchol raz a odkazuje naň indexom, takže pri typickej uzavretej sieti vychádza menší než ASCII STL a zhruba v rozsahu binárneho STL, väčší, ak nesie aj UV a normály. 3MF ukladá indexované XML a potom ho v ZIP-e komprimuje, čo z neho pri rovnakej geometrii zvyčajne robí najmenší z troch.

Čísla nižšie sú typické pre uzavretú sieť s asi 500 000 trojuholníkmi, napríklad detailnú figúrku. Skutočné súbory sa líšia podľa presnosti súradníc a exportéra, preto ich berte ako rádové odhady, užitočné, keď tlačová služba obmedzuje nahrávanie alebo STL exportovaný z 3MF vyjde niekoľkonásobne väčší.

Binárny STL (500 000 trojuholníkov × 50 bajtov)
≈ 25 MB
ASCII STL, rovnaká sieť, typicky
≈ 100–150 MB
OBJ bez UV, typicky
≈ 15–30 MB
3MF po kompresii ZIP, typicky
≈ 5–12 MB

Čo prevod opraví a čo nikdy nevyrieši

Prevod načíta trojuholníky z jedného kontajnera a zapíše ich do iného. Všetko, čo cieľový formát vie vyjadriť, sa prenesie; čo nevie, sa zahodí. Preto je STL na OBJ bezstratový pre geometriu, 3MF na STL stratí farby, jednotky a rozloženie platne a OBJ na STL stratí textúry a názvy častí. V 3D nástrojoch UltKit sú ďalšie rozhodnutia explicitné: Jednotky modelu určujú konvertoru, akú mierku zdroj používa, Zvislá os rieši rozdiel medzi Y-up a Z-up v herných enginoch a slicerech a Zlúčiť do jednej siete rozhoduje, či samostatné časti zostanú oddelené.

Čo žiadny prevod nerobí, je oprava siete. Ak má STL dieru, OBJ z neho vytvorený má tú istú dieru a exportér 3MF ju buď odmietne, alebo napriek tomu zapíše. Oprava je samostatný krok v nástroji na siete alebo vo vstavanom opravári slicera a najlepšie ju urobiť raz, v hlavnom súbore, skôr než exportujete čokoľvek ďalšie. To isté platí pre mierku: prevod nemôže vedieť, že časť mala byť v palcoch, ak mu to nepoviete. Rovnako je to s detailom: STL s malým počtom polygónov sa stane OBJ alebo 3MF s malým počtom polygónov, preto pri nárokoch na kvalitu exportujte znova zo zdrojového modelu.

Čo zmena formátu robí

  • Presunie rovnaké trojuholníky do kontajnera, ktorý iný program prijme
  • Použije jednotku, ktorú zvolíte v poli Jednotky modelu, a opraví chybu mierky 25,4× alebo 10×
  • Otočí model medzi Y-up a Z-up pomocou Zvislá os
  • Zmenší ASCII STL zápisom v binárnej podobe
  • Ponechá alebo zlúči samostatné časti podľa Zlúčiť do jednej siete

Čo necháva presne tak, ako bolo

  • Diery, otvorené hrany a geometriu, ktorá nie je manifold
  • Obrátené alebo nekonzistentné normály
  • Sebaprenikajúce časti a steny s nulovou hrúbkou
  • Detail, ktorý sa stratil pri prvom exporte siete
  • Farby a textúry, keď ich cieľový formát nemá kam uložiť

Rozhodovacia tabuľka: STL, OBJ alebo 3MF

Pri tejto otázke sa vždy objavia ešte dva ďalšie formáty. STEP (ISO 10303) ukladá presné telesá a plochy namiesto trojuholníkov, takže je to formát, keď sa časť musí vrátiť do Fusion 360, SolidWorks alebo FreeCAD na úpravy. GLB, binárna podoba formátu glTF 2.0 od Khronos Group, zbaľuje sieť s materiálmi a textúrami do jedného súboru v metroch a je formátom na zobrazenie modelu na webe alebo v Android AR.

Pre tri formáty, ktorým sa článok venuje, tabuľka nižšie zhŕňa voľbu podľa cieľa. Ak sedia dva riadky, vyberte formát, ktorý nesie viac informácií, a jednoduchší exportujte neskôr; z 3MF do STL je to jednoduché, kým obnovovať stratené farby alebo jednotky je ručná práca.

Vyberte podľa toho, kam súbor pôjde ďalej
SituáciaNajlepší formátPrečo
Jednofarebná časť do ľubovoľného sliceraSTL (binárny)Univerzálna podpora; slicer nepotrebuje nič iné
Nahrávanie do knižnice modelov alebo tlačovej službySTL, plus 3MF, ak ho ponúkajúSTL sa prijme vždy; 3MF zachová jednotky a farby
Viacfarebná alebo viacmateriálová tlač3MFJediný formát tu, ktorý ukladá farby a materiály jednotlivých častí pre slicery
Platňa s viacerými časťami a nastaveniami tlače3MFUkladá rozmiestnenie objektov a nastavenia slicera v jednom súbore
Časť navrhnutá v palcoch3MFDeklaruje jednotku, takže sa nič nezmenšuje 25,4-krát
Texturovaný model pre Blender, Unity alebo UnrealOBJ (+ .mtl a obrázky)Zachová UV, normály a priradenie materiálov
Rýchla kontrola v textovom editoreOBJ alebo ASCII STLČistý text, ktorý môžete čítať riadok po riadku
Starý firmvér alebo softvér, ktorý uvádza iba STLSTLOdstráňte doplnky a pošlite sieť

Kľúčové poznatky

  • STL ukladá iba trojuholníky: žiadne jednotky, žiadnu farbu a v binárnej podobe 50 bajtov na trojuholník.
  • OBJ pridáva UV, normály a pomenované skupiny, ale jeho farby a textúry závisia od samostatného súboru .mtl a obrázkov.
  • 3MF je ZIP s XML, ktorý zaznamenáva jednotky, farby, viac objektov a nastavenia tlače a vyžaduje uzavreté siete.
  • STL používajte pre jednoduché jednofarebné tlače, OBJ pre texturované modely v umeleckých a herných pipeline a 3MF všade, kde ho váš slicer podporuje.
  • Prevod mení kontajner, nie sieť: diery a normály opravte v nástroji na siete a jednotku nastavte sami.
ZdieľaťXFacebookWhatsAppTelegram

Často kladené otázky

Nahrádza 3MF formát STL?

Pomaly, pokiaľ ide o 3D tlač. PrusaSlicer a Bambu Studio už ukladajú projekty ako 3MF, ale STL zostáva formátom, ktorý akceptuje každý nástroj aj knižnica modelov, takže oba formáty budú ešte roky existovať vedľa seba.

Dokáže binárne STL uložiť farbu?

Nie podľa žiadneho štandardu. Niektoré programy zapisujú farbu do 2-bajtového atribútu každého trojuholníka, ale väčšina slicerov ho ignoruje, preto ak záleží na farbe, použite 3MF alebo OBJ.

Prečo sa môj OBJ po stiahnutí zobrazuje sivý?

Súbor .mtl alebo obrázky textúr sa nenachádzajú pri modeli, prípadne cesty v súbore .mtl smerujú do priečinkov, ktoré na vašom počítači neexistujú. Uložte súbory .obj, .mtl a obrázky do jedného priečinka a model načítajte znova.

Dáva presnejšiu tlač ASCII alebo binárne STL?

V praxi nie je presnejší ani jeden. Oba popisujú tie isté trojuholníky; binárny formát ukladá súradnice ako 32-bitové čísla s pohyblivou desatinnou čiarkou a ASCII ako text, pričom binárne súbory bývajú niekoľkonásobne menšie.

Môžem previesť OBJ späť do STL na tlač?

Áno. Trojuholníky sa prenesú bez zmeny, ale UV súradnice, materiály a textúry sa vynechajú, pretože STL pre ne nemá miesto. Potom skontrolujte mierku, keďže súbory OBJ z modelovacích nástrojov bývajú v metroch alebo centimetroch.

Aký formát použiť na zdieľanie modelu, ktorý budú tlačiť iní?

Ponúknite STL pre najširšiu kompatibilitu a ak má model viac častí, farby alebo bol navrhnutý v palcoch, pridajte vedľa neho 3MF, aby ľudia s moderným slicerom dostali kompletné nastavenie.

Čítajte ďalej