SlideShare una empresa de Scribd logo
1 de 19
Descargar para leer sin conexión
CARL
      VON
OSSIETZKY
            Wavefront OBJ Format

            Johannes Diemke

            ¨
            Ubung im Modul OpenGL mit Java
            Wintersemester 2010/2011
Wavefront OBJ Format


Motivation
   3D-Modelle bestehen i. d. R. aus Tausenden von Dreiecken
         H¨ndische Definition im Quellcode nahezu unm¨glich
          a                                           o
         Spezielle 3D Modellierungssoftware notwendig
   Im Bereich der Computerspiele ist 3ds Max beliebt
         Blizzard Entertainment
         Crytek
         Electronic Arts
         Remedy Entertainment
         ...
   Blender stellt eine Open Source Alternative dar




   Johannes Diemke                OpenGL mit Java      WiSe 2010 / 2011   2/19
Wavefront OBJ Format


Wavefront OBJ Dateien
   Wavefront’s Advanced Visualizer Format
   Definieren Geometrie und dessen Eigenschaften
         Polygonale Objekte
         Freiform-Objekte (Kurven und Fl¨chen)
                                        a
         Material inkl. Texturen
   Animation wird nicht unterst¨tzt
                               u
   Existiert als ASCII Format (.obj) und bin¨res Format (.mod)
                                            a
   Von nahezu allen Programmen unterst¨tzt
                                      u
   Mitlerweile aber obsolet → COLLADA
   Vollst¨ndige Spezifikation:
         a
   http://local.wasp.uwa.edu.au/~pbourke/dataformats/obj/


   Johannes Diemke             OpenGL mit Java       WiSe 2010 / 2011   3/19
Wavefront OBJ Format


Das ASCII Dateiformat (.obj)
   Einfache ASCII Textdatei
         Menschenlesbar
         Theoretisch im Texteditor editierbar
   Enth¨lt Anweisungen zur Definition von
       a
         Vertices
         Texturkoordinaten
         Normalen
         Faces
         Material-Gruppen
         Polygon-Gruppen
         Benannte Objekte
         Smoothing Groups
         Freiform-Objekte


   Johannes Diemke               OpenGL mit Java   WiSe 2010 / 2011   4/19
Wavefront OBJ Format


#-Anweisung
   Zeilen die mit einem Rautenzeichen beginnen sind Kommentare
   # a comment line

v-Anweisung
   Definiert einen Vertex
   Als Argumente folgen die x-,y - und z-Komponente
   Werden fortlaufend, beginnend bei eins, durchnummeriert
   v x y z

vt-Anweisung
   Definiert eine Texturkoordinate
   Als Argumente folgen die u-,v - und optionale w -Komponente
   Werden fortlaufend, beginnend bei eins, durchnummeriert
   vt u v [w]

   Johannes Diemke          OpenGL mit Java         WiSe 2010 / 2011   5/19
Wavefront OBJ Format


vn-Anweisung
   Definiert eine Normale
   Als Argumente folgen die x-,y - und z-Komponente
   Werden fortlaufend, beginnend bei eins, durchnummeriert
   vn x y z

f-Anweisung
   Definiert Polygon uber eine Liste von n-Tupeln aus Indizes auf
                    ¨
         Vertices
         Texturkoordinaten (optional)
         Normalen (optional)
   Vertices werden standardm¨ßig CCW angegeben
                            a
   Definition durch Angabe einer Liste von Vertices
   f v1 v2 v3 v4 ...

   Johannes Diemke              OpenGL mit Java      WiSe 2010 / 2011   6/19
Wavefront OBJ Format


