+ All Categories
Home > Documents > Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten...

Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten...

Date post: 06-Apr-2015
Category:
Upload: lulu-eberts
View: 103 times
Download: 0 times
Share this document with a friend
34
Streaming von Meshes
Transcript
Page 1: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Streaming von Meshes

Page 2: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons

Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden sein müssen, um sie zu verarbeiten

Was versteht man darunter ?

Page 3: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Normale Darstellung von Meshes: Arrays von floats für die Vertexdaten, Array von Indizes auf die Vertexdaten für die Flächendaten

Je komplexer das Polygon wird desto mehr Daten müssen abgelegt werden: mehrere Gigabyte Vertizedaten und mehrere Gigabyte Flächendaten

Motivation

Page 4: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Um nur einzelne Teile des Meshes zu verwenden ohne alles zu dereferenzieren müssen Maßnahmen an Aufbau und Anordnung der Meshdaten vorgenommen werden

Motivation

Page 5: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Es gibt immer die Möglichkeit der Speicherung der Daten auf externem Speicher (z.B Festplatte)

Algorithmen die darauf arbeiten nennt man Out-of-core

Verschiedene Möglichkeiten: Zerteilen des Meshes, externe Datenstrukturen, „Dreieckssuppe“, Streaming

Vorrausetzungen

Page 6: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Simples Verfahren, welches große Meshes in kleinere Abschnitte unterteilt

Aber: dazu muss zunächst für den Cut dereferenziert werden

Mesh-Cutting

Page 7: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Ähnlicher Ansatz wie Mesh Cutting: Aufteilung in sog. Cluster

Nutzung dieser Aufteilung um je nach aktuellem Bedarf zu pagen

Externe Datenstrukturen

Page 8: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Umgeht die Problematik der indizierten Daten indem man eben keine Indizes verwendet

Dreiecke werden nacheinander von der Platte in den Speicher geholt

Beziehungen werden rekonstruiert oder einfach ignoriert

„Dreieckssuppe“

Page 9: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Jedoch: Wieder initiales dereferenzieren aller indizierten Daten notwendig

Ergo wie die anderen Varianten nicht die Lösung des Problems

„Dreieckssuppe“

Page 10: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Einführung einer neuen Information: Finalisierung

Ist ein Vertex finalisiert wird er nicht länger für die Berechnungen benötigt

Ist ein vertex finalisiert kann er also aus dem Hauptspeicher entfernt werden

Streambare Meshes

Page 11: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Im Standardformat für Meshes werden keine Anforderungen daran gestellt wo die Vertices der einzelnen Dreiecke abgelegt werden

Für die anfänglichen Meshes praktisch, heute jedoch problematisch, da keine bekannten Ordnungen existieren

Bisherige Anordnung

Page 12: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Um die Güte der Streambarkeit einer Meshindexanordnung zu bestimmen brauchen wir Anhaltswerte

Dreicksabstand : gibt an wieviele Dreiecke sich zwischen der ersten und der letzten Referenzierung des Vertex‘ sind

Definition Streambarkeit

Page 13: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Vertexabstand: maximal Indexdifferenz zwischen den Vertices eines Dreiecks

Dreiecks- Vertexweite: maximale Anzahl die zwischen erstem und letztem Element von Vertexreferenz oder Dreiecksreferenz stehen

Skip: Anzahl der Vertices welche die Indexreihefolge umgehen

Definition Streambarkeit

Page 14: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Demonstration der Gütewerte

Page 15: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Bereits erwähnt: kennzeichnung der Finalisierung

Daraus ergibt sich die Menge der aktuell bearbeiteten Vertices, nämlich alle die zwischen Einführung und Finalisierung stehen

Die maximale Anzahl bildet die Frontweite des Meshes

Definition Streaming Meshes

Page 16: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Es gibt 2 Arten von streambaren Meshes: Pre- und Post-Order

Pre-Order: Vertex kommt vor allen Dreickecken die aud ihn referenzieren an

Post-Order: Vertex kommt nach allen Dreicken die auf ihn referenziern an

Pre- und Post-Order

Page 17: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Darzustellendes Polygon:

Original Darstellung

Pre- und Post-Order

Page 18: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Pre- und Post-Order

Pre-Order Post-Order

Page 19: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Vertexkompakt: jeder Vertex ist vom vorhergehenden oder nachfolgenden Dreieck referenziert

Dreieckskompakt: letzter benötigter Vertex ist direkt davor oder danach im Stream zu finden

