Zum Inhalt springen

Wavefront OBJ

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 31. August 2025 um 23:39 Uhr durch imported>KaiMartin (Der STL-Artikel wurde nach STL (Dateiformat) verschoben.).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
OBJ
Dateiendung: .obj
MIME-Type: text/plain
Entwickelt von: Wavefront Technologies
Erstveröffentlichung: 1989
Aktuelle Version Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
(Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value))
Art: ASCII-Format
Container für: 3D-Modelle
Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)


3D-Modelle

OBJ (oder .obj) ist ein offenes Dateiformat zum Speichern von dreidimensionalen geometrischen Formen.<ref name=":0">Obj Spec. 2. August 2019, archiviert vom Vorlage:IconExternal am 2. August 2019; abgerufen am 21. September 2021.</ref> Das von Wavefront Technologies entwickelte Format wird von vielen 3D-Grafikprogrammen unterstützt und ist daher geeignet für die programm- und plattformübergreifende Weitergabe von 3D-Modellen.

Das OBJ-Format speichert geometrische Eigenschaften eines Objekts oder gruppierter Objekte, d. h. Ecken, Textur-Koordinaten, Normalen, Flächen und Glättungen. Optische Materialeigenschaften (z. B. Spiegelung, Transparenz, Glanzlicht usw.) werden in einer separaten Materialdatei definiert, die auch Angaben zu Texturierungen enthalten kann. Die Materialdatei besitzt in der Regel die Dateiendung .mtl (von engl. material template library) und kann in der eigentlichen OBJ-Datei referenziert werden.

Aufbau

  • optionaler Kommentar
  • ggf. Einbindung des material template library.
  • ggf. Objektbenennung
  • Liste der Eckpunkte (Vertices)
  • Liste der Textur-Koordinaten
  • Liste der Normalen
  • Beschreibung der Flächen (Mit Gruppierung)
    • ggf. Gruppenname für folgende Flächen
    • ggf. Name des zu verwendenden Materials
    • ggf. Nummer der Glättungsgruppe
    • Beschreibung der Flächen

Details

Obj-Dateien werden zeilenweise ausgelesen, jeder Befehl benötigt eine neue Zeile.

Ein gültiger Eckpunkt-Index stimmt mit dem entsprechenden Eckpunktelementen der zuvor definierten Vertexliste überein. Ist der Index positiv, dann bezieht er sich auf die Stelle in der Eckpunktliste, welche mit 1 beginnt. Ist ein Index negativ, dann bezieht er sich auf das Ende der Eckpunktliste. Wobei -1 sich auf den an der aktuellen Dateiposition zuletzt definiert Punkt bezieht.<ref name=":0" />

Oben genannte Befehle:

"# <string Kommentar>" Kennzeichnung eines Kommentars – Alles in derselben Zeile nach der Raute wird ignoriert.

 # Dies ist ein Kommentar

"mtllib <string Path>" Einbindung einer Materialbibliothek – in der Datei beschriebene Materialien sind nun verwendbar.

 mtllib Cube.mtl

"o <string Name>" Benennung des Objekts.

 o CubeIstMeinName

"v <float X> <float Y> <float Z> [ <float W> ]" Beschreibung eines Eckpunktes (engl. vertex).

 v 1.000000 1.000000 -0.999999

"vt <float X> <float Y>" Beschreibung eines Texturkoordinatenpunktes.

 vt 0.500000 0.500000

"vn <float X> <float Y> <float Z>" Beschreibung einer Normalen.

 vn 0.000000 -1.000000 0.000000

"g <string Name>" Benennung einer Gruppierung (alle folgenden Flächen werden dieser Gruppierung zugeordnet).

g HierKommtEinGruppennameHin

"usemtl <string Material_Name>" Alle folgenden Flächen erhalten das in der Materialbibliothek mit diesem Namen identifizierte Material.

 usemtl DiesesInDerMTLDateiDefinierteMaterialWirdGenutzt

"s <integer Glättungsgruppe>" Alle folgenden Flächen erhalten eine definierte zwischen 1 und 32 liegende Glättungsgruppennummer. Die Kanten nebeneinander liegender Flächen mit derselben Glättungsgruppennummer werden glatt dargestellt (Die Kante zwischen beiden Flächen wird unsichtbar), nebeneinander liegende Flächen mit unterschiedlicher Glättungsgruppennummer werden normal dargestellt (Die Kante zwischen beiden Flächen wird sichtbar).

 s 32

"s off" Abschaltung der Glättung.

 s off

"f <integer A_V> <integer B_V> <integer C_V>..." Beschreibung einer Fläche. (Möglichkeit 1 – anhand von Eckpunkten)

 f 1 2 3

"f <integer A_V> / <integer A_VT> <integer B_V> / ..." Beschreibung einer Fläche. (Möglichkeit 2 – anhand von Eckpunkten und Texturkoordinaten)

 f 2/1 3/1 4/1

"f <integer A_V> // <integer A_VN> <integer B_V> // ..." Beschreibung einer Fläche. (Möglichkeit 3 – anhand von Eckpunkten und Normalen)

 f 2//1 3//1 4//1

"f <integer A_V> / <integer A_VT> / <integer A_VN> <integer B_V> / ..." Beschreibung einer Fläche. (Möglichkeit 4 – anhand von Eckpunkten, Texturkoordinaten und Normalen)

 f 2/3/1 3/4/1 4/6/1

Zudem können auch noch Grad, Basis Matrix, "Schritt Größe" und anstatt Flächen Linien, Punkte und Kurven beschrieben werden.

Beispiel

# Blender v2.71 (sub 0) OBJ File: 
# www.blender.org
mtllib Cube.mtl
o Cube
v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -0.999999
v 0.999999 1.000000 1.000001
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 -1.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 1.000000 -0.000000 0.000000
vn -0.000000 -0.000000 1.000000
vn -1.000000 -0.000000 -0.000000
vn 0.000000 0.000000 -1.000000
g Cube_Cube_Material
usemtl Material
s off
f 2//1 3//1 4//1
f 8//2 7//2 6//2
f 1//3 5//3 6//3
f 2//4 6//4 7//4
f 7//5 8//5 4//5
f 1//6 4//6 8//6
f 1//1 2//1 4//1
f 5//2 8//2 6//2
f 2//3 1//3 6//3
f 3//4 2//4 7//4
f 3//5 7//5 4//5
f 5//6 1//6 8//6

Verwandte Dateiformate

Weblinks

Einzelnachweise

<references />