UltKit

STL, OBJ oder 3MF: Welches 3D-Dateiformat passt?

Nehmen Sie STL für einen einfarbigen Druck, den Sie nur slicen müssen, OBJ, wenn das Modell Texturen für das Rendering oder eine Game-Engine mitbringt, und 3MF, wenn Ihr Slicer es unterstützt und Einheiten, Farben und mehrere Teile unterwegs erhalten bleiben sollen. Das Format bestimmt, welche Metadaten mit dem Mesh reisen; ob das Mesh selbst fehlerfrei ist, entscheidet es nie.

Jonas WeberJonas WeberRedakteur für Web-Performance
Aktualisiert 12 Min. Lesezeit
Ein 3D-Drucker in einem transparenten Gehäuse auf einem weißen Schreibtisch, daneben ein Laptop mit einem 3D-Modell und bunte gedruckte Teile, darunter eine Geländekarte und ein rotes Zahnrad

STL: eine Liste von Dreiecken und sonst nichts

STL entstand 1987 für die ersten Stereolithografie-Maschinen von 3D Systems, und das Design verrät diese Herkunft. Eine Datei ist eine flache Liste von Dreiecken, die jeweils durch eine Flächennormale und drei Eckpunkte beschrieben werden. Es gibt keine gemeinsame Vertex-Tabelle, sodass eine Ecke, an der sechs Dreiecke zusammenkommen, sechsmal geschrieben wird. Ein Feld für die Einheit fehlt ebenfalls: Eine Koordinate von 25 kann Millimeter, Zoll oder Meter bedeuten, und fast jeder Slicer nimmt Millimeter an. Farbe, Textur und Teilenamen haben im Kernformat keinen Platz – genau deshalb liest es noch heute jeder Slicer, jedes CAD-Programm und jeder Druckservice.

STL gibt es in zwei Kodierungen. ASCII-STL schreibt alles als Text aus, mit Zeilen wie facet normal, outer loop und vertex 12.5 0 3.2; Sie können die Datei im Texteditor öffnen und die Zahlen lesen. Binäres STL beginnt mit einem 80-Byte-Header und einer 4-Byte-Dreieckszahl und speichert dann jedes Dreieck als zwölf 4-Byte-Gleitkommazahlen plus ein 2-Byte-Attributfeld: genau 50 Byte pro Dreieck. Damit lässt sich die Größe leicht vorhersagen. Ein Modell mit einer Million Dreiecken hat binär etwa 50 MB, die ASCII-Version desselben Meshes ist meist vier- bis sechsmal größer, weil jede Ziffer zu einem Zeichen wird.

Die Einfachheit ist Stärke und Falle zugleich. Eine STL-Datei verrät nicht, ob sie ein Teil oder drei Teile sein sollte, ob sie in Zoll exportiert wurde oder ob ihre Dreiecke tatsächlich einen Körper umschließen. Der Slicer muss das aus den rohen Koordinaten ableiten, und wenn er falsch rät, entsteht ein Teil, das 25,4-mal zu klein ist, oder es fehlt eine Wand. Bei einem einfarbigen Teil, das Sie selbst konstruiert und in Millimetern exportiert haben, spielt das keine Rolle, und STL bleibt das Format, das am seltensten abgelehnt wird.

OBJ: Polygone, UVs und eine separate Materialdatei

OBJ stammt von Wavefront Technologies, deren Software Advanced Visualizer es Ende der 1980er-Jahre nutzte, und verbreitete sich in den 1990ern als Textformat, das fast jedes 3D-Programm austauschen konnte. Anders als STL führt es eine Vertex-Liste und baut Flächen aus Indizes auf, sodass eine gemeinsame Ecke nur einmal gespeichert wird; Flächen können Dreiecke, Vierecke oder größere Polygone sein. Zeilen mit v enthalten Positionen, vt Texturkoordinaten (UVs), vn Normalen und f die Flächen. Gruppen (g) und Objekte (o) benennen die Teile, sodass OBJ einen Austausch über Blender, Maya oder ZBrush mit intakter Struktur übersteht.

Das Aussehen liegt außerhalb der .obj-Datei. Eine mtllib-Zeile nennt eine zugehörige .mtl-Datei, und usemtl-Zeilen weisen den Flächen Materialien zu. Die .mtl-Datei speichert Farben wie Kd (diffus) und verweist mit Einträgen wie map_Kd wood.png auf Texturbilder. Ein texturiertes OBJ besteht daher aus mindestens drei Dateien: der Geometrie, der Materialbibliothek und einem oder mehreren Bildern, alle über relative Pfade verknüpft. Schicken Sie nur die .obj-Datei, sieht der Empfänger ein graues Modell. Diese Trennung ist in Game- und VFX-Pipelines nützlich, wo Artists Texturen tauschen, ohne die Geometrie anzufassen – und sie ist der häufigste Grund, warum ein heruntergeladenes Modell falsch aussieht.

