Seminar Computerspiele Räumliche Datenstrukturen

Werbung
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
Herunterladen