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