Your SlideShare is downloading. ×
2010-JOGL-10-Wavefront-OBJ
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

2010-JOGL-10-Wavefront-OBJ

363
views

Published on


0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
363
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. CARL VONOSSIETZKY Wavefront OBJ Format Johannes Diemke ¨ Ubung im Modul OpenGL mit Java Wintersemester 2010/2011
  • 2. Wavefront OBJ FormatMotivation 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 FormatWavefront 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 FormatDas 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 linev-Anweisung Definiert einen Vertex Als Argumente folgen die x-,y - und z-Komponente Werden fortlaufend, beginnend bei eins, durchnummeriert v x y zvt-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 Formatvn-Anweisung Definiert eine Normale Als Argumente folgen die x-,y - und z-Komponente Werden fortlaufend, beginnend bei eins, durchnummeriert vn x y zf-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 Formatf-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 Formatg-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 Formatusemtl-Anweisung Bestimmt das f¨r nachfolgende Polygone zu nutzende Material u Material wird in externer MTL-Datei (.mtl) definiert usemtl names-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 FormatWavefront 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 Formatnewmtl-Anweisung Beginnt eine neue Materialdefinition ¨ Uber den Namen kann das Material sp¨ter referenziert werden a newmtl material_nameKa-Anweisung Definiert ambiente Materialfarbe Ka r g bKd-Anweisung Definiert diffuse Materialfarbe Kd r g bKs-Anweisung Definiert spiegelnde Materialfarbe Ks r g b Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 11/19
  • 12. Wavefront OBJ FormatNs-Anweisung Definiert spiegelnden Exponenten s Ns sd-Anweisung und Tr-Anweisung Definieren beide die Transparenz d transparencymap-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 FormatBeispiel: 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 cockpitrg cockpitrv -0.74229 1.30720 1.01731v -0.75097 1.28629 1.01731v -0.74229 1.30720 1.05808...# 1087 verticiesvt 0.05055 0.91097vt 0.05055 0.95106vt 0.05453 0.91097... Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/19
  • 14. Wavefront OBJ FormatBeispiel: exd9xl a.obj (Forts.)...# 427 texture verticiesvn 0.96364 0.00865 -0.26707vn 0.99695 -0.00076 0.07800vn 0.68719 -0.67580 -0.26659...# 1027 normalsusemtl Material_4f 1/1/1 3/2/2 2/3/3f 4/4/4 2/3/3 3/2/2f 2/3/3 4/4/4 5/5/5... Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 14/19
  • 15. Wavefront OBJ FormatBeispiel: 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_4Ka 1 1 1Kd 1 1 1Ks 0.498039 0.498039 0.498039illum 2Ns 119.428map_Kd exdx.pngmap_bumpbumpmap_opacitymap_dreflmap_kSmap_kAmap_Ns Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 15/19
  • 16. Wavefront OBJ FormatBeispiel: exd9xl a.obj Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 16/19
  • 17. Wavefront OBJ FormatImplementierung 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