3D-Game-Engine Diplomarbeit

3D-Game-Engine Diplomarbeit

3D-Game-Engine Diplomarbeit vorgelegt von Torben Fugger Matrikelnr. 200210277 Institut für Computervisualistik Arbeitsgruppe Computergrafik Betreuer und Prüfer: Prof. Dr. Stefan Müller November 2004 Inhaltsverzeichnis 1. Einführung 5 2. Grundlagen 6 3. Bestehende Ansätze 8 3.1. 3D-Game-Engines ............................... 8 3.2. Szenengraph ................................... 8 3.2.1. Buch „3D Game Engine Design“ ................... 9 3.2.2. OpenSG ................................. 10 3.2.3. VRML ................................. 10 3.3. Physikalisch basierte Simulation ........................ 11 3.3.1. Artikel von Chris Hecker ........................ 11 3.3.2. SIGGRAPH Papers: „Physically based modeling“ .......... 13 3.4. Kollisionserkennung .............................. 14 3.4.1. Bounding volumes ........................... 14 3.4.2. Closest Feature Tracking ........................ 15 3.4.3. Separating plane ............................ 16 4. Anforderungen 18 4.1. Engine-Design ................................. 18 4.2. Szenengraph ................................... 19 4.3. Physikalisch basierte Simulation ........................ 20 4.4. Kollisionsmanagement ............................. 20 4.5. Tech-Demo ................................... 20 5. Konzept 22 5.1. Engine-Design ................................. 22 5.2. Szenengraph ................................... 27 5.3. Physikalisch basierte Simulation ........................ 32 5.4. Kollisionsmanagement ............................. 32 6. Implementierung 36 6.1. Engine-Design ................................. 36 6.2. Szenengraph ................................... 37 6.3. Physikalisch basierte Simulation ........................ 40 2 Inhaltsverzeichnis 6.4. Kollisionsmanagement ............................. 40 6.4.1. Erkennung ............................... 41 6.4.2. Behandlung ............................... 43 6.5. Weiteres ..................................... 44 6.5.1. Terrain ................................. 44 6.5.2. Partikelsysteme ............................. 46 7. Ergebnisse 49 8. Fazit und Zukunftsaussichten 52 A. Bilder der Tech-Demo 53 3 Abbildungsverzeichnis 3.1. Zweidimensionales Beispiel des Closest-Feature-Verfahrens. Die beiden Fea- tures, die am dichtesten beieinander liegen, befinden sich jeweils in der Voronoi- Region des gegenüberliegenden Features. ................... 16 3.2. Zweidimensionales Beispiel des Separating-Plane-Verfahrens. Die Vertices der beiden Geometrien liegen bezüglich der hervorgehobenen Ebene in verschie- denen Halbräumen. ............................... 17 5.1. Modularer Aufbau der Game-Engine. ..................... 23 5.2. Der GameManager verwaltet Objekte der Klasse GameObject, von der wie- derum spezifische Spielobjekte abgeleitet werden können. .......... 23 5.3. Der InputManager und seine drei Geräteklassen ................ 24 5.4. Die wesentlichen Elemente der Update-Schleife im GameManager. ...... 26 5.5. Die Klasse SceneGraph ist Teil des GraphicsManager-Moduls. ........ 27 5.6. Die Klasse SceneNode und ihre Ableitungen .................. 27 5.7. Die Klasse ShapeNode und ihre NodeComponents. .............. 30 5.8. Die Klasse ComponentController und ihre Ableitungen. ............ 30 5.9. Der beispielhafte Einsatz von ComponentControllern zur Manipulation des Szenengraphen. ................................. 31 5.10. Die erste Stufe der Kollisionserkennung mit Hilfe des Szenengraphen .... 33 5.11. Eingrenzung des Kollisionszeitpunkts durch Wiederholung der Simulation mit feineren Zeitintervallen ............................. 34 6.1. Beispiel für die Funktionsweise der Klasse FuRenderGraph. ......... 39 6.2. Ein Knoten des Terrain-Quadtrees mit einem Kindknoten (oben rechts). ... 44 6.3. Texturierung der Terrain-Geometrie. ...................... 46 6.4. Beispiele für Partikelsysteme der FuEngine. .................. 48 7.1. Testszene für die Evaluierung der Engine. ................... 50 A.1. Kollisionen zwischen einfachen Würfel-Geometrien. ............. 53 A.2. Kollisionen zwischen komplexen Geometrien. ................. 54 A.3. Partikelsysteme und Festkörpersimulation. ................... 55 A.4. Ansicht auf das versunkene Dorf. ........................ 56 4 1. Einführung Die Entwicklung von Computersystemen schreitet heutzutage mit rasender Geschwindigkeit voran — diese Tatsache ist fast jedem von uns bekannt. Doch kaum jemand ist sich bewusst, dass diese Entwicklung besonders stark durch Computerspiele vorangetrieben wird. Beson- ders ausgeprägt konnte man diese Tatsache in letzter Zeit im Bereich der Grafikhardware feststellen, da immer mehr Spiele die dreidimensionale Darstellung verwenden, welche durch moderne Grafikchips sehr effizient unterstützt wird. Beispiele für den Umstieg auf die drit- te Dimension sind die neusten Episoden der erfolgreichen Aufbauspiel-Serien Siedler und Stronghold, deren vorherige Teile eine zweidimensionalen Darstellung verwendeten. Diese 3D-Darstellung ist so beliebt, da sie wesentlich mehr Freiheiten bei der Gestaltung der Inhal- te bietet und dem Spieler realistischere Szenarien bereitstellen kann. Allerdings ist sie auch sehr komplex und verlangt aufwendige Verfahren zum Erzeugen und Verwalten von grafischen Spielinhalten. Um diese Verfahren für die Entwicklung mehrerer Spiele wiederverwenden zu können, kapselt man sie in Form einer Game-Engine ab. Lässt sich die Engine als Grundlage für Spiele verwenden, die sich in ihrem Typ unterscheiden, wie z.B. ein Autorennspiel und ein Strategiespiel, so handelt es sich um eine universelle Engine. Innerhalb dieser Arbeit soll eine solche universelle 3D-Game-Engine entwickelt werden, was ein Konzept und eine prototypische Implementierung umfasst. Die Schwerpunkte liegen da- bei in der Erstellung und Verwendung eines Szenengraphen, in der physikalisch basierten Simulation von Spielobjekten und in der Erkennung und Behandlung von Kollisionen zwi- schen Geometrien der Szene1. Deshalb befasst sich das nächste Kapitel vorerst mit einigen grundlegenden Kenntnissen über Game-Engines und den drei Schwerpunktthemen dieser Ar- beit. Anschließend werden einige Quellen erläutert, die in Vorbereitung auf die Entwicklung des Konzepts recherchiert wurden. Dann kommen die Anforderungen an das Konzept der Engine im Allgemeinen und an das Konzept des Szenengraphen, der Physiksimulation und des Kollisionsmanagements im Speziellen zur Sprache. Das darauf folgende Kapitel enthält schließlich detaillierte Informationen zum entwickelten Konzept. Unmittelbar danach werden wesentliche Eigenschaften der prototypischen Implementierung, die auf das Konzept aufbaut, erläutert. Ein weiteres Kapitel zeigt und evaluiert die Ergebnisse der Entwicklung mittels einer auf der Engine basierten Beispielanwendung (Tech-Demo). Abschließend wird ein Fazit aus dem den gewonnenen Erkenntnissen dieser Arbeit gezogen und ein Ausblick auf mögliche Erweiterungen der Engine gegeben. 1Menge aller Inhalte eines Spiels, umfasst Spielobjekte, Geometrien, Geräusche usw. 5 2. Grundlagen Eine Game-Engine ist eine Sammlung von Technologien und Hilfsmitteln, die die Erstellung von Spielen in großem Maße unterstützt und erleichtert. Eine Engine umfasst dazu eine große Menge von Funktionen, die von nahezu allen Spielen verwendet werden, und keinen spezi- fischen Spielinhalt. Eine Game-Engine wird auch des Öfteren als „Betriebssystem für Spie- le“ bezeichnet. Es existieren Engines, die sich nur für die Erstellung von Spielen eines be- stimmten Genres eignen und dafür optimiert sind, wie z.B. einige Engines für Spiele aus der Ego-Perspektive, die nur in Gebäudekomplexen angesiedelte Szenarien und keine weitläufigen Außenlandschaften zulassen, dafür aber über sehr ausgefeilte Beleuchtungsmodelle verfügen. Andere Engines hingegen versuchen eine möglichst breite Bandbreite an Funktionalität anzu- bieten, um die auf ihrer Basis erstellten Spiele so wenig wie möglich im Genre und in den Möglichkeiten einzuschränken. Diese Engines lassen Spieltypen mit völlig unterschiedlichen Anforderungen zu oder ermöglichen sogar die Verschmelzung verschiedener Genres. Ein Bei- spiel dafür sind Spiele, in denen der Spieler in großflächigen Arealen umherlaufen kann, aber auch in der Lage ist, in der Szene befindliche Flugzeuge zu verwenden, um mit diesen im Stil eines Flugsimulators das gleiche Areal zu überfliegen. Durch die Vielseitigkeit bei der Nutzung einer Engine sind Spiele möglich, die den Spieler wesentlich stärker in das Spielge- schehen eintauchen lassen. Zugleich stellt die Vielseitigkeit bezüglich der Vermarktung einer ausgereiften Engine auch einen kommerziellen Faktor dar, da sich somit die Zahl der potenti- ellen Lizenznehmer erhöht. Ebenso sind auf Basis einer Game-Engine außer Spielen auch eine Vielzahl weiterer inter- aktiver Anwendungen möglich. So nutzt z.B. Virtual Reality die gleichen Techniken wie ein Spiel und vermittelt damit unter anderem wissenschaftliche Inhalte, dient als Unterstützung bei der Planung von Gebäuden oder bringt Piloten im Simulator gefahrlos das Fliegen bei. Vor kurzem wurde die „Total War“-Engine, deren Stärke die Verwaltung hunderter, autonom agierender Spielobjekte ist, verwendet, um für eine Dokumentation, die vom Fernsehsender BBC ausgestrahlt wurde, historische Schlachten nachzustellen. Da Spiele in der Regel sehr komplexe Szenarien mit einer Vielzahl von Geometrien verwen- den, werden effiziente und übersichtliche Mechanismen für den Aufbau und die Verwaltung der jeweils dargestellten Szene benötigt. Ein bewährtes Verfahren, um eine Szene zu verwal- ten, ist der Szenengraph.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    58 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us