Mesh-Visualisierung Von Matthias Kostka
Übersicht Einführung Streaming Meshes Quick-VDR Rendering virtueller Umgebung Rendering mit PC-Clustern Zusammenfassung 2
Mesh Untereinander verbundene Punkte bilden ein Mesh (Polygonnetz) [1] Kante Facette Vertex 3
CAD CAD = computer-aided design Rechnergestützte(r) Entwurf / Kostruktion 3D-CAD Virtuelles Modell eines dreidimensionalen Objektes Nicht nur Geometrie, sondern auch Eigenschaften der Materialien Verschiedene Modelle: Kantenmodell: Körperkanten als gedachte Drahtgeometrie Flächenmodell: mathematische Bescheibung der Flächen Weitere höherwertige Modelle [4] [2] [3] 4
3D-Scan Rasterartige Abtastung von Oberflächen mit einem Laserstrahl Punktgenauigkeit bis zu 1 mm Messgeschwindigkeiten: > 1.000.000 3D-Messpunkten (1MHz) pro Sekunde Einsatz: Architektur, Denkmalpflege, Forensik, Archäologie,... [7] [6] [5] 5
Motivation Mehrere gigabyte-große Datensätze 10 bis 100 Millionen Polygone Keine Visualisierung mit gewöhnlicher Hardware zu groß für den RAM und seinen Addressbereich Interaktivität nicht mehr möglich Operationen (Culling, etc) unmöglich Lösung: Out-of-Core oder PC-Cluster 6
Streaming Meshes [8] 7
Streaming Meshes out-of-core Algorithmus Streaming Mesh: Verschachtelte Sequenz von indexierten Vertices und Dreiecken Informationen über die Lebensspanne eines Vertex oder Dreiecks Genereller Ablauf: 1. Umsortierung der Vertices und Dreiecke 2. Speicherung der Lebensspanne 3. Generierung eines Streaming -Formats 8
Layout Original Mesh: Keine Bedingungen an die Ordnung der Vertices und Dreiecke Erst alle Vertices, dann alle Dreiecke Keine Kohärenz Umsortierung der Vertices und Dreiecke: räumlich und topologisch [8] 9
Layout Inkompatibel Beispiel-Mesh [8] [8] Grün: Grau: Anzahl der neu referenzierten Vertices Abstand der Vertices eines Dreiecks 10
Layout Kompatibel - schlecht Beispiel-Mesh [8] [8] Grün: Grau: Anzahl der neu referenzierten Vertices Abstand der Vertices eines Dreiecks 11
Layout Kompatibel - gut Beispiel-Mesh [8] [8] Grün: Grau: Anzahl der neu referenzierten Vertices Abstand der Vertices eines Dreiecks 12
Layouterstellung Ziel: Vertexlayout Dreieckslayout Zeitpunkt des Dereferenzieren Erstellung: Layout: 1. Jeweils Dreiecke und Vertices in zwei verschiedenen Dateien mit Originalindex speichern 2. Neue Sortierschlüssel für Vertices und Dreiecke generieren 3. Sortierung der Schlüssel 4. (Merging der beiden Dateien) und Generierung neuer Indizes Dereferenzieren 13
Sortierung Tiefensortierung Breitensortierung Z-Ordersortierung Räumliche Sortierung Spektralsortierung 14
Ergebnis Zeit (hh:mm:ss) mit I/O auf einem 3,2 GHz PC mit 2 GB RAM [8] Vertices: 543.652 Dreiecke: 1.087.716 [9] [10] [11] Vertices: 14.027.872 Dreiecke: 28.055.742 Vertices: 186.836.665 Dreiecke: 372.737.445 15
Quick-VDR [12] 16
Motivation Geringe Kosten für Vereinfachungen Starke Vereinfachung des Modells Hohe Framerate Geringe Qualitätsverluste der Bilder Generell einsetzbar 17
Übersicht Modell: Cluster Hierarchie von progressiven Meshs (CHPM) 1. Modellerstellung: out-of-core Algorithmus zur Erstellung eines CHPM Clusterabhängigkeiten für starke Vereinfachungen 2. Rendering: Zeitliche Kohärenz Occlusion Abfragen Ein Frame Verzögerung 18
Übersicht (CH) Cluster Hierarchie: Gesamte Daten als Cluster repräsentiert Räumlich zusammenhängend Jeder Cluster enthält ca 1.000 Dreiecke Grobkörnige view-dependent Verarbeitung Sichtbarkeitsberechnung [12] 19
Übersicht (PM) Progressive Mesh: Lineare Sequenz aus Half-Edge-Collapse -Operationen Feinkörnige Verarbeitung Fehlerabhängige Vereinfachung zur Laufzeit [12] [12] 20
Erstellung der Cluster Modell in räumlich eng begrenzte Cluster zerlegen Alle Cluster ca. gleich groß Min RAM Performantes Occlusion Culling Verbindungsinformationen speichern [12] 21
Erstellung der Cluster Schritte zur Erstellung: 1. Bounding Box des gesamten Meshs erzeugen 2. Vertices in Cluster unterteilen 3. Mapping zwischen neuen und alten Indizes der Vertices 4. Clusterübergreifende Vertices markieren 22
Vereinfachung Ziel: Jeden Cluster unabhängig und gleichzeitig vereinfachen Problem: Keine Vereinfachung von verteilten Vertices Lösung: Lücken im Mesh Clusterabhängigkeiten: Vereinfachung von verteilten Vertices [12] 23
Clusterabhängigkeit Probleme: Ketten von abhängigen Clustern Lösung: Abhängigkeit nur, wenn: 1. zwei Cluster nicht in wenigen Hierarchieleveln verbunden werden 2. sie in ungefähr gleichen Fehlerbereichen liegen 3. keine Ketten erzeugt werden [12] 24
Aktive Clusterliste Liste der aktuell zu vereinfachenden Cluster Level-of-Detail: Erhöhen: Cluster splitten Erniedrigen: Cluster verbinden [12] [12] 25
Rendering 1 Frame Verzögerung 2 Threads Rendering I/O [12] 26
Occlusion Culling [12] PVS: mögliche sichtbare Menge von Clustern NVS: sichtbare Cluster OR: Occlusion-Repräsentation 27
Ergebnis 2,4 GHz PC mit 1 GB RAM [12] [12] Dreiecke: 100.000.000 Dreiecke: 12.200.000 Dreiecke: 372.737.445 [12] [11] 28
Rendering virtueller Umgebung 29
Übersicht 1. Pre-Prozess Modell räumlich aufteilen Szenengraph erstellen Kontinuierliche Level-of-Details für jedes Objekt im Graph generieren 2. Run-Time Graph traversieren Verschiedene Cullings und Vereinfachungen Rendern [13] 30
Räumliche Aufteilung Orginalszene Aufgeteilte Szene [13] 31
Kontinuierliche Level-of-Details [13] Szenegraph Kontinuierliche Level-of-Details für einen Knoten 32
Ergebnis [13] 2,4GHz PC, 512MB RAM, Geforce 3 Ti500, 128MB GRAM [13] PP: Power Plant 12.200.000 Dreiecke Virtual City 23.000.000 Dreiecke 33
Rendering mit PC-Clustern 34
Rendering mit PC-Cluster DRT: Dynamic Rendering Team 1 Master: Rendering Taskverteilung, Sheduling n Slaves: Bildaufbau, Anzeige FSP: Verwaltung von freien Slaves Vorteile dieser Architektur: Einfacher Ausbau der Clustergröße Schnelles Laden der Daten Einfache Taskverwaltung [14] 35
Ergebnis Arbeitsauslastung der DRTs [14] Cluster: 32 PCs in einem 1GB Ethernet 2,4GB DualCore, 1GB RAM, GeForce 5950FX 100M Dreiecke mit einer Verarbeitung von 485M pro Sekunde = ca 15fps 36
Zusammenfassung Probleme: Zu große Datenmengen für einen normalen PC Kein interaktives Rendering möglich Lösung: Out-of-Core (Streaming Meshes, Quick-VDR,...) PC-Cluster 37
Vielen Dank für die Aufmerksamkeit Sind noch Fragen vorhanden? 38
Quellen [1] http://stochastix.files.wordpress.com/2008/07/ippolita50k-close-up.png [2] http://www.spatial.com/products/3d-mesh [3] http://public.beuth-hochschule.de/~mathe/teach/studmath/edv/welcome.html [4] http://daveperso.mediaenglishonline.com/2011/04/29/3d-acrobat-and-articulate/ [5] http://upload.wikimedia.org/wikipedia/commons/5/5a/3d-laserscanner_on_tripod.jpg [6] http://upload.wikimedia.org/wikipedia/de/7/76/scan_flugzeughalle.jpg [7] http://gfxspeak.com/2010/12/09/busy-autodesk-looks-wistfully-to-the-clouds/ *8+ Streaming Meshes, M. Isenburg, P. Lindstrom, 2005 [9] http://i344.photobucket.com/albums/p338/free3dart/happy_buddha.jpg [10] http://www.creativecrash.com/system/photos/000/092/234/92234/big/lucy.jpg?1273298041 [11] http://graphics.stanford.edu/projects/mich/matthew/stmatthew_hires_whole-esh.jpg [12] Quick-VDR: Out-of-Core View-Dependent Rednering of Gigantic Models, S. Yoon, B. Salomon, R. Gayle, D. Manocha, 2005 [13] View-Dependent Out-of-Core Rendering of Large-Scale Virtual Environments with Continuous Hierarchical Levels of Detail, H. Chen, S. Zhan, Y. Gao, W. Zhang, 2008 [14] A Parallel Framework for Interactive Rendering of Massive Complex Scenes on PCs Cluster, X. Jiang, K. Lei, H. Yiong, Y. Li, J. Shi, 2007 39