SlideShare uma empresa Scribd logo
1 de 6
Baixar para ler offline
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   Einleitung
Theory 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-
                                                                     u
macht wird. Die Szenen folgen einem festen sequenziellen Ablauf und werden
durch Transitions-Effekte ineinander ubergeblendet. Alle Szenen und Effekte
                                       ¨
der Demonstration laufen synchronisiert zu einem Musikst¨ck ab, welches Klaus
                                                        u
Spang[1] zu diesem Zweck verf¨gbar gemacht hat. Prim¨res Ziel war es, meh-
                               u                       a
rere Techniken aus der 3D Computergrafik aggregiert zu mehreren Szenen in
einer einzigen Applikation zu integrieren und durch den gezielten Einsatz von
Transitions-Effekten zu erreichen, dass diese nicht mehr isoliert, sondern viel-
mehr als ein Ganzes wahrgenommen werden. Ein Schwerpunkt neben der rein
technischen Umsetzung war es also auch, ein ¨sthetisches Zusammenspiel der
                                               a
einzelnen Elemente zu erreichen.

2   Starten der Applikation
Die Hauptklasse ist in der Datei TheoryExploration.java in dem Package pho-
tek.demos.exploration anzutreffen. Aufgrund des hohen Speicherbedarfs muss
die Applikation mit der Option -Xmx256M der virtuellen Maschine gestartet wer-
den.

3   Verwendete Techniken
Im Folgenden sollen einige der grundlegenden und h¨heren Techniken, die in
                                                  o
Theory Exploration zur Anwendung kommen, diskutiert werden.
3.1   Animation

Die Animation ist ein wichtiges Thema in der Computergrafik. Eine h¨ufige   a
Bedingung, die an Animationen gestellt wird, ist, dass diese auf jedem Rechen-
system in gleicher Geschwindigkeit ablaufen. Zu diesem Zweck f¨hrt Theory
                                                                    u
Exploration ein virtuelles Zeitsystem ein. Formal betrachtet ist eine Animation
eine Abbildung (bzw. Funktion), die jedem Zeitpunkt ein Frame der Animati-
on zuordnet. Wenn T ime die Menge aller Zeitpunkte bezeichnet, so kann eine
Animation wie folgt beschrieben werden:

                           f : T IM E −→ F RAM E                            (1)


3.2   Billboarding und Partikelsysteme

Das 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                         a
Visualisierung zu verwenden. Eine beliebte Technik ist das Ersetzen des 3D-
Modells durch ein texturiertes Rechteck, dessen Textur ein zweidimensonales
Abbild des 3D-Modells darstellt. Auf diese Weise k¨nnen Modelle aus mehreren
                                                    o
tausend Primitiven mit nur zwei texturierten Dreiecken ersetzt werden. Auch
Theory Exploration nutzt diese als Billboarding bekannte Technik zur Darstel-
lung von Partikeln.[2] Abbildung 1 zeigt den Einsatz eines Partikelsystems in
Theory Exploration.




                  Abb. 1. Partikelsystem in Theory Exploration
3.3   Video-Texturen
Die Photek 3D Engine bietet mit Video-Texturen die M¨glichkeit, kleinere Film-
                                                    o
sequenzen 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 aus
Theory Exploration.




                       Abb. 2. Video-Texturen im Einsatz




3.4   Shadow-Depth-Maps
Theory Exploration nutzt f¨r die Darstellung von Schatten-Effekten Shadow-
                            u
Depth-Maps. Bei den Shadow-Depth-Maps wird der Z-Buffer und das projektive
Texture-Mapping verwendet um Schatten zu rendern. Bei dieser Technik wird die
Szene so transformiert, dass die Kamera in die gleiche Position wie das entspre-
chende Spotlight verschoben wird, welches f¨r den Schattenwurf verantwortlich
                                              u
ist. Aus dieser Einstellung wird daraufhin die Szene aus der Sicht der Licht-
quelle gerendert. Die so erhaltenen Tiefeninformationen werden anschließend in
eine Depth-Map kopiert. Diese Textur wird dann beim Rendering des fertigen
Bildes 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.
                                             u
Anschaulich gesprochen, wird also die Depth-Map aus der Sicht der Lichtquel-
le auf die Szene gelegt. Mit der entsprechenden OpenGL-Extension kann nun
der Abstand eines jeden zu zeichnenden Fragments mit der Tiefeninformation in
der Depth-Map verglichen werden. Ist der tats¨chliche Abstand r des Fragments
                                               a
gr¨ßer als der gespeicherte Wert des Texels in der Depth-Map, so liegt der be-
  o
trachtete Pixel hinter einer Ober߬che, die von der Lichtquelle aus sichtbar ist.
                                   a
