Rendering von Landschaften

Transcrição

Rendering von Landschaften
Einführung
Grundlagen
Algorithmen
Rendering von Landschaften
Paul Lemke
Helene Roht
Institut für Computervisualistik,
AG Computergrafik
Seminar Echtzeit Rendering,
21.05.2008
Anhang
Einführung
Grundlagen
Gliederung
1
2
3
4
Einführung
Anwendungsgebiete
Technische Voraussetzungen
Grundlagen
Repräsentation der Daten
Level of Detail
View Frustum Culling
Texturierung
Algorithmen
Chunked LoD
Geometric Mipmapping
Geometry Clipmaps
Anhang
Demonstration
Quellen
Algorithmen
Anhang
Einführung
Grundlagen
Algorithmen
Anwendungsgebiete
Virtueller Tourismus und Reiseplanung.
Anhang
Einführung
Grundlagen
Algorithmen
Anwendungsgebiete
Virtueller Tourismus und Reiseplanung.
Simulation unzugänglicher Landschaften
Anhang
Einführung
Grundlagen
Anwendungsgebiete
Stadt- und Landschaftsplanung.
Algorithmen
Anhang
Einführung
Grundlagen
Anwendungsgebiete
Klimatologie und Meteorologie.
Algorithmen
Anhang
Einführung
Anwendungsgebiete
Computerspiele.
Grundlagen
Algorithmen
Anhang
Einführung
Grundlagen
Algorithmen
Technische Voraussetzungen
Technische Voraussetzungen.
Problem: Menge der Daten.
1000x1000 Höhenpunkte machen 2.000.000 Dreiecke.
Und das ist eine kleine Welt.
Neben der Landschaft viele andere Details.
Ziel: intelligente Verwaltung der Daten.
Rasante Entwicklung der CPU und GPU.
Verstärkt sehr leistungsstarke Grafikkarten bei den
Heimcomputern.
Anhang
Einführung
Grundlagen
Technische Voraussetzungen
Rendering Pipeline.
2 programmierbare Einheiten:
Vertex Shader.
Fragment-/Pixel Shader.
Algorithmen
Anhang
Einführung
Grundlagen
Algorithmen
Technische Voraussetzungen
Grafikhardware.
Modell
GeForce 7950 GX
GeForce 8800
Textur- Füllrate (Mrd. Pixel/Sek.)
24
39,2
Auflösung
800x600
1280x800
Full-HD 1920x1080
Pixel
480.000
1.024.000
2.073.600
Anhang
Einführung
Grundlagen
Algorithmen
Technische Voraussetzungen
out-of-core.
Zu große Daten, die zu umfangreich sind um sie in den
Hauptspeicher zu laden.
Teilung in Blöcke
Nur die relevantesten werden in den Hauptspeicher
geladen.
Anhang
Einführung
Grundlagen
Algorithmen
Repräsentation der Daten
Höhentextur.
2D-Array.
Schwarz = 0, weiß = 255.
Für besonders große Landschaften.
Nachteil: keine Felsvorsprünge oder Höhlen.
Anhang
Einführung
Repräsentation der Daten
Höhentextur.
Grundlagen
Algorithmen
Anhang
Einführung
Grundlagen
Algorithmen
Repräsentation der Daten
Raster - Geländemodell.
Regelmäßiges Gitter von Punkten.
Fixiert durch Orientierung des Rasters, relativ hohe
Stützpunktzahl.
Je geringer der Abstand, umso höher die Auflösung.
Anhang
Einführung
Grundlagen
Algorithmen
Repräsentation der Daten
Dreiecksvermaschung (Triangulated Irregular
Network).
Beliebige Geländeform.
Angepasst an die Variation der Oberfläche, relativ niedrige
Stützpunktzahl.
Geringe Zahl von Dreiecken.
Rechenintensiv.
Anhang
Einführung
Grundlagen
Repräsentation der Daten
BinTree.
Jeder Knoten hat 2 Kinder.
Rekursive Aufteilung.
Algorithmen
Anhang
Einführung
Grundlagen
Repräsentation der Daten
Quadtrees.
Jeder Knoten hat bis zu 4 Kinder.
Rekursive Aufteilung.
rechenintensiv
Algorithmen
Anhang
Einführung
Repräsentation der Daten
Vergleich.
Grundlagen
Algorithmen
Anhang
Einführung
Grundlagen
Algorithmen
Level of Detail
LoD - Detailstufen
Im Nahbereich ist ein hoher Detailgrad erforderlich.
Im Fernbereich ist dieser Detailgrad nicht nötig.
Ist der Detailgrad zu hoch, werden mehrere Dreiecke pro
Pixel gerendert.
Es werden also unnötig Dreiecke gerendert.
Anstatt die selben Modelle zu verwenden, müssen,
abhängig von der Entfernung, Modelle mit angepasstem
Detailgrad verwendet werden.
Anhang
Einführung
Grundlagen
Algorithmen
Level of Detail
Probleme
Der Fehler zwischen den Modellen verschiedener
Detailstufen muss möglichst gering sein, da sonst ein
Unterschied in der Wahnehmung entsteht.
Popping Effect: Bei zu wenigen Detailstufen lässt sich ein
wahrnehmbarer Unterschied zwischen Modellen nicht
verhindern. Erfolgt ein Wechsel des Modell kann das
plötzlich Verschwinden oder Erscheinen von Details
wahrgenommen werden.
Bei einem Terrain kann LoD nicht auf das gesamte Objekt
angewendet werden.
Das Terrain muss in mehrere Blöcke unterteilt werden.
Es entstehen “Brüche“ zwischen benachbarten Blöcken.
Anhang
Einführung
Grundlagen
View Frustum Culling
Frustum - Pyramidenstumpf
Algorithmen
Anhang
Einführung
Grundlagen
Algorithmen
View Frustum Culling
Culling - Aussondern
Der vom Viewfrustum erfasste Bereich ist bloß ein
Ausschnitt aus der Szene.
Objekte, die außerhalb des Frustums liegen sind nicht
sichtbar. Sie werden nicht gerendert und müssen daher
auch nicht an die Grafikkarte übergeben werden.
Man sollte also die Objekte einer Szene darauf testen, ob
sie außerhalb des Frustums liegen.
Anhang
Einführung
Grundlagen
Algorithmen
View Frustum Culling
Culling - Aussondern
Es wäre viel zu aufwendig ein Objekt Dreieck für Dreieck
zu testen. Stattdessen werden Näherungen des Objekts
getestet, z.B. Bounding Boxes.
Bei einem zusammenhängenden Terrain kann nicht das
ganze Objekt getestet werden.
Teile des Terrains sind immer sichtbar.
Das Terrain muss auch hier in mehrere Blöcke unterteilt
werden.
Für die Blöcke bieten sich Bounding Boxes als Näherung
an. Falls das Terrain noch parallel zu den Achsen
ausgerichtet ist, lässt sich der Test durch Axis Aligned
Bounding Boxes noch weiter vereinfachen.
Die Blöcke sollten weiter in eine hierarchische Struktur
gebracht werden, um nicht immer alle testen zu müssen.
Anhang
Einführung
Grundlagen
Algorithmen
Texturierung
Texturskalierung
Wird eine zu ungenaue Textur verwendet, wirkt diese
unscharf. Bei zu fein aufgelösten Texturen können
Antialiasing Effekte auftreten und es wird eine unnötig
große Textur geladen.
Grundregel für Genauigkeit: Mindestens ein Texel pro
sichtbarem Pixel.
Anhang
Einführung
Grundlagen
Algorithmen
Texturierung
Mip Mapping
Berechnung verschiedener
Detailstufen einer Textur (LoD).
Die Kantenlänge muss hierfür
eine 2er-Potenz sein.
Zur Berechnung der
nächstkleineren Textur kann
zum Beispiel jeweils der
Mittelwert aus 4 benachbarten
Pixeln gebildet werden.
Je nach Abstand und damit
benötigter Detailstufe wird die
passende Texturgröße gewählt.
Dieses Verfahren wird von der
GPU unterstützt.
Anhang
Einführung
Grundlagen
Algorithmen
Texturierung
Multitexturing
Ein häufig verwendetes Verfahren bei der Texturierung von
Terrain ist das Multitexturing. Dabei werden mehrere
Texturen statt einer verwendet deren Gewichtung je nach
gewünschtem Effekt angepasst werden kann.
Oft werden relativ kleine Texturen wiederholt verwendet.
“Nähte“ werden durch Überblendung kaschiert oder durch
nahtlose Texturen vermieden.
Anhang
Einführung
Grundlagen
Algorithmen
Chunked LoD
Chunked Level of Detail Control
2002 von Thatcher Ulrich in dem Paper “Rendering
Massive Terrain using Chunked Level of Detail Control“
vorgestellt.
Es handelt sich dabei um einen Algorithmus, der
blickrichtungsabhängig Detailstufen auf eine Menge von
Primitiven anwendet.
Anhang
Einführung
Grundlagen
Algorithmen
Anhang
Chunked LoD
Vorverarbeitung
In einem Vorverarbeitungschritt wird ein Quadtree
aufgebaut.
Jeder Knoten enthält ein Mesh, dieses Dreiecksnetz wird
auch Chunk genannt.
Der Wurzelknoten enthält ein gering aufgelöstes Mesh des
ganzen Terrains.
Jeder Kindknoten repräsentiert ein viertel des Chunks des
Elternknotens in einer höheren Auflösung.
Rekursiv wird so das Terrain bis zur festgelegten
Rekursionstiefe in steigenden Detailstufen vom Baum
repräsentiert.
Jeder Chunk ist ein unabhängiger, statischer Verbund von
Primitiven und kann über einen einzigen Befehl an die GPU
übergeben werden.
Einführung
Grundlagen
Chunked LoD
Quadtree Level 0
Algorithmen
Anhang
Einführung
Grundlagen
Chunked LoD
Quadtree Level 1
Algorithmen
Anhang
Einführung
Grundlagen
Chunked LoD
Quadtree Level 2
Algorithmen
Anhang
Einführung
Grundlagen
Chunked LoD
Quadtree Level 3
Algorithmen
Anhang
Einführung
Grundlagen
Algorithmen
Anhang
Chunked LoD
Einsatz
Zum Rendern des Terrains wird der Quadtree traversiert.
Es wird gestetet, ob die Detailstufe des Knotens groß
genug ist, er also für die Darstellung geeignet ist. Dazu wird
ein Fehlermaß berechnet welches unterhalb eines
festgelegten Schwellwert liegen muss.
Liegt der Fehler unterhalb des Schwellwerts, wird der
Chunk an die GPU Übergeben.
Liegt er oberhalb, werden die Kindknoten untersucht.
Ist die höchste Detailstufe erreicht, wird diese verwendet.
Die Wahl des Schwellwerts ist entscheidend für die
Qualität.
Einführung
Grundlagen
Algorithmen
Anhang
Chunked LoD
Selektionskriterium für die Detailstufe
DistFarplane HeightWindow
Errorpixel = Errormax ×
×
×sin(vAngleCamera )
DistChunk
HeightFarplane
|
{z
}
Errorprojected
Errorpixel :
Errormax :
DistFarplane :
DistChunk :
HeightWindow :
HeightFarplane :
vAngleCamera :
Pixelfehler (Selektionskriterium)
Maximaler Fehler des betrachteten Chunks
Abstand zur Farplane des View Frustums
Abstand zum betrachteten Chunk
Höhe des Darstellungsfensters
Höhe der Farplane des View Frustums
Neigung der Kamera
Einführung
Grundlagen
Algorithmen
Chunked LoD
Crack Filling
Zwischen benachbarten Chunks mit unterschiedlichen
Detailstufen können Löcher entstehen, die als schwarze
Pixel sichtbar sein können.
Um diese zu schließen wird der Chunk am Rand um einen
vertikalen triangle strip erweitert.
Anhang
Einführung
Grundlagen
Algorithmen
Anhang
Chunked LoD
View Frustum Culling & Textur
Der für den Level of Detail verwendete Quadtree kann
analog für View Frustum Culling genutzt werden.
Für jeden Chunk wird im Baum eine Bounding Box
gespeichert.
Der Baum wird schließlich rekursiv durchlaufen und die
Chunks auf ihre Lage bezüglich des View Frustums geprüft.
Die Auswahl der richtigen Detailstufe der Textur erfolgt
ebenfalls analog über den Quadtree. Die Rekursion wird
durchlaufen, bis mindestens ein Texel pro Pixel dargestellt
wird.
Einführung
Grundlagen
Algorithmen
Chunked LoD
Chunked LoD
Vorteile
Effizienter Einsatz von Dreiecken.
Geringe Auslastung der CPU.
LoD der Geometrie und der Textur erfolgt analog.
Kann um Morphing erweitert werden um Popping Effect zu
verhindern.
Nachteile
Aufwendige Vorverarbeitung nötig.
Daten müssen statisch sein.
Nicht optimale Anzahl an Dreiecken.
Anhang
Einführung
Grundlagen
Algorithmen
Geometric Mipmapping
Geometric Mipmapping
2000 von Willem H. de Boer in dem Paper “Fast Terrain
Rendering Using Geometric MipMapping“ vorgestellt.
Es handelt sich dabei um einen Algorithmus, der
blickrichtungsabhängig Detailstufen auf eine Menge von
Primitiven anwendet.
Anhang
Einführung
Grundlagen
Algorithmen
Geometric Mipmapping
Vorverarbeitung
In einem Vorverarbeitungschritt werden die gegebenen
Terraindaten in viele gleich große quadratische Blöcke
unterteilt.
Die Kantenlänge l dieser Blöcke muss die Form l = 2n + 1
mit n ∈ N+ haben.
Auf der untersten Ebene hat das Mesh die höchste
Auflösung.
Analog zum Mip Mapping bei Texturen wird schrittweise die
Auflösung der Blöcke reduziert in dem in x- und y-Richtung
jeder zweite Höhenwert weggelassen wird.
So entstehen für jeden Terrainblock n Meshes mit jeweils
geringer werdender Detailstufe.
Anhang
Einführung
Grundlagen
Geometric Mipmapping
Geo Map Level 0 und 1
Algorithmen
Anhang
Einführung
Grundlagen
Algorithmen
Anhang
Geometric Mipmapping
Einsatz
Zum Rendern des Terrains wird für jeden Terrainblock die
passende Detailstufe ermittelt.
Es wird gestetet, ob die Detailstufe des Meshes der
höchsten Ebene groß genug ist, er also für die Darstellung
geeignet ist. Dazu wird ein Fehlermaß berechnet welches
unterhalb eines festgelegten Schwellwert liegen muss.
Liegt der Fehler unterhalb des Schwellwerts, wird das Mesh
an die GPU Übergeben.
Liegt er oberhalb, wird das Mesh an der nächsten
Detailebene betrachtet.
Ist die höchste Detailstufe erreicht, wird diese verwendet.
Die Wahl des Schwellwerts ist entscheidend für die
Qualität.
Einführung
Grundlagen
Algorithmen
Anhang
Geometric Mipmapping
Selektionskriterium für die Detailstufe
Als Selektionskriterium kann die selbe Fehlerberechnung
wie im Chunked LoD Algorithmus dienen.
Vereinfacht man jedoch die Formel, indem der
Neigungswinkel der Kamera außer Acht gelassen wird, so
lässt sich die Berechnung in den Vorverarbeitungsschritt
verlagern.
In einer LUT (Look-Up Table) wird gespeichert ab welchem
Abstand welche Detailstufe zu verwenden ist.
Während des Rendern muss nur noch der Abstand ermittelt
werden, die CPU wird weiter entlastet.
Einführung
Grundlagen
Algorithmen
Geometric Mipmapping
Geometry Gaps
Zwischen benachbarten
Meshes mit
unterschiedlichen
Detailstufen können
Löcher entstehen.
Um diese zu schließen,
wird der Randstreifen
des höher aufgelösten
Meshes so angepasst,
dass er mit dem des
niedriger aufgelösten
überienstimmt.
Anhang
Einführung
Grundlagen
Algorithmen
Geometric Mipmapping
View Frustum Culling & Textur
Für das View Frustum Culling werden für die Blöcke
Bounding Boxes berechnet.
Diese sollten für eine Effizientsteigerung in einer
hierarchischen Struktur, z.B. einem Quadtree weiter
zusammengefasst werden.
Die Texturauswahl erfolgt analog zum Geometric
Mipmapping.
Anhang
Einführung
Grundlagen
Algorithmen
Geometric Mipmapping
Morphing
Um beim Wechsel der Detaistufen einen Popping Effect zu
verhindern kann die Veränderung hin zur nächsten
Detailstufe langsam erfolgen.
Die Texturauswahl erfolgt analog zum Geometric
Mipmapping.
Anhang
Einführung
Grundlagen
Algorithmen
Geometric Mipmapping
Geometric Mipmapping
Vorteile
Sehr geringe Auslastung der CPU.
Vorverarbeitung nicht sehr aufwendig.
Kann auf dynamische Daten erweitert werden.
Kann einfach um Morphing erweitert werden um Popping
Effect zu verhindern.
Nachteile
Relativ hohe Anzahl an Dreiecken, höhere Belastung der
GPU.
Anhang
Einführung
Grundlagen
Algorithmen
Geometry Clipmaps
Algorithmus von Frank Losasso und Hugeues Hoppe
(2004).
Einfacher Algorithmus
Nahezu optimale Ausnutzung der GPU (bezogen auf
Dreiecke)
Konstante Renderrate
Einsetzgebiete:
Filme.
Kartografie.
Spiele -> Flugsimulationen
Anhang
Einführung
Grundlagen
Algorithmen
Anhang
Geometry Clipmaps
Prinzip.
Man hat eine Art Ringe aus verschachtelten Rechtecken
um den Betrachter herum.
Die Größe der Dreiecke verdoppelt sich von Level zu Level.
Es gibt m Levels, jeder Level hat eine Seitenlänge von 2m .
Einführung
Grundlagen
Algorithmen
Anhang
Geometry Clipmaps
Die Höhendaten und die Interaktion von GeoClipmap.
Die Höhendaten werden in einer 2D-Textur gespeichert.
Die Koordinaten aus der Textur müssen für den jeweiligen
Level komprimiert werden.
Minimale Texturzugriffe.
Bewegung:
Einfach: Drehen, Neigen und bewegen entlang der
y-Achse.
Komplizierter:Bewegung in x-z-Ebene; Übergänge
zwischen Levels.
Einführung
Grundlagen
Geometry Clipmaps
Geomorphing - Übergangszonen.
Algorithmen
Anhang
Einführung
Grundlagen
Geometry Clipmaps
View Frustum Culling.
Algorithmen
Anhang
Einführung
Demonstration
Grundlagen
Algorithmen
Anhang
Einführung
Grundlagen
Algorithmen
Quellen
Robert Bärz
Effizientes Rendering von Landschaften.
Universität Koblenz-Landau, 2006.
Willem H. de Boer
Fast Terrain Rendering Using Geometrical MipMapping.
E-mersion Project, 2000.
Huguess Hoppe, Frank Losasso
Geometry Clipmaps: Terrain Rendering Using Nested
Regular Grids.
Siggraph, 2004.
Thatcher Ulrich
Rendering Massive Terrains using Chunked Level of Detail
Control.
Oddworld Inhabitants, 2002.
Anhang

Documentos relacionados