f-Anweisung (Forts.)
   Definition durch Angabe einer Liste von 2-Tupeln bestehend aus
   einem Vertex und einer Texturkoordinate
   f v1/vt1 v2/vt2 v3/vt3 ...

   Definition durch Angabe einer Liste von 3-Tupeln bestehend aus
   einem Vertex, einer Texturkoordinate und einer Normale
   f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3 ...

   Texturkoordinaten k¨nnen auch weggelassen werden
                      o
   f v1//vn1 v2//vn2 v3//vn3 ...




    Johannes Diemke             OpenGL mit Java    WiSe 2010 / 2011   7/19
Wavefront OBJ Format


g-Anweisung
   Dient der Gruppierung von Polygonen
   Alle auf eine Gruppen-Definition folgenden Polygone sind Teil der
   Gruppe
   g group_name1 [group_name2] ...

mtllib-Anweisung
   Gibt die zu verwendenen externen MTL-Dateien (.mtl) an
   Material Libraries definieren durch usemtl nutzbare Materialien
   mtllib filename1 [filename2] ...




   Johannes Diemke             OpenGL mit Java       WiSe 2010 / 2011   8/19
Wavefront OBJ Format


usemtl-Anweisung
   Bestimmt das f¨r nachfolgende Polygone zu nutzende Material
                 u
   Material wird in externer MTL-Datei (.mtl) definiert
   usemtl name

s-Anweisung
   Definiert die zu verwendene Smoothing-Gruppe
   Dient der Gruppierung von Polygonen zur interpolierten
   Normalenberechnung
   Wird nur bei Abwesenheit von Vertex-Normalen ber¨cksichtigt
                                                   u
   Ist das Argument off oder 0 wird keine Smoothing-Gruppe
   verwendet
   s number|off|0

   Johannes Diemke           OpenGL mit Java         WiSe 2010 / 2011   9/19
Wavefront OBJ Format


Wavefront MTL Dateien
   Material Library
   Einfache ASCII Textdatei (.mtl)
   Definiert aus OBJ-Dateien referenzierbare Materialien
         Materialfarben
         Transparenz
         Texturen
   Ber¨cksichtigt keine neueren Entwicklungen
      u
   Aktuelle Software erg¨nzt das urspr¨ngliche Format
                        a             u
         Specular Maps
         Parallax Maps
   Vollst¨ndige Spezifikation:
         a
   http://local.wasp.uwa.edu.au/~pbourke/dataformats/mtl/

   Johannes Diemke          OpenGL mit Java         WiSe 2010 / 2011   10/19
Wavefront OBJ Format


newmtl-Anweisung
   Beginnt eine neue Materialdefinition
   ¨
   Uber den Namen kann das Material sp¨ter referenziert werden
                                       a
   newmtl material_name

Ka-Anweisung
   Definiert ambiente Materialfarbe
   Ka r g b

Kd-Anweisung
   Definiert diffuse Materialfarbe
   Kd r g b

Ks-Anweisung
   Definiert spiegelnde Materialfarbe
   Ks r g b

   Johannes Diemke           OpenGL mit Java       WiSe 2010 / 2011   11/19
Wavefront OBJ Format


Ns-Anweisung
   Definiert spiegelnden Exponenten s
   Ns s

d-Anweisung und Tr-Anweisung
   Definieren beide die Transparenz
   d transparency

map-Anweisung und bump-Anweisung
   Definiert zu verwendene Texturen
   map_Ka lenna.tga          #   the ambient texture map
   map_Kd lenna.tga          #   the diffuse texture map
   map_Ks lenna.tga          #   the specular texture map
   map_d lenna_alpha.tga     #   the alpha texture map
   map_bump lenna_bump.tga   #   the bump map
   bump lenna_bump.tga       #   some implementations use "bump"

   Johannes Diemke               OpenGL mit Java           WiSe 2010 / 2011   12/19
Wavefront OBJ Format


Beispiel: exd9xl a.obj
# Wavefront OBJ file
# Converted by the DEEP Exploration Deep Exploration 5.5 5.5.3.2642 Release
# Right Hemisphere, LTD
# http://www.righthemisphere.com/
mtllib exd9xl_a.mtl
# object cockpitr
g cockpitr
v -0.74229 1.30720 1.01731
v -0.75097 1.28629 1.01731
v -0.74229 1.30720 1.05808