Kompakt: beide Kompaktheitsformen

Kompaktheit im Stream

Page 20: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Schritt 1: Trennung von Vertex- und Dreiecksdaten

Soll eine Anordnung von Indices nicht erhalten bleiben sondern umsortier kann diese verworfen werden

Vertices müssen jedoch den auf sie referenzierenden Dreicken zugeordnet werden können

Erzeugung von Streammeshes

Page 21: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Schritt 2: Zuweisung von Keys für Dreicke t und zugehörigen Vertices v

Wir erhalten zwei Datein mit Datensätzen <kv, v, d ,x ,y ,z> und <kt, v1, v2, v3>

Erzeugung von Streammeshes

Page 22: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Schritt 3: Sortierun und Anordnen der Datensätze in einen streambaren Datensatz

Für pre-Order nach Dreiecken

Für Post-Order nach Vertices

Verschiedene techniken zum Anordnen

Erzeugung von Streammeshes

Page 23: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Wenn die Streamgüte des alten Layouts gut genug ist kann man einen Streambaren Mesh erhalten indem man einfach die Datensätze anpasst und Finalisierung vorsieht

Indizierten Mesh verschachteln

Page 24: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Gerade bei hohem skip-Wert bietet sich Kompaktierung an

Dadurch kann leicht Pre-Order erreicht werden: Sortierung der Vertices und Einfügen eines Dreiecks sobald alle dafür nötigen Vertices bereits vorher eingefügt wurden

Kompaktierung

Page 25: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Post-order: Einfügen der Dreiecke jeweils wenn ein Vertex dafür benötigt wird und vor dem besagten Vertex

Kompaktierung

Page 26: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Simple Sortierung der keys nach einer räumlichen Ausrichtung also x, y oder z danach Orientierung entweder an Vertices oder Dreiecken und erzeugen eines kompakten Meshes

Alternativ aber ähnlich: Sortierung nach topologischen Richtlinien

Räumliche Anordnung

Page 27: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Ordnung nach minimaler Weite und Abstand: da diese Werte die Güte der Streambarkeit angeben der natürlichste Ansatz

Aber: das Trennen der Vertices und die Bildung von passenden Reihenfolgen erweist sich als NP-hartes Problem

Spectral Sequencing

Page 28: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Daher: Heuristiken werden benötigt

Beliebt dafür ist das Spectral Sequencing: Aufteilung in Cluster, umordnen dieser per ACE-Clusterformatierung gut geformte Teile

Dadurch wird ein ausreichend gutes gesamtbild erzeugt

Spectral Sequencing

Page 29: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Benötigte Zeiten für die Formatierungsmethoden

Page 30: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

I/O-effizientes Arbeiten da durch die Formatierung des Meshes die Dreicke sobald sie im Speicher eintreffen gerendert werden können und alle finalisierten Vertices aus dem Speicher entfernt werden können um Platz zu sparen

Arbeiten mit Streammeshes

Page 31: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Nachteil: kein Mitführen von Informationen wie Valennzen, Inzidenzen und andere topologische Merkmale

Dafür gibt es den Spezialfall von Streammeshes die sogeanntnen „Processing Sequences“

Arbeiten mit Streammeshes

Page 32: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Zudem bietet das Sequenzielle Format der Streammeshes eine gute Möglichkeit für Komprimierung der Daten

Normale Meshkompression benötigt Zugriff auf den Raum in zufälliger Folge, was beim Streamen nicht möglich ist

Daher: eigene Kompression welche die Daten on-the-fly beim Streamen packt

Kompression

Page 33: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Durch einfaches Umformatieren wird es ermöglicht auch mit wenig Speicher grosse Modelle zu rendern welche aufgrund der Datenmengen sonst nicht möglich wären

Nicht an spezifisches Format gebunden, auch Standardformate können bei passenden Abständen genutzt werden (z.B. PLY, OBJ)

Nutzen der Streammeshes

Page 34: Mesh: Gesamtheit der Vertex- und Dreicksarrays eines Polygons Streambarer Mesh: Mesh dessen Daten nicht in ihrer Gesamtheit im Hauptspeicher vorhanden.

Einfache Formatierungsmethoden können auch direkt in einem Stream geschrieben werden

Manche Ideen wie Ordnungserhaltende Kompression und die Kompaktierung der Meshanordung können auch an anderen Orten Anwendung finden

Nutzen der Streammeshes


Recommended