Seminar Computerspiele Räumliche Datenstrukturen Ralf Pramberger Themen 1. Grundlagen • • • Szene Sichtbarkeit (Raytracing) Culling 2. Räumliche Datenstrukturen • • • Bounding Volume Hierarchie Quadtree/Octree BSP-Tree 2 Einleitung • Was? • Sichtbarkeit in der Computergrafik • Optimierungsmöglichkeiten • Räumliche Datenstrukturen • Warum? • Interessantes Forschungsgebiet • Große Modelle benötigen gute Verfahren 3 Einleitung 4 Grundlagen: Szene Szene Objekte Augpunkt Lichtquellen Materialeigenschaften 5 Grundlagen: Sichtbarkeit Zwei bekannte Algorithmen: • Painter‘s-Algorithmus • Raytracing 6 Grundlagen: Painter‘s-Algorithmus • zeichne entfernte Objekte zu erst • übermale mit näher gelegenen Objekten • Probleme – teilweise Überdeckung – Rendern von Polygonen die hinterher nicht sichtbar sind 7 Grundlagen: Raytracing • Strahl für jeden Pixel von Augpunkt in die Szene • Primitiver Ansatz: Für jedes vorhandene Objekt den Schnittpunkt berechnen • Nahes Objekt wird am Pixel gezeichnet 8 Grundlagen: Culling • View Frustum • Backface • Occlusion 9 Räumliche Datenstrukturen: Allgemein • Erkenntnis: „One of the great myths concerning computers is that one day we will have enough processing power“ (Real-Time Rendering, 3rd Edition, 14) • Ziele: • mehr FPS • “bessere” Bilder (Auflösung, Stereobilder) • komplexere Szenen • Lösung: • Räumliche Datenstruktur! • Ansatz: • Szene hierarchisch speichern • Häufig mit Preprocessing 10 Räumliche Datenstrukturen: Übersicht • Bounding Volume Hierarchie (BVH) – besteht aus Bounding Volumes • Quadtree/Octree • BSP-Tree 11 Bounding Volumes - Hüllkörper • Um jedes Objekt wird ein Bounding Volume berechnet • Schnitttest ist oft effizienter als Test gegen Objekte • Standard Formen: 12 Bounding Volumes Hierarchie (BVH) • Fasse einzelne BVs hierarchisch zusammen – Flächen können sich schneiden – Wurzel enthält alle sub BVs 13 Frustum Culling mit BVH • 1. 2. 3. 4. Algorithmus (View Frustum Culling) Beginne mit Wurzel des Graphen Teste jeden Knoten auf Schnitt mit Blickpyramide Falls Schnitt nicht leer: traversiere rekursiv mit den Kindern Sonst: stelle Bearbeitung des Knoten ein 14 Design für effizientes Culling 15 • Hierarchie sollte an räumliche Aufteilung der Szene angepasst sein • Vermeide zu flache Hierarchien • Design-Entscheidung: wie groß sollen Objekte der untersten Stufe sein (Schrauben am Rad von Auto?) • Culling entlastet GPU (weniger Polygone), belastet aber CPU. Ist das gut? Quadtree(2D) und Octree (3D) • Quadtree für 2D, Octree für 3D • Hierarchische Raumunterteilung – Objektredundanzen • Achselparallele Boxen unterschiedlicher Größe • Teuer beim Aufbau (Preprocessing!) 16 5. Quadtree-Aufbau 17 Algorithmus: 1. Box um die gesamte Szene 2. Falls Stop-Kriterium erreicht, Objekte an Box binden 3. Sonst unterteile Box in SubBoxen BSP-Tree BSP-Tree: rekursive Unterteilung des Raums in zwei Halbräume • Binärbaum (2 Kinder/Wurzel) • Jeder Knoten ist eine Unterteilungsebene des Raums • Linker Teilbaum liegt in Halbene der Normalen („vorne“) 18 BSP-Tree: Aufbau 19 • Ebenensegmente werden alphabetisch eingelesen • Rekursiv Aufteilen der verbleibenden Ebenensegmente links oder rechts • Splitten wenn nicht entscheidbar E wurde in E1 und E2 geteilt BSP-Tree: Aufbau • Ebenensegmente werden alphabetisch eingelesen • Rekursiv Aufteilen der verbleibenden Ebenensegmente links oder rechts • Splitten wenn nicht entscheidbar 20 BSP-Tree: Aufbau • Ebenensegmente werden alphabetisch eingelesen • Rekursiv Aufteilen der verbleibenden Ebenensegmente links oder rechts • Splitten wenn nicht entscheidbar 21 BSP-Tree: Traversierung • BSP Painter‘s-Algo (back to front) • falls Skalarprodukt des Sichtvektors mit aktuellem Normalenvektor <= 0 • besuche den hinteren Halbraum (RWL) • sonst • besuche den vorderen Halbraum (LWR) • A:RWL, C:LWR, E2:RWL, B:LWR, E1:RWL • H, E2,C,G,A,E1,F,B,D 22 Räumliche Datenstrukturen: Anwendungsbereiche • Kollisionserkennung (1. Vortrag!) • Sichtbarkeitsproblem: Culling – Occlusion Tree • Nachbarschaftssuche • Stahlenschnittermittlung: Raytracing 23 Fragen? 1. Grundlagen • • • Szene Sichtbarkeit (Raytracing) Culling 2. Räumliche Datenstrukturen • • • Bounding Volume Hierarchie Quadtree/Octree BSP-Tree 24 BVH vs. Hierarchische Raumunterteilung 25 Beispiel für BSP 26