...

# 1087 verticies
vt 0.05055 0.91097
vt 0.05055 0.95106
vt 0.05453 0.91097

...

      Johannes Diemke            OpenGL mit Java            WiSe 2010 / 2011   13/19
Wavefront OBJ Format


Beispiel: exd9xl a.obj (Forts.)

...

# 427 texture verticies
vn 0.96364 0.00865 -0.26707
vn 0.99695 -0.00076 0.07800
vn 0.68719 -0.67580 -0.26659

...

# 1027 normals
usemtl Material_4
f 1/1/1 3/2/2 2/3/3
f 4/4/4 2/3/3 3/2/2
f 2/3/3 4/4/4 5/5/5

...



      Johannes Diemke          OpenGL mit Java   WiSe 2010 / 2011   14/19
Wavefront OBJ Format


Beispiel: exd9xl a.mtl
# Wavefront material file
# Converted by the DEEP Exploration   Deep Exploration 5.5 5.5.3.2642 Release
# Right Hemisphere, LTD
# http://www.righthemisphere.com/
newmtl Material_4
Ka 1 1 1
Kd 1 1 1
Ks 0.498039 0.498039 0.498039
illum 2
Ns 119.428
map_Kd exdx.png
map_bump
bump
map_opacity
map_d
refl
map_kS
map_kA
map_Ns

     Johannes Diemke             OpenGL mit Java             WiSe 2010 / 2011   15/19
Wavefront OBJ Format


Beispiel: exd9xl a.obj




    Johannes Diemke      OpenGL mit Java   WiSe 2010 / 2011   16/19
Wavefront OBJ Format


Implementierung eines OBJ Loaders
   H¨ufig wird nur eine Teilmenge des OBJ Standards implementiert
    a
         I. d. R. nur Polygonale Objekte
         Material & Texturen
         Keine Freiform-Objekte
   Zur Darstellung entsprechende Datenstrukturen aufbauen
         Werden Gruppen, Smoothing-Groups oder Materialien ben¨tigt?
                                                              o
         Naive Implementierung
                F¨r jedes Dreieck Material & Textur setzen
                 u
                Viele State Changes → Performance-Problem
         Gruppierung nach verwendetem Material
                Alle Dreiecke mit gleichem Material in Material-Gruppe
                Material-Gruppen mit Vertex-Arrays oder VBOs rendern
                Minimiert die Anzahl der State Changes → Performance-Gewinn
         Materialien nutzen teilweise gleiche Texturen → Wiederverwendung

   Johannes Diemke                OpenGL mit Java            WiSe 2010 / 2011   17/19
Literatur


 Dave Shreiner
 OpenGL Programming Guide
 http://www.opengl-redbook.com/
 Richard S. Wright, Benjamin Lipchak und Nicholas Haemel
 OpenGL SuperBibel
 http://www.starstonesoftware.com/OpenGL/
 Randi J. Rost
 OpenGL Shading Language
 http://www.3dshaders.com/
 Tomas Akenine-M¨ller, Eric Haines und Naty Hoffman
                o
 Real-Time Rendering
 http://www.realtimerendering.com/

   Johannes Diemke           OpenGL mit Java      WiSe 2010 / 2011   18/19
Literatur


 Edward Angel
 Interactive Computer Graphics
 http://www.cs.unm.edu/˜angel/
 Gerald Farin und Dianne Hansford
 Practical Linear Algebra
 http://www.farinhansford.com/books/pla/
 Fletcher Dunn und Ian Parberry
 3D Math Primer for Graphics and Game Development
 www.gamemath.com/




   Johannes Diemke          OpenGL mit Java   WiSe 2010 / 2011   19/19