OBJ teilt den blinden Fleck von STL beim Maßstab: Es speichert nackte Zahlen ohne Einheit. Die meisten Modellierprogramme schreiben Meter oder Zentimeter, Slicer lesen Millimeter, sodass ein OBJ aus einem Game-Asset-Shop um den Faktor 10 oder 1.000 daneben liegen kann. Für den Druck bringt OBJ nichts, was ein Slicer nutzt, außer Vertex-Farben in einigen Programmen; wenn Sie ein Art-Asset drucken wollen, behalten Sie meist am einfachsten die Texturen fürs Rendering und geben dem Slicer ein sauberes Mesh. In der Gegenrichtung ist STL in OBJ umwandeln der kürzeste Weg vom Druckmodell in einen Rendering- oder Game-Workflow.

3MF: ein ZIP-Paket für den 3D-Druck

3MF wurde 2015 vom 3MF Consortium veröffentlicht, einer von Microsoft gegründeten Gruppe mit Unternehmen aus Druck- und CAD-Branche. Eine .3mf-Datei ist ein ZIP-Archiv, dasselbe Containerformat wie in ZIP vs. RAR vs. 7z beschrieben. Benennen Sie sie in .zip um, finden Sie eine XML-Datei 3D/3dmodel.model mit dem Mesh, eine Content-Types-Datei, Beziehungsdateien und oft Vorschaubilder und Slicer-Konfiguration. Jedes Modell deklariert seine Einheit (Mikrometer, Millimeter, Zentimeter, Zoll, Fuß oder Meter), sodass das Maßstabsproblem von STL und OBJ schlicht nicht auftritt. Farben, Basismaterialien, mehrere Objekte und ihre Platzierung auf dem Druckbett gehören zur Spezifikation.

Die Spezifikation verlangt außerdem, dass Meshes manifold und einheitlich ausgerichtet sind: Jede Kante gehört genau zwei Dreiecken, alle zeigen nach außen. Exporter, die sich daran halten, können die offene, selbstdurchdringende Geometrie nicht schreiben, die ein STL bereitwillig enthält. Die Unterstützung ist bei aktuellen Programmen breit. PrusaSlicer, Bambu Studio, OrcaSlicer und UltiMaker Cura lesen 3MF, PrusaSlicer und Bambu Studio speichern ihr ganzes Projekt mit Druckeinstellungen und bemalten Farben als .3mf, und Microsofts App 3D Builder unter Windows öffnet es direkt. Schwach ist die Unterstützung bei älterer Firmware, Print-Farm-Portalen und CAD-Importern, die weiter STL erwarten; dafür können Sie 3MF in STL umwandeln und in Kauf nehmen, dass die Zusatzdaten fehlen.

from ↓ · to →UnitsColorTexturesMehrere TeileDruckeinstellungenManifold-Regel
STL– STL to Units: no– STL to Color: no– STL to Textures: no– STL to Mehrere Teile: no– STL to Druckeinstellungen: no– STL to Manifold-Regel: no
OBJ– OBJ to Units: noOBJ to Color: yesOBJ to Textures: yesOBJ to Mehrere Teile: yes– OBJ to Druckeinstellungen: no– OBJ to Manifold-Regel: no
3MF3MF to Units: yes3MF to Color: yes3MF to Textures: yes3MF to Mehrere Teile: yes3MF to Druckeinstellungen: yes3MF to Manifold-Regel: yes
supported not offeredZeilen sind Formate, Spalten das, was die Datei selbst enthalten kann. Farbe und Texturen bei OBJ benötigen die separate .mtl-Datei und Bilder; 3MF-Texturen stammen aus der Materials-Erweiterung. Einige Programme schreiben Farbe in die ungenutzten Bytes von binärem STL, aber kein Standard deckt das ab.
Eine Reihe offener 3D-Drucker auf Holztischen, beim vordersten mehrere blaue zylindrische Teile auf dem Druckbett
Foto: Unsplash

Das richtige Format für die Aufgabe