Dies 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                a
Fall ist. Dieses ben¨tigt n¨mlich zus¨tzlichen Rechen- und Speicheraufwand f¨r
                    o      a         a                                        u
Adjazenz-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 Exploration




3.5   Surface Reconstruction
Mit dem Marching Cubes“ Algorithmus lassen sich polygonale Repr¨sentationen
                                                                   a
          ”                                                             ¨
eines Iso-Surfaces erzeugen. Dabei wird genaugenommen nur eine der Aquipo-
tential߬chen eines diskreten dreidimensionalen Skalarfeldes polygonisiert.[5] In
        a
dem 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 einer
Szenen der Demonstration zu sehen.
Abb. 4. Polygonisiertes Iso-Surface mehrerer Metaballs


   Das Iso-Surface eines einzelnen Metaballs, welches durch den Marching Cubes
Algorithmus 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
¨
Aquipotential߬che ausgegangen wird. Mit dem Marching Cubes Algortihmus
               a
l¨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
                                                                   a
Normalen-Vektoren. Diese sind aber genau durch den Gradienten der verwen-
deten Funktion des Iso-Surface bestimmt. Da der Gradient die Richtung des
gr¨ßten Anstiegs darstellt zeigen die durch ihn bestimmten Normalen-Vektoren
   o
                                ¨
jedoch noch in das Innere der Aquipotential߬che, so dass dies durch Negation
                                              a
des 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
Erkl¨rung
    a

Ich versichere, die vorliegende Ausarbeitung selbstst¨ndig und nur unter Benut-
                                                     a
zung der angegebenen Hilfsmittel angefertigt zu haben.


Literatur
1. 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)

Mais conteúdo relacionado

Mais de Johannes Diemke

Pfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen PotentialfeldernPfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen PotentialfeldernJohannes Diemke
 
2010-JOGL-11-Toon-Shading
2010-JOGL-11-Toon-Shading2010-JOGL-11-Toon-Shading
2010-JOGL-11-Toon-ShadingJohannes Diemke
 
2010-JOGL-10-Wavefront-OBJ
2010-JOGL-10-Wavefront-OBJ2010-JOGL-10-Wavefront-OBJ
2010-JOGL-10-Wavefront-OBJJohannes Diemke
 
2010-JOGL-09-Texture-Mapping
2010-JOGL-09-Texture-Mapping2010-JOGL-09-Texture-Mapping
2010-JOGL-09-Texture-MappingJohannes Diemke
 
2010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt052010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt05Johannes Diemke
 
2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-Material2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-MaterialJohannes 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
 
Software Produktlinien: Einführung und Überblick (Vortrag)
Software Produktlinien: Einführung und Überblick (Vortrag)Software Produktlinien: Einführung und Überblick (Vortrag)
Software Produktlinien: Einführung und Überblick (Vortrag)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
 

Mais de Johannes Diemke (20)

Polymorphie
PolymorphiePolymorphie
Polymorphie
 
Prozedurale Texturen
Prozedurale TexturenProzedurale Texturen
Prozedurale Texturen
 
Pfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen PotentialfeldernPfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen Potentialfeldern
 
2010-JOGL-11-Toon-Shading
2010-JOGL-11-Toon-Shading2010-JOGL-11-Toon-Shading
2010-JOGL-11-Toon-Shading
 
2010-JOGL-10-Wavefront-OBJ
2010-JOGL-10-Wavefront-OBJ2010-JOGL-10-Wavefront-OBJ
2010-JOGL-10-Wavefront-OBJ
 
2010-JOGL-09-Texture-Mapping
2010-JOGL-09-Texture-Mapping2010-JOGL-09-Texture-Mapping
2010-JOGL-09-Texture-Mapping
 
2010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt052010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt05
 
2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-Material2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-Material
 
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)
 
Software Produktlinien: Einführung und Überblick (Vortrag)
Software Produktlinien: Einführung und Überblick (Vortrag)Software Produktlinien: Einführung und Überblick (Vortrag)
Software Produktlinien: Einführung und Überblick (Vortrag)
 
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)
 

