OBJ

Was ist eine OBJ-Datei?

Ein 3D-Netzformat im Klartext, das jedes Modellierprogramm liest.

Was OBJ ist

OBJ ist ein reines Textformat, das sich in jedem Editor öffnen lässt. Es speichert Formen und Koordinaten statt Bildpunkte und bleibt deshalb in jeder Größe scharf — ein Logo auf Plakatgröße verliert nichts. Eingesetzt wird es für den Austausch zwischen Programmen und die Bearbeitung.

Die Endung lautet .obj, der volle Name Wavefront Object. Beides sagt weniger aus als das, was die Datei halten kann — und davon handelt der Rest dieser Seite.

Woher OBJ kommt

Wavefront Technologies hat es 1992 veröffentlicht.

Einem Format, das so lange lesbar geblieben ist, kann man etwas anvertrauen, das man in zehn Jahren wiederhaben will.

Die Spezifikation ist öffentlich

Sie ist vollständig veröffentlicht, das Format lässt sich also aus dem Dokument umsetzen statt durch Nachsehen. Deshalb taucht es in so vielen Programmen auf, und deshalb gehen Dateien von vor zwanzig Jahren heute noch auf. Veröffentlicht heißt allerdings nicht lizenzfrei: Wo ein Format einen Codec einpackt, ist die Patentfrage eine eigene, die der Standard nicht mitbeantwortet.

Es wird nichts weggeworfen

OBJ speichert seinen Inhalt exakt. Erneutes Speichern ändert nichts, es lässt sich also beliebig oft öffnen, bearbeiten und wieder ablegen, ohne dass sich Schaden ansammelt — genau das macht es zu einem Arbeitsformat und nicht zu einem Ausgabeformat.

Was OBJ öffnet

Blender, MeshLab und Maya lesen es, und die meisten Programme derselben Art ebenfalls.

Wenn eine Datei nicht aufgeht, liegt es selten am Format — häufiger daran, dass das Programm älter ist als das Format. Die Umwandlung in etwas Älteres ist der verlässliche Weg daran vorbei, und dafür gibt es den Rest dieser Website.

Im Browser öffnen

Kein Browser liest es.

Das ist der häufigste Grund, es umzuwandeln: nicht dass das Format schlecht wäre, sondern dass die Stelle, an der die Datei erscheinen soll, es nicht lesen kann.

Es ist ein Arbeitsformat

OBJ ist zum Öffnen und Ändern gedacht. Behalte die Datei in diesem Format, solange die Arbeit läuft, und exportiere daraus, wann immer eine fertige Fassung gebraucht wird.

Das Format, das jedes Programm öffnet

OBJ stammt von 1992 und ist bis heute der kleinste gemeinsame Nenner der 3D-Welt. Blender, jeder Spiele-Editor, jede Slicer-Software, jeder Online-Betrachter liest es, und zwar ohne Umweg über eine Bibliothek von Drittanbietern. Das ist die ganze Erklärung für seine Langlebigkeit: Es fehlen ihm modernere Fähigkeiten, aber die Frage, ob die Gegenseite die Datei öffnen kann, stellt sich bei OBJ praktisch nie.

Es ist reiner Text. Eine Zeile, die mit v beginnt, ist ein Eckpunkt mit drei Koordinaten; eine Zeile mit f ist eine Fläche, die auf vorherige Eckpunkte verweist. Das lässt sich in jedem Editor öffnen und mit etwas Geduld auch von Hand nachvollziehen — bei einem 3D-Format ungewöhnlich genug, um erwähnenswert zu sein.

Warum das Modell grau ankommt

Eine OBJ-Datei enthält Geometrie und sonst nichts. Farben, Materialien und Texturen liegen in einer separaten .mtl-Datei, die das OBJ in seinen ersten Zeilen nennt, und die Bilddateien für die Texturen liegen wiederum getrennt daneben.

Ein Modell ist also eigentlich ein Ordner: eine .obj, eine .mtl, dazu die Bilder. Wird nur die .obj verschickt — was ständig passiert, weil es die Datei mit dem erkennbaren Namen ist —, sieht die Empfängerin bare graue Geometrie. Das ist mit Abstand das häufigste Problem mit dem Format, und die Lösung ist simpel: den ganzen Ordner zippen und schicken.