Das richtige Format hängt davon ab, wohin die Datei als Nächstes geht, nicht davon, welches neuer ist. Ist die nächste Station ein Slicer und das Teil einfarbig, genügt STL, das nach wie vor jedes Forum, jede Modellbibliothek und jeder Druckservice versteht. Ist die nächste Station ein Renderer, eine Game-Engine oder das Modellierprogramm eines anderen Artists, behält OBJ die UVs, Normalen und benannten Gruppen, die STL verwirft, und seine Textform macht Probleme leicht prüfbar.

3MF lohnt sich, wenn die Datei mehr als Geometrie enthält. Ein in Bambu Studio bemalter Mehrfarbdruck, ein Druckbett mit zwölf Teilen für einen Auftrag, ein in Zoll konstruiertes Teil oder ein Projekt, das Sie mit gleicher Schichthöhe und gleichem Infill wieder öffnen wollen – all das braucht 3MF, weil kein anderes Format hier diese Informationen speichern kann. Bei mehreren Zielen behalten Sie die reichhaltigste Version als Masterkopie und exportieren daraus einfachere Versionen mit einem 3D-Modell-Konverter, statt Konvertierungen zu verketten.

STL für einfache Drucke

Ein Teil, eine Farbe, in Millimetern exportiert. Öffnet sich in jedem Slicer, CAD-Importdialog und Upload-Formular von Druckservices.

OBJ für texturierte Modelle

UVs, Normalen und benannte Gruppen für Blender, Maya, Unity oder Unreal. Die .mtl-Datei und die Texturbilder gehören dazu.

3MF für moderne Slicer

Echte Einheiten, Farben, mehrere Objekte und Druckeinstellungen in einem ZIP. Natives Projektformat von PrusaSlicer und Bambu Studio.

Fünf typische Fehler in 3D-Dateien

Die meisten fehlgeschlagenen Drucke und defekten Importe, die dem Format angelastet werden, sind eigentlich Probleme im Mesh oder in dem, was das empfangende Programm darüber annahm. STL ist am anfälligsten, weil es keine Metadaten zum Abfangen von Fehlern enthält; OBJ teilt die Probleme mit Maßstab und fehlenden Dateien; 3MF vermeidet die meisten per Design, doch ein nachlässiger Exporter kann trotzdem ein fehlerhaftes Mesh schreiben. Öffnen Sie die Zeilen unten, um zu sehen, wie sich jeder Fehler äußert und woher er meist kommt.

Non-Manifold-Mesh

Kanten, die zu einem Dreieck oder zu drei und mehr gehören, Lücken zwischen Flächen oder Wände ohne Dicke. Der Slicer zeigt fehlende Schichten, zufällige Löcher oder eine Warnung wegen offener Kanten. Die Ursache liegt in Modellierung oder Export, oft beim Zusammenführen von Teilen, die sich nur berühren.

Invertierte Normalen

Einige Dreiecke zeigen nach innen. Renderer zeigen schwarze oder durchsichtige Stellen, und Slicer behandeln den Bereich womöglich als leeren Raum. Ein Befehl zum Neuberechnen der Normalen in Blender, Meshmixer oder im Reparaturwerkzeug des Slicers behebt das.

Verwechslung von Millimeter und Zoll

Ein in Zoll gezeichnetes Teil ist in einem Slicer, der Millimeter annimmt, 25,4-mal zu klein; Zentimeter, als Millimeter gelesen, ergeben einen Fehler um den Faktor 10. STL und OBJ können die Einheit nicht speichern, daher legen Sie sie beim Export oder Umwandeln fest.

Fehlende .mtl-Datei oder Texturen

Ein OBJ, das grau oder magenta lädt, hat seine Materialbibliothek oder seine Bilder verloren, oder die Pfade in der .mtl zeigen auf einen Ordner auf dem Computer des ursprünglichen Artists. Legen Sie alle Dateien in einen Ordner und packen Sie sie zusammen in ein ZIP.

Riesige ASCII-STL-Dateien

Ein detaillierter Scan als ASCII-STL kann mehrere hundert Megabyte erreichen, was Slicer verlangsamt und Upload-Limits sprengt. Exportieren Sie dasselbe Mesh erneut als binäres STL, schrumpft es auf etwa ein Fünftel, ohne ein einziges Dreieck zu ändern.

Wie groß die Formate typischerweise werden

