Theory Exploration                               Johannes Diemke                   Carl von Ossietzky Universit¨t Oldenbur...
3.1   AnimationDie Animation ist ein wichtiges Thema in der Computergrafik. Eine h¨ufige   aBedingung, die an Animationen ge...
3.3   Video-TexturenDie Photek 3D Engine bietet mit Video-Texturen die M¨glichkeit, kleinere Film-                        ...
der Abstand eines jeden zu zeichnenden Fragments mit der Tiefeninformation inder Depth-Map verglichen werden. Ist der tats...
Abb. 4. Polygonisiertes Iso-Surface mehrerer Metaballs   Das Iso-Surface eines einzelnen Metaballs, welches durch den Marc...
Erkl¨rung    aIch versichere, die vorliegende Ausarbeitung selbstst¨ndig und nur unter Benut-                             ...
Nächste SlideShare
Wird geladen in …5
×

Theory Exploration (Ausarbeitung)

595 Aufrufe

Veröffentlicht am

0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
595
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
1
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Theory Exploration (Ausarbeitung)

  1. 1. Theory Exploration Johannes Diemke Carl von Ossietzky Universit¨t Oldenburg a johannes.diemke@informatik.uni-oldenburg.de Zusammenfassung. Theory Exploration ist ein Abschlussprojekt im Rahmen des Moduls OpenGL mit Java im Sommersemster 2007. Basie- rend auf der f¨r dieses Modul entwickelten Photek 3D Engine ist eine u aus sechs, in sich geschlossenen Szenen bestehende, selbstlaufende und nicht interaktive Demonstration entstanden, welche einfache und h¨here o Techniken der 3D Computergrafik aggregiert. Die folgende Ausarbeitung beschreibt grundlegende Konzepte und einige der verwendeten Techniken dieser Demonstration.1 EinleitungTheory Exploration ist eine in Java entwickelte, aus sechs in sich geschlosse-nen Szenen bestehende, selbstlaufende und nicht interaktive Computergrafik-Demonstration. Als Bibliothek macht sie sich OpenGL in Form der JOGL-Bindings zu nutze, mit denen der volle OpenGL-Sprachumfang verf¨gbar ge- umacht wird. Die Szenen folgen einem festen sequenziellen Ablauf und werdendurch Transitions-Effekte ineinander ubergeblendet. Alle Szenen und Effekte ¨der Demonstration laufen synchronisiert zu einem Musikst¨ck ab, welches Klaus uSpang[1] zu diesem Zweck verf¨gbar gemacht hat. Prim¨res Ziel war es, meh- u arere Techniken aus der 3D Computergrafik aggregiert zu mehreren Szenen ineiner einzigen Applikation zu integrieren und durch den gezielten Einsatz vonTransitions-Effekten zu erreichen, dass diese nicht mehr isoliert, sondern viel-mehr als ein Ganzes wahrgenommen werden. Ein Schwerpunkt neben der reintechnischen Umsetzung war es also auch, ein ¨sthetisches Zusammenspiel der aeinzelnen Elemente zu erreichen.2 Starten der ApplikationDie Hauptklasse ist in der Datei TheoryExploration.java in dem Package pho-tek.demos.exploration anzutreffen. Aufgrund des hohen Speicherbedarfs mussdie Applikation mit der Option -Xmx256M der virtuellen Maschine gestartet wer-den.3 Verwendete TechnikenIm Folgenden sollen einige der grundlegenden und h¨heren Techniken, die in oTheory Exploration zur Anwendung kommen, diskutiert werden.
  2. 2. 3.1 AnimationDie Animation ist ein wichtiges Thema in der Computergrafik. Eine h¨ufige aBedingung, die an Animationen gestellt wird, ist, dass diese auf jedem Rechen-system in gleicher Geschwindigkeit ablaufen. Zu diesem Zweck f¨hrt Theory uExploration ein virtuelles Zeitsystem ein. Formal betrachtet ist eine Animationeine Abbildung (bzw. Funktion), die jedem Zeitpunkt ein Frame der Animati-on zuordnet. Wenn T ime die Menge aller Zeitpunkte bezeichnet, so kann eineAnimation wie folgt beschrieben werden: f : T IM E −→ F RAM E (1)3.2 Billboarding und PartikelsystemeDas Arbeiten mit geometrischen Primitiven ist aus der Sicht der GPU eine kost-spielige Operation. Da schon relativ einfache 3D-Modelle mehrere tausend Pri-mitiven besitzen k¨nnen, ist es in einigen F¨llen sinnvoll, andere Methoden zur o aVisualisierung zu verwenden. Eine beliebte Technik ist das Ersetzen des 3D-Modells durch ein texturiertes Rechteck, dessen Textur ein zweidimensonalesAbbild des 3D-Modells darstellt. Auf diese Weise k¨nnen Modelle aus mehreren otausend Primitiven mit nur zwei texturierten Dreiecken ersetzt werden. AuchTheory Exploration nutzt diese als Billboarding bekannte Technik zur Darstel-lung von Partikeln.[2] Abbildung 1 zeigt den Einsatz eines Partikelsystems inTheory Exploration. Abb. 1. Partikelsystem in Theory Exploration
  3. 3. 3.3 Video-TexturenDie Photek 3D Engine bietet mit Video-Texturen die M¨glichkeit, kleinere Film- osequenzen und Video-Clips in OpenGL-Texturen zu rendern, um mit diesen an-schließend Geometrie zu texturieren. In Theory Exploration wird dies genutzt,um eine kleine Film-Szene abzuspielen. Abbildung 2 zeigt die Film-Szene ausTheory Exploration. Abb. 2. Video-Texturen im Einsatz3.4 Shadow-Depth-MapsTheory Exploration nutzt f¨r die Darstellung von Schatten-Effekten Shadow- uDepth-Maps. Bei den Shadow-Depth-Maps wird der Z-Buffer und das projektiveTexture-Mapping verwendet um Schatten zu rendern. Bei dieser Technik wird dieSzene so transformiert, dass die Kamera in die gleiche Position wie das entspre-chende Spotlight verschoben wird, welches f¨r den Schattenwurf verantwortlich uist. Aus dieser Einstellung wird daraufhin die Szene aus der Sicht der Licht-quelle gerendert. Die so erhaltenen Tiefeninformationen werden anschließend ineine Depth-Map kopiert. Diese Textur wird dann beim Rendering des fertigenBildes wiederverwendet, indem sie mit der OpenGL-Textur-Kooridnaten- Gene-rierung so auf die Szene projiziert wird, dass die Texturkoordinaten eines Punk-tes den Vertexkoordinaten des Punktes bez¨glich der Lichtquellen entsprechen. uAnschaulich gesprochen, wird also die Depth-Map aus der Sicht der Lichtquel-le auf die Szene gelegt. Mit der entsprechenden OpenGL-Extension kann nun
  4. 4. der Abstand eines jeden zu zeichnenden Fragments mit der Tiefeninformation inder Depth-Map verglichen werden. Ist der tats¨chliche Abstand r des Fragments agr¨ßer als der gespeicherte Wert des Texels in der Depth-Map, so liegt der be- otrachtete Pixel hinter einer Oberfl¨che, die von der Lichtquelle aus sichtbar ist. aDies bedeutet, dass er im Schatten liegt.[3] Ein Vorteil dieses Verfahrens ist, dass der Aufwand nicht von der Kom-plexit¨t der Szene abh¨ngt wie es z.B. bei dem Shadow-Volume-Verfahren der a aFall ist. Dieses ben¨tigt n¨mlich zus¨tzlichen Rechen- und Speicheraufwand f¨r o a a uAdjazenz-Informationen der Geometrie und ist somit unmittelbar von der Kom-plexit¨t der Szene abh¨ngig.[4] a a Abbildung 3 zeigt den Einsatz von Shadow-Depth-Maps in Theory Explora-tion. Abb. 3. Shadow-Depth-Maps in Theory Exploration3.5 Surface ReconstructionMit dem Marching Cubes“ Algorithmus lassen sich polygonale Repr¨sentationen a ” ¨eines Iso-Surfaces erzeugen. Dabei wird genaugenommen nur eine der Aquipo-tentialfl¨chen eines diskreten dreidimensionalen Skalarfeldes polygonisiert.[5] In adem Artikel Polygonising a scalar field“ beschreibt Paul Bourke detailiert die ”Funktionsweise des Marching Cubes“ Algortihmus.[6] ” In Theory Exploration werden mit dem Marching Cubes“ Algorithmus so- ”genannte Metaballs[7] gerendert. In Abbildung 4 sind die Metaballs aus einerSzenen der Demonstration zu sehen.
  5. 5. Abb. 4. Polygonisiertes Iso-Surface mehrerer Metaballs Das Iso-Surface eines einzelnen Metaballs, welches durch den Marching CubesAlgorithmus polygonisiert werden soll, ist durch die folgende Funktion gegeben: r2 F (x, y, z) = (2) (x − a)2 + (y − b)2 + (z − c)2 Wobei r den Radius darstellt, wenn von einer mit F (x, y, z) = 1 definierten¨Aquipotentialfl¨che ausgegangen wird. Mit dem Marching Cubes Algortihmus al¨sst sich nun eine polygonale Repr¨sentation dieser Funktion erzeugen. Be- a a o ¨n¨tigt werden nun noch die orthogonal zu dieser Aquipotentialfl¨che stehende aNormalen-Vektoren. Diese sind aber genau durch den Gradienten der verwen-deten Funktion des Iso-Surface bestimmt. Da der Gradient die Richtung desgr¨ßten Anstiegs darstellt zeigen die durch ihn bestimmten Normalen-Vektoren o ¨jedoch noch in das Innere der Aquipotentialfl¨che, so dass dies durch Negation ades Gradienten korrigiert werden muß: N (x, y, z) = − F (x, y, z) (3) ∂F ∂F ∂F = −( , , ) (4) ∂x ∂y ∂z  2  −2∗r ∗(x−a) 2 3 2 2  ((x−a)−2∗r2 ∗(y−b) +(y−b) +(z−c) )  = −  ((x−a)2 +(y−b)3 +(z−c)2 )2    (5) 2 −2∗r ∗(z−c) ((x−a)2 +(y−b)3 +(z−c)2 )2
  6. 6. Erkl¨rung aIch versichere, die vorliegende Ausarbeitung selbstst¨ndig und nur unter Benut- azung der angegebenen Hilfsmittel angefertigt zu haben.Literatur1. Klaus Spang: keith303 audio resources. http://www.keith303.de/ (2007)2. Ant´nio Ramires Fernandes: Billboarding Tutorial. http://www.lighthouse3d. o com/opengl/billboarding/ (2001)3. Cass Everitt: Shadow Mapping. http://developer.nvidia.com/object/shadow_ mapping.html (2001)4. Carsten Dachsbacher: Shadow Depth Maps mit OpenGL. http://www-sop.inria. fr/reves/Carsten.Dachsbacher (2002)5. Wikipedia: Marching Cubes. http://en.wikipedia.org/wiki/Marching_cubes (2007)6. Paul Bourke: Polygonising a scalar field. http://local.wasp.uwa.edu.au/ ~pbourke/geometry/polygonise/ (1994)7. Andreas J¨nsson: Fast metaballs. http://www.angelcode.com/dev/metaballs/ o metaballs.asp (2001)

×