Más contenido relacionado

Más de Johannes Diemke

Pfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen PotentialfeldernPfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen PotentialfeldernJohannes Diemke
 
2010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt052010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt05Johannes Diemke
 
2010-JOGL-05-Transformationen
2010-JOGL-05-Transformationen2010-JOGL-05-Transformationen
2010-JOGL-05-TransformationenJohannes Diemke
 
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-RemovalJohannes Diemke
 
2010-JOGL-02-Einfuehrung
2010-JOGL-02-Einfuehrung2010-JOGL-02-Einfuehrung
2010-JOGL-02-EinfuehrungJohannes Diemke
 
2010-JOGL-01-Organisation
2010-JOGL-01-Organisation2010-JOGL-01-Organisation
2010-JOGL-01-OrganisationJohannes Diemke
 
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)Johannes Diemke
 
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)Johannes Diemke
 
Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)Johannes Diemke
 
Theory Exploration (Vortrag)
Theory Exploration (Vortrag)Theory Exploration (Vortrag)
Theory Exploration (Vortrag)Johannes Diemke
 
Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)Johannes Diemke
 
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010
Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010Johannes Diemke
 
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)Johannes Diemke
 
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: ScrumAgile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: ScrumJohannes Diemke
 
Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)Johannes Diemke
 

Más de Johannes Diemke (16)

Pfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen PotentialfeldernPfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen Potentialfeldern
 
2010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt052010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt05
 
2010-JOGL-05-Transformationen
2010-JOGL-05-Transformationen2010-JOGL-05-Transformationen
2010-JOGL-05-Transformationen
 
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
 
2010-JOGL-02-Einfuehrung
2010-JOGL-02-Einfuehrung2010-JOGL-02-Einfuehrung
2010-JOGL-02-Einfuehrung
 
2010-JOGL-01-Organisation
2010-JOGL-01-Organisation2010-JOGL-01-Organisation
2010-JOGL-01-Organisation
 
Boost C++ Libraries
Boost C++ LibrariesBoost C++ Libraries
Boost C++ Libraries
 
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
 
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
 
Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)
 
Theory Exploration (Vortrag)
Theory Exploration (Vortrag)Theory Exploration (Vortrag)
Theory Exploration (Vortrag)
 
Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)
 
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010
Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010
 
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
 
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: ScrumAgile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
 
Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)
 