Die Größe ergibt sich aus der Struktur. Binäres STL ist auf 50 Byte pro Dreieck festgelegt, sodass Sie sie vor dem Export berechnen können. ASCII-STL wiederholt jede Ecke als Text und liegt meist vier- bis sechsmal über der binären Variante. OBJ speichert jeden gemeinsamen Vertex einmal und verweist per Index darauf; bei einem typischen geschlossenen Mesh ist es daher kleiner als ASCII-STL und etwa im Bereich von binärem STL, größer, wenn zusätzlich UVs und Normalen enthalten sind. 3MF speichert indizierte XML-Daten und komprimiert sie im ZIP, wodurch es bei gleicher Geometrie meist das kleinste der drei Formate ist.

Die folgenden Werte sind typisch für ein geschlossenes Mesh mit etwa 500.000 Dreiecken, etwa eine detaillierte Figur. Echte Dateien variieren je nach Koordinatengenauigkeit und Exporter; verstehen Sie die Werte als Größenordnungen, nützlich, wenn ein Druckservice Uploads begrenzt oder ein aus 3MF exportiertes STL um ein Vielfaches größer ausfällt.

Binäres STL (500.000 Dreiecke × 50 Byte)
≈ 25 MB
ASCII-STL, gleiches Mesh, typisch
≈ 100–150 MB
OBJ ohne UVs, typisch
≈ 15–30 MB
3MF nach ZIP-Komprimierung, typisch
≈ 5–12 MB

Was das Umwandeln behebt und was es nie beheben wird

Eine Konvertierung liest die Dreiecke aus einem Container und schreibt sie in einen anderen. Alles, was das Zielformat ausdrücken kann, wird übernommen; alles andere geht verloren. Deshalb ist STL zu OBJ für die Geometrie verlustfrei, 3MF zu STL verliert Farben, Einheiten und Druckbett-Layout, und OBJ zu STL verliert Texturen und Teilenamen. In den 3D-Tools von UltKit sind die zusätzlichen Entscheidungen explizit: Modelleinheiten sagt dem Konverter, welchen Maßstab die Quelle nutzt, Hochachse gleicht den Unterschied zwischen Y-oben und Z-oben bei Game-Engines und Slicern aus, und Zu einem Mesh zusammenführen legt fest, ob getrennte Teile getrennt bleiben.

Was keine Konvertierung leistet, ist die Reparatur eines Meshes. Hat ein STL ein Loch, hat das daraus erzeugte OBJ dasselbe Loch, und ein 3MF-Exporter lehnt es entweder ab oder schreibt es trotzdem. Die Reparatur ist ein eigener Schritt in einem Mesh-Programm oder im integrierten Reparaturwerkzeug des Slicers und erfolgt am besten einmal in Ihrer Masterdatei, bevor Sie etwas anderes exportieren. Dasselbe gilt für den Maßstab: Eine Konvertierung kann nicht wissen, dass ein Teil in Zoll gedacht war, wenn Sie es ihr nicht sagen. Auch beim Detailgrad ist es so: Ein STL mit wenigen Polygonen wird ein OBJ oder 3MF mit wenigen Polygonen, exportieren Sie daher bei Qualitätsansprüchen erneut aus dem Quellmodell.

Was ein Formatwechsel bewirkt

  • Verpackt dieselben Dreiecke in einen Container, den ein anderes Programm akzeptiert
  • Wendet die unter Modelleinheiten gewählte Einheit an und behebt einen Maßstabsfehler von 25,4× oder 10×
  • Dreht das Modell mit Hochachse zwischen Y-oben und Z-oben
  • Verkleinert ein ASCII-STL, indem stattdessen binär geschrieben wird
  • Behält getrennte Teile oder führt sie zusammen, je nach Zu einem Mesh zusammenführen

Was er unverändert lässt

  • Löcher, offene Kanten und Non-Manifold-Geometrie
  • Invertierte oder inkonsistente Normalen
  • Sich selbst durchdringende Teile und Wände ohne Dicke
  • Details, die beim ersten Export des Meshes verloren gingen
  • Farben und Texturen, wenn das Zielformat dafür keinen Platz hat

Entscheidungstabelle: STL, OBJ oder 3MF

Zwei weitere Formate kommen bei dieser Frage immer wieder auf. STEP (ISO 10303) speichert exakte Körper und Flächen statt Dreiecken und ist daher das Format, wenn ein Teil zur Bearbeitung zurück in Fusion 360, SolidWorks oder FreeCAD soll. GLB, die binäre Form von glTF 2.0 der Khronos Group, packt ein Mesh samt Materialien und Texturen in eine Datei in Metern und ist das Format, um ein Modell im Web oder in Android-AR zu zeigen.

Für die drei Formate dieses Artikels fasst die folgende Tabelle die Wahl nach Ziel zusammen. Passen zwei Zeilen, wählen Sie das Format mit mehr Informationen und exportieren das einfachere später; von 3MF zu STL zu gehen ist leicht, verlorene Farben oder Einheiten wiederherzustellen ist Handarbeit.