Theory Exploration (Ausarbeitung)

  • 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 Einleitung Theory 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- u macht wird. Die Szenen folgen einem festen sequenziellen Ablauf und werden durch Transitions-Effekte ineinander ubergeblendet. Alle Szenen und Effekte ¨ der Demonstration laufen synchronisiert zu einem Musikst¨ck ab, welches Klaus u Spang[1] zu diesem Zweck verf¨gbar gemacht hat. Prim¨res Ziel war es, meh- u a rere Techniken aus der 3D Computergrafik aggregiert zu mehreren Szenen in einer einzigen Applikation zu integrieren und durch den gezielten Einsatz von Transitions-Effekten zu erreichen, dass diese nicht mehr isoliert, sondern viel- mehr als ein Ganzes wahrgenommen werden. Ein Schwerpunkt neben der rein technischen Umsetzung war es also auch, ein ¨sthetisches Zusammenspiel der a einzelnen Elemente zu erreichen. 2 Starten der Applikation Die Hauptklasse ist in der Datei TheoryExploration.java in dem Package pho- tek.demos.exploration anzutreffen. Aufgrund des hohen Speicherbedarfs muss die Applikation mit der Option -Xmx256M der virtuellen Maschine gestartet wer- den. 3 Verwendete Techniken Im Folgenden sollen einige der grundlegenden und h¨heren Techniken, die in o Theory Exploration zur Anwendung kommen, diskutiert werden.
  • 2. 3.1 Animation Die Animation ist ein wichtiges Thema in der Computergrafik. Eine h¨ufige a Bedingung, die an Animationen gestellt wird, ist, dass diese auf jedem Rechen- system in gleicher Geschwindigkeit ablaufen. Zu diesem Zweck f¨hrt Theory u Exploration ein virtuelles Zeitsystem ein. Formal betrachtet ist eine Animation eine Abbildung (bzw. Funktion), die jedem Zeitpunkt ein Frame der Animati- on zuordnet. Wenn T ime die Menge aller Zeitpunkte bezeichnet, so kann eine Animation wie folgt beschrieben werden: f : T IM E −→ F RAM E (1) 3.2 Billboarding und Partikelsysteme Das 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 a Visualisierung zu verwenden. Eine beliebte Technik ist das Ersetzen des 3D- Modells durch ein texturiertes Rechteck, dessen Textur ein zweidimensonales Abbild des 3D-Modells darstellt. Auf diese Weise k¨nnen Modelle aus mehreren o tausend Primitiven mit nur zwei texturierten Dreiecken ersetzt werden. Auch Theory Exploration nutzt diese als Billboarding bekannte Technik zur Darstel- lung von Partikeln.[2] Abbildung 1 zeigt den Einsatz eines Partikelsystems in Theory Exploration. Abb. 1. Partikelsystem in Theory Exploration
  • 3. 3.3 Video-Texturen Die Photek 3D Engine bietet mit Video-Texturen die M¨glichkeit, kleinere Film- o sequenzen 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 aus Theory Exploration. Abb. 2. Video-Texturen im Einsatz 3.4 Shadow-Depth-Maps Theory Exploration nutzt f¨r die Darstellung von Schatten-Effekten Shadow- u Depth-Maps. Bei den Shadow-Depth-Maps wird der Z-Buffer und das projektive Texture-Mapping verwendet um Schatten zu rendern. Bei dieser Technik wird die Szene so transformiert, dass die Kamera in die gleiche Position wie das entspre- chende Spotlight verschoben wird, welches f¨r den Schattenwurf verantwortlich u ist. Aus dieser Einstellung wird daraufhin die Szene aus der Sicht der Licht- quelle gerendert. Die so erhaltenen Tiefeninformationen werden anschließend in eine Depth-Map kopiert. Diese Textur wird dann beim Rendering des fertigen Bildes 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. u Anschaulich gesprochen, wird also die Depth-Map aus der Sicht der Lichtquel- le auf die Szene gelegt. Mit der entsprechenden OpenGL-Extension kann nun
  • 4. der Abstand eines jeden zu zeichnenden Fragments mit der Tiefeninformation in der Depth-Map verglichen werden. Ist der tats¨chliche Abstand r des Fragments a gr¨ßer als der gespeicherte Wert des Texels in der Depth-Map, so liegt der be- o trachtete Pixel hinter einer Oberfl¨che, die von der Lichtquelle aus sichtbar ist. a Dies 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 a Fall ist. Dieses ben¨tigt n¨mlich zus¨tzlichen Rechen- und Speicheraufwand f¨r o a a u Adjazenz-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 Exploration 3.5 Surface Reconstruction Mit 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 a dem 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 einer Szenen der Demonstration zu sehen.
  • 5. Abb. 4. Polygonisiertes Iso-Surface mehrerer Metaballs Das Iso-Surface eines einzelnen Metaballs, welches durch den Marching Cubes Algorithmus 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 a l¨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 a Normalen-Vektoren. Diese sind aber genau durch den Gradienten der verwen- deten Funktion des Iso-Surface bestimmt. Da der Gradient die Richtung des gr¨ßten Anstiegs darstellt zeigen die durch ihn bestimmten Normalen-Vektoren o ¨ jedoch noch in das Innere der Aquipotentialfl¨che, so dass dies durch Negation a des 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. Erkl¨rung a Ich versichere, die vorliegende Ausarbeitung selbstst¨ndig und nur unter Benut- a zung der angegebenen Hilfsmittel angefertigt zu haben. Literatur 1. 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)