Techniken und Algorithmen
Inhaltsverzeichnis
Was hier hinein gehört
Hier kommen, wie der Name vermuten lässt Erklärungen zu, in der 3D-Echtzeitprogrammierung verwendeten, Techniken hin. Z.B. verschiedene Schattentechniken, Bump-Mapping, etc.
Hintergrundwissen gehört hier nicht rein, also solche Sachen wie "was ist ein Tiefenpuffer und wofür ist er gut" haben hier nichts zu suchen.
Sollte es für eine Technik/Thematik (siehe unten für Beispiel) mehrere "Lösungswege" geben, sollte eine kleine Überschrift eingefügt werden.
Übersicht
Nützliche Helfer
In dieser Rubrik findet sich all das, was ein OpenGL/Graphikprogrammierer immer brauch oder schnell mal zur Hand haben muss:- Framecounter (Wie schnell läuft mein Programm?)
- Texture Loader (Laden und verwalten von Texturen)
- Model Loader (Laden von Modellen die mit Programmen wie 3D Studio Max, Lightwave, Milkshape usw. erstellt wurden.)
Licht und Schatten
Das Beleuchtungsmodell von OpenGL besitzt von Haus aus keine Möglichkeit zur Darstellung von Schatten (nicht zuletzt weil es dafür immernoch keine einheitliche Methode gibt), allerdings haben sich über die Jahre hinweg einige Techniken mehr oder weniger durchgesetzt :Statische Umgebungen
Besonders in Aussenszenen ist es oft nötig dem Betrachter den Eindruck zu vermitteln, er befinde sich in einer unendlich großen Umgebung. Da man dies jedoch schlecht über speziell dafür erstellte Geometrie lösen kann (weil das schlichtweg zu viel Aufwand und zu leistungsintensiv wäre), haben sich einige Techniken eingebürgert, mit denen man dem Betrachter eine solche unendliche Landschaft mit wenig Geometrie und einigen Tricks vorgaugeln kann :
Dynamische Effekte
Das Auge ißt bekanntlich mit. Auch bei 3D Anwendungen, vor allem in der Unterhaltungsindustrie, spielen gigantische Effekte, die dem User ein "Ohhh" und "Ahhh" und vor allem "Wow!" entlocken eine immer größere Rolle. Wie man solche Effekte am besten implementiert finden Sie in den Artikeln dieses Abschnitts.
(Befassen Sie sich zuerst mit den Grundlagen von Partikelsystemen.)
- Explosionen (Allseits gern gesehen. Außer in direkter Nachbarschaft)
- Lichtsäulen (Bekannt für die magischen Momente in diversen Rollenspielen.)
- Partikelsysteme (Grundlage für viele Effekte)
Natürliche Phänomene
Ziel vieler Echtzeit 3D-Anwendung (auch wenn genau der gegenteilige Trend manchmal interessant sein dürfte) ist eine zumindest optische Annäherung an die Realität, also Szenen möglichst "naturgetreu" (auch urbane Szenen können "naturgetreu" sein, auch wenn diese wenig natürlich sind) darzustellen. Dazu gehören auch natürliche Phänomene, wie z.B. realistisch spiegelndes Wasser, Wetterbedingungen (Regen, Schnee, Nebel), Feuer, etc. Oft gibt es für ein natürliches Phänomen recht fortgeschrittene Umsetzungsmöglichkeiten, manchmal liegt die Lösung aber auch recht nahe :- Feuer
- Himmel
- Staub
- Wasser
- Wettereffekte (Regen, Schnee, Nebel)
Raumunterteilungstechniken
Moderne 3D-Anwendungen müssen immer größere und komplexere 3D-Umgebungen darstellen, wobei oft jedoch große Teile eben dieser nicht sichtbar sind, aber ohne entsprechende Optimierungen trotzdem über den Datenbus geschoben (und von der Grafikkarte geclippt) werden müssen. Deshalb finden diverse Raumunterteilungstechniken (die u.a. aus anderen Bereichen stammen) in modernen 3D-Programmen Anwendung :
- BSP-Bäume (Binary Space Partitioning = Binäre Raumunterteilung)
- PVS (Potentially Visible Sets = Mögliche sichtbare Sets)
- Octrees (Dreidimensionale Erweiterung eines Quadtrees)
Terrain Darstellung
In vielen 3D Anwendungen, vom Flugsimulator über Egoshooter bis zum Strategiespiel, muss die Umgebung visualisiert werden. Welche Techniken bei der Speicherung (siehe auch Raumunterteilungstechniken), Bildaufbau und Texturierung zum Einsatz kommen, findet ihr hier:
- Level of Detail Algorithmen für Landschaften
- VDPM (View-Dependent Progressive Meshes)
- ROAM (Real-time Optimally Adapting Meshes)
- Geometrical Mipmapping
- Texturierung
- Texture Splatting (Kombination von Texturen mittels Blending und Multitexturing)
- Texture Backing (Dynamisches erstellen von Texturen)