Wählen Sie nach dem nächsten Ziel der Datei
SituationBestes FormatWarum
Einfarbiges Teil für einen beliebigen SlicerSTL (binär)Universelle Unterstützung; der Slicer braucht nichts weiter
Upload in eine Modellbibliothek oder zu einem DruckserviceSTL, plus 3MF, falls angebotenSTL wird immer akzeptiert; 3MF behält Einheiten und Farben
Mehrfarb- oder Mehrmaterialdruck3MFEinziges Format hier, das Farben und Materialien pro Teil für Slicer speichert
Druckbett mit mehreren Teilen und Druckeinstellungen3MFSpeichert Objektplatzierung und Slicer-Einstellungen in einer Datei
In Zoll konstruiertes Teil3MFDeklariert die Einheit, sodass nichts mit 25,4 skaliert wird
Texturiertes Modell für Blender, Unity oder UnrealOBJ (+ .mtl und Bilder)Behält UVs, Normalen und Materialzuweisungen
Schnelle Prüfung im TexteditorOBJ oder ASCII-STLKlartext, den Sie Zeile für Zeile lesen können
Alte Firmware oder Software, die nur STL aufführtSTLZusatzdaten entfernen und das Mesh senden

Das Wichtigste in Kürze

  • STL speichert nur Dreiecke: keine Einheiten, keine Farbe und in der binären Form 50 Byte pro Dreieck.
  • OBJ ergänzt UVs, Normalen und benannte Gruppen, doch Farben und Texturen hängen von einer separaten .mtl-Datei und Bilddateien ab.
  • 3MF ist ein ZIP aus XML, das Einheiten, Farben, mehrere Objekte und Druckeinstellungen festhält und geschlossene Meshes verlangt.
  • Nutzen Sie STL für einfache einfarbige Drucke, OBJ für texturierte Modelle in Kunst- und Game-Pipelines und 3MF, wann immer Ihr Slicer es unterstützt.
  • Das Umwandeln ändert den Container, nicht das Mesh: Reparieren Sie Löcher und Normalen in einem Mesh-Programm und legen Sie die Einheit selbst fest.
TeilenXFacebookWhatsAppTelegram

Häufig gestellte Fragen

Wird STL durch 3MF abgelöst?

Langsam, zumindest im Druck-Workflow. PrusaSlicer und Bambu Studio speichern Projekte bereits als 3MF, aber STL bleibt das Format, das jedes Programm und jede Modellbibliothek akzeptiert. Beide Formate werden daher noch Jahre nebeneinander existieren.

Kann eine binäre STL-Datei Farbe speichern?

Nicht auf standardisierte Weise. Einige Programme schreiben Farbe in das 2-Byte-Attributfeld jedes Dreiecks, die meisten Slicer ignorieren es jedoch. Verwenden Sie 3MF oder OBJ, wenn Farbe wichtig ist.

Warum erscheint meine OBJ-Datei nach dem Herunterladen grau?

Die .mtl-Datei oder die Texturbilder fehlen, oder die Pfade in der .mtl-Datei verweisen auf Ordner, die auf Ihrem Computer nicht existieren. Legen Sie die .obj-Datei, die .mtl-Datei und die Bilder in einen Ordner und laden Sie das Modell erneut.

Liefert ASCII- oder binäres STL einen genaueren Druck?

In der Praxis druckt keines von beiden genauer. Beide beschreiben dieselben Dreiecke; binär speichert Koordinaten als 32-Bit-Gleitkommazahlen, ASCII als Text. Binärdateien sind in der Regel mehrmals kleiner.

Kann ich eine OBJ-Datei für den Druck wieder in STL umwandeln?

Ja. Die Dreiecke werden unverändert übernommen, während UVs, Materialien und Texturen entfallen, weil STL dafür keinen Platz hat. Prüfen Sie anschließend den Maßstab, denn OBJ-Dateien aus Modellierprogrammen sind oft in Metern oder Zentimetern angelegt.

Welches Format eignet sich, um ein Modell zum Nachdrucken zu teilen?

Bieten Sie eine STL-Datei für die größtmögliche Kompatibilität an. Besteht das Modell aus mehreren Teilen, hat Farben oder wurde in Zoll konstruiert, legen Sie zusätzlich eine 3MF-Datei bei, damit Nutzer mit einem modernen Slicer die vollständige Einrichtung erhalten.

Weiterlesen