Keine Einheit, keine Einigkeit über oben

Die Zahlen in einer OBJ-Datei tragen keine Maßeinheit. Ein Würfel mit der Kantenlänge zehn könnte zehn Millimeter, zehn Zentimeter oder zehn Meter meinen, und die Datei sagt es nicht — jedes Programm trifft beim Import seine eigene Annahme, weshalb ein Modell mal winzig und mal wandhoch ankommt.

Bei der Ausrichtung ist es dasselbe Bild. Manche Software behandelt die Y-Achse als oben, manche die Z-Achse, und das Format nimmt keine Position ein — Modelle landen deshalb routinemäßig liegend statt stehend. Beides lässt sich beim Import mit Skalierung und Drehung in Sekunden korrigieren, und beides gehört geprüft, bevor an dem Modell gemessen oder etwas davon gedruckt wird.

UV-Koordinaten überstehen die Reise, die MTL-Datei nicht

Eine Textur ist ein flaches Bild, und das Modell muss festlegen, welcher Bildbereich auf welche Oberfläche gehört. Das leisten UV-Koordinaten — ein zweiter Zahlensatz pro Eckpunkt, der das Netz auf das Bild abbildet. Sie stehen direkt in der OBJ-Datei und bleiben deshalb erhalten, selbst wenn Material und Textur fehlen.

Das ist der Grund, warum ein grau ankommendes Modell trotzdem reparabel ist: Sind die UVs vorhanden, ist das erneute Zuweisen einer Textur eine Sache von Minuten in jeder 3D-Software. Wurde ohne UVs exportiert, muss die Fläche neu entfaltet werden, und das ist echte Arbeit.

Text ist lesbar und schwer

Jede Koordinate als Dezimaltext zu speichern kostet reichlich Platz. Dasselbe Netz als binäre STL oder PLY ist typischerweise drei- bis fünfmal kleiner, und ein detaillierter 3D-Scan als OBJ kann mehrere hundert Megabyte erreichen.

Zugleich lässt sich der Text hervorragend komprimieren — aus demselben Grund, aus dem er groß ist. Eine gezippte OBJ-Datei schrumpft auf einen Bruchteil, weil Dezimalzahlen als Text enorm redundant sind. Für Archivierung oder Versand kostet das Zippen praktisch nichts und nimmt der Formatgröße den Stachel.

Was in einer OBJ-Datei fehlt

Keine Animation, keine Skelette, keine Szenenhierarchie, keine Kameras oder Lichter, und kein modernes Materialmodell — die MTL-Beschreibung stammt aus den frühen Neunzigern, sodass Metalness- und Roughness-Maps dort keinen vorgesehenen Platz haben und nur per Konvention mitgeschleppt werden.

Genau dafür wurde glTF entwickelt, und genau deshalb setzen Spiele-Pipelines heute darauf. OBJ eignet sich, um eine unbewegte Form von einem Programm zum nächsten zu reichen, und darin ist es unschlagbar. Für eine animierte Figur oder ein physikalisch korrektes Material ist es die falsche Wahl.

OBJ für den 3D-Druck vorbereiten

Slicer akzeptieren OBJ, und die Umwandlung nach STL ist unkompliziert, weil STL eine strikte Teilmenge dessen ist, was OBJ ausdrücken kann — nur Dreiecke, nichts sonst. Entscheidend ist, ob das Netz wasserdicht ist: Jede Kante von genau zwei Flächen geteilt, keine Löcher, keine invertierten Normalen.

Für die Bildschirmdarstellung gebaute Modelle erfüllen das oft nicht. Eine Fläche ohne Dicke sieht in der Vorschau perfekt aus und ist unbedruckbar, weil der Slicer nicht entscheiden kann, was innen und was außen liegt. Ein Reparaturwerkzeug vor dem Druck laufen zu lassen, findet die meisten dieser Fälle — und ist deutlich schneller als die Entdeckung nach vier Stunden am Drucker.

Die Eckdaten auf einen Blick

Kennungen und Herkunft des Formats OBJ.
Endung.obj
Medientypmodel/obj
Herausgegeben vonWavefront Technologies
Erstmals veröffentlicht1992