Multiskalige Repräsentation von Geländemodellen 26.06.2003 Meik Kühnen
Überblick Allgemeines Probleme Lösungsansätze 26.06.2003 Meik Kühnen
Motivation Echtzeitdarstellung von 3D Geländemodellen für jederman 26.06.2003 Meik Kühnen
Was möchte man erreichen? Beispiele Durchstreifen eines Geländes zum planen einer Wanderung 3D Simulatoren für Piloten Entwicklung 3D- Strategien beim Militär 3D animierte Wettervorhersage 26.06.2003 Meik Kühnen
Bisherige Anwendungsgebiete 3D Computer Spiele Filme (Bsp: Herr der Ringe) 26.06.2003 Meik Kühnen
Allgemeines Darstellung von 3D Geländemodellen Verwendungszweck Polygonbasierte Darstellung (TIN oder GRID) Annäherung des Höhenfeldes durch Polygonbildung Verwendungszweck Visuelle Sichtbarmachung von Geländeunebenheiten 26.06.2003 Meik Kühnen
Erzeugung von 3D Geländemodellen 1.) durch Triangulation des Höhenfeldes 2.) Belegung der so ermittelten Dreiecke mit Texturen 3.) Zeichnung von Objekten innerhalb des Geländes Beispiele: Wasserflächen, Gebäude, Vegetation 4.) Steigerung der Realitätsnähe durch Dunst-, Schatteneffekte 26.06.2003 Meik Kühnen
Probleme Große Menge an Daten => sehr langsam Niedrige Framerate => sehr langsam Artefakte beim plötzlichen Annähern an ein Objekt Sichtbarkeit der Objekt* * Siehe Vortrag T. Eicker 26.06.2003 Meik Kühnen
Lösung Multiskalige Darstellung von Geländemodellen 26.06.2003 Meik Kühnen
Multiskalig Multiskalig heißt, daß des Systems nicht an eine bestimmte räumliche Skala und Auflösung gebunden ist, sondern eine Anwendung in allen Skalenbereichen (Mikro-, Meso- und Makroskala) mit entsprechend unterschiedlicher räumlicher Auflösung möglich ist. Quelle:http://www.pik-potsdam.de/cp/ragtime/hydro/arcegmo/doku/arceg_3.htm 26.06.2003 Meik Kühnen
Anforderung an den Algorithmus Unterschiedliche Level of Ditail (LoD) für unterschiedlich weit entfernte Objekte Schnelles rendering (digitale Berechnung) der sichtbaren Polygone Schnelle Berechnung der Sichtbarkeit Geringer Speicherbedarf 26.06.2003 Meik Kühnen
Algorithmen Große Anzahl von Algorithmen Beispiele: Lindström Algorithmus Röttger Algorithmus ROAM (real-time optimally adapting meshes) Diamond Algorithmus Diamond Algorithmus 26.06.2003 Meik Kühnen
Diamond Algorithmus Allgemeine Struktur v2 alle Dreiecke zeigen nur nach Oben oder Unten n1 c n3 a b d Scheitelpunkte aller Dreiecke sind im Uhrzeigesinn sortiert v1 v3 n2 alle Dreiecke haben genau 3 Nachbarn alle Dreiecke haben genau 4 Kinder 26.06.2003 Meik Kühnen
Diamond Algorithmus 2 Mechanismen für Änderung der LoD split = aufspalten 26.06.2003 Meik Kühnen
Diamond Algorithmus 2 Mechanismen für Änderung der LoD split = aufspalten merge = verschmelzen 26.06.2003 Meik Kühnen
Diamond Algorithmus Diamond Algorithmus benutzt 4 Warteschlangen (queues) -SplitAbove -SplitBelow -MergeAbove -MergeBelow Above und Below gibt an, welche Priorität ein Objekt gegenüber der Zielpriorität hat, d.h. ob es über oder unterhalb einer bestimmten LoD liegt. 26.06.2003 Meik Kühnen
Erzeugen der queues begin reset mesh and queues cull, prioritize and enqueue the primary triangles end else begin pass through SplitBelow, reevaluate priority and requeue item to SplitAbove if necessary (SplitAbove will start-out empty) pass through MergeAbove, reevaluate priority and requeue item to MergeBelow is necessary (MergeBelow will start-out empty) end Merge all items in MergeBelow queue Split all items in SplitAbove queue Durchlaufe sb, bewerte Priorität neu und füge bei bedarf item in sa überschreiten Sie durch SplitBelow, bewerten Sie Priorität neu und requeue Einzelteil zu SplitAbove wenn notwendig 26.06.2003 Meik Kühnen
Split Splitting of a tri: if tri enqueued, dequeue (from SplitAbove) if parent enqueued, dequeue (from a Merge queue) if a neighbour is less refined (bigger) then tri, then split the neighbour if a neighbour's parent is enqueued, dequeue (from a Merge queue) generate child triangles from tri cull and prioritize children, enqueue into SplitAbove/SplitBelow as appropriate if tri is mergeable, enqueue (into MergeAbove) falls Tri in eine Warteschlange eingereiht, aus der Warteschlange nehmen (von SplitAbove) falls Elternteil in eine Warteschlange eingereihte, aus der Warteschlange nehmen (von einer Mischenwarteschlange) falls ein Nachbar weniger verfeinert (grösseres) als Tri ist, spalten Sie dann den Nachbar, falls das Elternteil eines Nachbars in eine Warteschlange eingereiht wird, aus der Warteschlange nehmen (von einer mergewarteschlange) erzeugen Kinddreiecke von Tri auswählen und Priorität geben der Kinder, in eine Warteschlange einreihen in SplitAbove/SplitBelow wo es passt, wenn Tri mergeable, in Warteschlange einreihen (in MergeAbove) wenn tri´s Kinder haben aber keine Enkelkinder sind sie mergeable 26.06.2003 Meik Kühnen
Merge Merging of a tri: if children enqueued, dequeue (from a Split queue) dequeue tri (from MergeBelow) correct neighbour child pointers if necessary delete children from tri if a neighbour's parent can now merge, enqueue (into the appropriate Merge queue) if tri's parent can now merge, enqueue (into appropriate Merge queue) enqueue tri (into SplitBelow) Wenn Kind in Warteschlange, entferne es aus splitqueue Entferne tri aus MergeBelow Koregiere Nachbar Kind Zeiger falls notwendig Entferne Kinder aus tri, verschmelze die Kinder Wenn Eltern des Nachbarn nun verschmelzen können, reihe es in passende Warteschlange (entweder mergeabove/mergebelow) ein Wenn Eltern der tris nun verschmelzen können, reihe sie in passende Warteschlange 26.06.2003 Meik Kühnen
Last but not least Letzte wichtige Schritt: generieren und rendern der Maschen 26.06.2003 Meik Kühnen
Generieren und Rendern Zwei Faktoren sind zu beachten - Ausrichtung der Dreiecke (tri orientation) - Dreiecksverbindung (tri connectivity) 26.06.2003 Meik Kühnen
tri orientation Problem: Orientierung der Dreiecke (wichtig, um zu wissen in welche Richtung gedreht wird) Lösung: Neuordnung der Scheitelpunkte 26.06.2003 Meik Kühnen
tri connectivity Problem: Stelle an der LoD wechselt Lösung: Zusätzliche Dreiecke 26.06.2003 Meik Kühnen
tri connectivity Scheitelpunkte der neu gebildeten Dreiecke sind dabei Scheitelpunkte von Nachbardreiecken und daher bekannt 26.06.2003 Meik Kühnen
Ergebnis Vor Einsetzen des Algorithmuses ca. 62.500 Polygone 26.06.2003 Meik Kühnen
Ergebnis Nachher ca 3.400 Polygone 26.06.2003 Meik Kühnen
Danke für Ihre Aufmerksamkeit 26.06.2003 Meik Kühnen
26.06.2003 Meik Kühnen
Texturen Texturen sind den Flächen eines Objekts zugewiesene Oberflächeneigenschaften. Eine Textur besteht aus verschiedenen Texturkanälen wie Farbe, Relief oder Glanzlicht. In den meisten Kanälen können neben Farbe auch Bilder (bitmap, jpeg, usw.) verwendet werden. Auf diese Weise können Materialen wie Holz, Marmor oder Glas erstellt werden. Texturen sind den Flächen eines Objekts zugewiesene Oberflächeneigenschaften. Eine Textur besteht aus verschiedenen Texturkanälen wie Farbe, Relief oder Glanzlicht. In den meisten Kanälen können neben Farbe auch Bilder (bitmap, jpeg, usw.) verwendet werden. Auf diese Weise können Materialen wie Holz, Marmor oder Glas erstellt werden. Quelle: www.galileodesign.de/glossar 26.06.2003 Meik Kühnen
Framerate Bei der Beurteilung der 3D-Leistung von Grafiken wird mit der Framerate angegeben, wieviele Bilder pro Sekunde die Grafikkarte darstellen kann. Bei weniger als etwa 20 Bildern (Frames) pro Sekunde werden Bewegungen nicht mehr als flüssig wahrgenommen. Das Fernsehbild hat 25 Frames pro Sekunde. Quelle:www.hardware-guide.de/hardware/know-how/Lexikon 26.06.2003 Meik Kühnen
Artefakte Artefakte sind Bildfehler, die durch eine verlustbehaftete Kompression entstehen. Sie unterscheiden sich je nach Kompressions-Verfahren. Am bekanntesten sind die unschönen blockartigen Bildfehler, die bei der JPEG- sowie MPEG-Kompression auftreten. Quelle:www.glossar.de/glossa 26.06.2003 Meik Kühnen