2010-JOGL-10-Wavefront-OBJ

  • 1. CARL VON OSSIETZKY Wavefront OBJ Format Johannes Diemke ¨ Ubung im Modul OpenGL mit Java Wintersemester 2010/2011
  • 2. Wavefront OBJ Format Motivation 3D-Modelle bestehen i. d. R. aus Tausenden von Dreiecken H¨ndische Definition im Quellcode nahezu unm¨glich a o Spezielle 3D Modellierungssoftware notwendig Im Bereich der Computerspiele ist 3ds Max beliebt Blizzard Entertainment Crytek Electronic Arts Remedy Entertainment ... Blender stellt eine Open Source Alternative dar Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 2/19
  • 3. Wavefront OBJ Format Wavefront OBJ Dateien Wavefront’s Advanced Visualizer Format Definieren Geometrie und dessen Eigenschaften Polygonale Objekte Freiform-Objekte (Kurven und Fl¨chen) a Material inkl. Texturen Animation wird nicht unterst¨tzt u Existiert als ASCII Format (.obj) und bin¨res Format (.mod) a Von nahezu allen Programmen unterst¨tzt u Mitlerweile aber obsolet → COLLADA Vollst¨ndige Spezifikation: a http://local.wasp.uwa.edu.au/~pbourke/dataformats/obj/ Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 3/19
  • 4. Wavefront OBJ Format Das ASCII Dateiformat (.obj) Einfache ASCII Textdatei Menschenlesbar Theoretisch im Texteditor editierbar Enth¨lt Anweisungen zur Definition von a Vertices Texturkoordinaten Normalen Faces Material-Gruppen Polygon-Gruppen Benannte Objekte Smoothing Groups Freiform-Objekte Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 4/19
  • 5. Wavefront OBJ Format #-Anweisung Zeilen die mit einem Rautenzeichen beginnen sind Kommentare # a comment line v-Anweisung Definiert einen Vertex Als Argumente folgen die x-,y - und z-Komponente Werden fortlaufend, beginnend bei eins, durchnummeriert v x y z vt-Anweisung Definiert eine Texturkoordinate Als Argumente folgen die u-,v - und optionale w -Komponente Werden fortlaufend, beginnend bei eins, durchnummeriert vt u v [w] Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 5/19
  • 6. Wavefront OBJ Format vn-Anweisung Definiert eine Normale Als Argumente folgen die x-,y - und z-Komponente Werden fortlaufend, beginnend bei eins, durchnummeriert vn x y z f-Anweisung Definiert Polygon uber eine Liste von n-Tupeln aus Indizes auf ¨ Vertices Texturkoordinaten (optional) Normalen (optional) Vertices werden standardm¨ßig CCW angegeben a Definition durch Angabe einer Liste von Vertices f v1 v2 v3 v4 ... Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 6/19
  • 7. Wavefront OBJ Format f-Anweisung (Forts.) Definition durch Angabe einer Liste von 2-Tupeln bestehend aus einem Vertex und einer Texturkoordinate f v1/vt1 v2/vt2 v3/vt3 ... Definition durch Angabe einer Liste von 3-Tupeln bestehend aus einem Vertex, einer Texturkoordinate und einer Normale f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3 ... Texturkoordinaten k¨nnen auch weggelassen werden o f v1//vn1 v2//vn2 v3//vn3 ... Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 7/19
  • 8. Wavefront OBJ Format g-Anweisung Dient der Gruppierung von Polygonen Alle auf eine Gruppen-Definition folgenden Polygone sind Teil der Gruppe g group_name1 [group_name2] ... mtllib-Anweisung Gibt die zu verwendenen externen MTL-Dateien (.mtl) an Material Libraries definieren durch usemtl nutzbare Materialien mtllib filename1 [filename2] ... Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 8/19
  • 9. Wavefront OBJ Format usemtl-Anweisung Bestimmt das f¨r nachfolgende Polygone zu nutzende Material u Material wird in externer MTL-Datei (.mtl) definiert usemtl name s-Anweisung Definiert die zu verwendene Smoothing-Gruppe Dient der Gruppierung von Polygonen zur interpolierten Normalenberechnung Wird nur bei Abwesenheit von Vertex-Normalen ber¨cksichtigt u Ist das Argument off oder 0 wird keine Smoothing-Gruppe verwendet s number|off|0 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 9/19
  • 10. Wavefront OBJ Format Wavefront MTL Dateien Material Library Einfache ASCII Textdatei (.mtl) Definiert aus OBJ-Dateien referenzierbare Materialien Materialfarben Transparenz Texturen Ber¨cksichtigt keine neueren Entwicklungen u Aktuelle Software erg¨nzt das urspr¨ngliche Format a u Specular Maps Parallax Maps Vollst¨ndige Spezifikation: a http://local.wasp.uwa.edu.au/~pbourke/dataformats/mtl/ Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 10/19
  • 11. Wavefront OBJ Format newmtl-Anweisung Beginnt eine neue Materialdefinition ¨ Uber den Namen kann das Material sp¨ter referenziert werden a newmtl material_name Ka-Anweisung Definiert ambiente Materialfarbe Ka r g b Kd-Anweisung Definiert diffuse Materialfarbe Kd r g b Ks-Anweisung Definiert spiegelnde Materialfarbe Ks r g b Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 11/19
  • 12. Wavefront OBJ Format Ns-Anweisung Definiert spiegelnden Exponenten s Ns s d-Anweisung und Tr-Anweisung Definieren beide die Transparenz d transparency map-Anweisung und bump-Anweisung Definiert zu verwendene Texturen map_Ka lenna.tga # the ambient texture map map_Kd lenna.tga # the diffuse texture map map_Ks lenna.tga # the specular texture map map_d lenna_alpha.tga # the alpha texture map map_bump lenna_bump.tga # the bump map bump lenna_bump.tga # some implementations use "bump" Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 12/19
  • 13. Wavefront OBJ Format Beispiel: exd9xl a.obj # Wavefront OBJ file # Converted by the DEEP Exploration Deep Exploration 5.5 5.5.3.2642 Release # Right Hemisphere, LTD # http://www.righthemisphere.com/ mtllib exd9xl_a.mtl # object cockpitr g cockpitr v -0.74229 1.30720 1.01731 v -0.75097 1.28629 1.01731 v -0.74229 1.30720 1.05808 ... # 1087 verticies vt 0.05055 0.91097 vt 0.05055 0.95106 vt 0.05453 0.91097 ... Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/19
  • 14. Wavefront OBJ Format Beispiel: exd9xl a.obj (Forts.) ... # 427 texture verticies vn 0.96364 0.00865 -0.26707 vn 0.99695 -0.00076 0.07800 vn 0.68719 -0.67580 -0.26659 ... # 1027 normals usemtl Material_4 f 1/1/1 3/2/2 2/3/3 f 4/4/4 2/3/3 3/2/2 f 2/3/3 4/4/4 5/5/5 ... Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 14/19
  • 15. Wavefront OBJ Format Beispiel: exd9xl a.mtl # Wavefront material file # Converted by the DEEP Exploration Deep Exploration 5.5 5.5.3.2642 Release # Right Hemisphere, LTD # http://www.righthemisphere.com/ newmtl Material_4 Ka 1 1 1 Kd 1 1 1 Ks 0.498039 0.498039 0.498039 illum 2 Ns 119.428 map_Kd exdx.png map_bump bump map_opacity map_d refl map_kS map_kA map_Ns Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 15/19
  • 16. Wavefront OBJ Format Beispiel: exd9xl a.obj Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 16/19
  • 17. Wavefront OBJ Format Implementierung eines OBJ Loaders H¨ufig wird nur eine Teilmenge des OBJ Standards implementiert a I. d. R. nur Polygonale Objekte Material & Texturen Keine Freiform-Objekte Zur Darstellung entsprechende Datenstrukturen aufbauen Werden Gruppen, Smoothing-Groups oder Materialien ben¨tigt? o Naive Implementierung F¨r jedes Dreieck Material & Textur setzen u Viele State Changes → Performance-Problem Gruppierung nach verwendetem Material Alle Dreiecke mit gleichem Material in Material-Gruppe Material-Gruppen mit Vertex-Arrays oder VBOs rendern Minimiert die Anzahl der State Changes → Performance-Gewinn Materialien nutzen teilweise gleiche Texturen → Wiederverwendung Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 17/19
  • 18. Literatur Dave Shreiner OpenGL Programming Guide http://www.opengl-redbook.com/ Richard S. Wright, Benjamin Lipchak und Nicholas Haemel OpenGL SuperBibel http://www.starstonesoftware.com/OpenGL/ Randi J. Rost OpenGL Shading Language http://www.3dshaders.com/ Tomas Akenine-M¨ller, Eric Haines und Naty Hoffman o Real-Time Rendering http://www.realtimerendering.com/ Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 18/19
  • 19. Literatur Edward Angel Interactive Computer Graphics http://www.cs.unm.edu/˜angel/ Gerald Farin und Dianne Hansford Practical Linear Algebra http://www.farinhansford.com/books/pla/ Fletcher Dunn und Ian Parberry 3D Math Primer for Graphics and Game Development www.gamemath.com/ Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 19/19