Fakultät Informatik Institut für Software- und Multimediatechnik, Professur für Computergraphik und Visualisierung BESCHLEUNIGTE VISUALISIERUNG VON CAD-MODELLEN MITTELS NETZVEREINFACHUNG Diplomverteidigung Philipp Böhnke Dresden, 26.09.2013 Motivation CAD-Modelle werden für verschiedene Anwendungen tesseliert Tesselierung von CAD-Modellen erzeugt hoch aufgelöste polygonale Netze Die direkte Darstellung dieser Netze ist ineffizient – Geometrische Redundanz – Visuelle Redundanz Mittels Netzvereinfachung lassen sich die Daten reduzieren TU Dresden, 26.09.2013 Netzvereinfachung von CAD-Modellen Folie 2 von 27 Thema Netzvereinfachung Erzeugung einer Approximation M 0 eines Netzes M Entweder wird eine Zielkomplexität oder ein maximaler Fehler vorgegeben Das jeweils andere wird minimiert Besonderheiten ! Je nach Art des Modells ergeben sich Anforderungen an den Vereinfachungsalgorithmus Thema: Erarbeitung der Anforderungen und Implementierung eines geeigneten Vereinfachungsalgorithmus TU Dresden, 26.09.2013 Netzvereinfachung von CAD-Modellen Folie 3 von 27 ! Analyse Vereinfachung Selbstdurchdringung Stitching Fazit & Quellen Initiale Annahmen & Anforderungen Es werden Dreiecksnetze betrachtet Die Netze sind technischer Natur Visuelle Qualität der Ergebnisse ist wichtig Features im Netz sollen erhalten bleiben Selbstdurchdringung/Self Intersection (SI) soll verhindert werden Robustheit gegenüber topologischen Fehlern ! ! Features Loch Bohrung Vertiefung Weiterhin gibt es Rand- und Featurekanten. TU Dresden, 26.09.2013 Netzvereinfachung von CAD-Modellen Folie 4 von 27 Technische CAD-Modelle Topologische Fehler Inkonsistente Normalen = Unstetige Oberflächen nicht zusammenhängend Weitere Eigenschaften Hohe Valenzen Heterogene Tesselierung ! Sollten bei der Wahl des Algorithmus berücksichtigt werden! TU Dresden, 26.09.2013 Netzvereinfachung von CAD-Modellen Folie 5 von 27 ! Analyse Vereinfachung Selbstdurchdringung Stitching Fazit & Quellen Umsetzung Die Netze durchlaufen die folgende Pipeline: Der Vereinfachungsalgorithmus Iteratives Verfahren - Schrittweise Anwendung lokaler Operatoren Halfedge bzw. Edge Collapse [HDD+ 93] Nutzt die Quadric Error Metric als Fehlermaß [GH97] v0 v1 TU Dresden, 26.09.2013 v0 v1 Netzvereinfachung von CAD-Modellen v0 Folie 6 von 27 Ablauf der Vereinfachung for all edge do error = rate(edge) heap.push( error, edge ) end for while requirements not met do edge = heap.min if check operation allowed( edge ) then execute operation( edge ) update neighbours( edge ) end if heap.pop end while . . . Priorisierung aller Kanten . Prüfe Abbruchbedingung . Ist die Operation erlaubt? . Operation ändert Kosten Abbruchbedingungen: Maximaler Fehler, Zielkomplexität Erlaubte Operation: Keine SI, maximale Normalenabweichung eingehalten, keine komplexe Geometrie erzeugen TU Dresden, 26.09.2013 Netzvereinfachung von CAD-Modellen Folie 7 von 27 Auflösungssequenz Auflösungssequenz Auto - 100 % , 50 %, 20 % Das Original besteht aus ca. 144.000 Dreiecken Vereinfacht wurde mit Edge Collapse Die Normalenabweichung wurde auf 35 beschränkt Der Maximale Fehler wurde auf 256 bzw. 1.024 beschränkt TU Dresden, 26.09.2013 Netzvereinfachung von CAD-Modellen Folie 8 von 27 Erhaltung von Löchern Durch Ausschluss von Randkanten Durch Gewichtung der Fehlermetrik für Randkanten Gewichtung vereinfacht allerdings auch Netzrand Original TU Dresden, 26.09.2013 Ablehnung Netzvereinfachung von CAD-Modellen Gewichtung Folie 9 von 27 Erhaltung von Bohrungen ! Durch Ablehnung von Featurekanten Durch Gewichtung der Fehlermetrik für Featurekanten und Beschränkung der Normalenabweichung Gewichtung allein reicht nicht aus! Original TU Dresden, 26.09.2013 Ablehnung Gewichtung Netzvereinfachung von CAD-Modellen zus. Normalen Folie 10 von 27 Erhaltung von Vertiefungen ! Durch Beschränkung der Normalenabweichung Rest des Netzes wird auch weniger vereinfacht Original TU Dresden, 26.09.2013 Begrenzung auf 15 - 80 % Keine Begrenzung - 90 % Netzvereinfachung von CAD-Modellen Folie 11 von 27 Diskussion Vereinfachung Vorteile Qualitativ gute Ergebnisse Ermöglicht hohe Reduktionsraten Flexibel anpassbar & erweiterbar Ermöglicht die Verhinderung von Selbstdurchdringung Ausschluss und Gewichtung von Kanten ermöglicht Erhaltung von Features Nachteile Gesamtes Netz muss in Speicher passen Maximaler Fehler wenig intuitiv Behandelt Unstetigkeiten nicht TU Dresden, 26.09.2013 ! Stitching Netzvereinfachung von CAD-Modellen Folie 12 von 27 ! Analyse Vereinfachung Selbstdurchdringung Stitching Fazit & Quellen Selbstdurchdringung ! Wird durch Modellierung oder Tesselierung erzeugt Bedeutet Schneiden der Oberfläche mit sich selbst Ist mittels Schnitttests detektierbar TU Dresden, 26.09.2013 Netzvereinfachung von CAD-Modellen Folie 13 von 27 Selbstdurchdringung durch Vereinfachung Da Vereinfachung Geometrie verändert, kann dadurch SI entstehen Würde eine Operation SI verursachen, muss sie abgelehnt werden Problem ! Beim Schnitttest wird nur der konkrete Zustand betrachtet Überprüfung der beeinflussten Geometrie in allen Zuständen nötig Verfolgen der Operation über die ,,Zeit” t=0 t = 0.5 t=1 Zu t=0 und t=1 tritt keine Selbstdurchdringung auf. TU Dresden, 26.09.2013 Netzvereinfachung von CAD-Modellen Folie 14 von 27 Time-Sweeps Zur Verfolgung über die Zeit werden ,,Time-Sweeps” der beeinflussten Netzelemente genutzt [BGK03]. Netzelement wird um Zielpunkt der Operation ergänzt ! Liniensegment ! Dreieck Dreieck ! Tetraeder Knoten Kante Die Time-Sweeps werden gegen stationäre (= nicht beeinflusste) Geometrie getestet. t0 e0 v0 t1 e1 t2 Vertex Sweep TU Dresden, 26.09.2013 Edge Sweep Netzvereinfachung von CAD-Modellen Triangle Sweep Folie 15 von 27 Ablauf SI-Test for a in affected do . Beeinflusste Geometrie for s in stationary do if have common vertex( a+target, s) then . Triviale Fälle ausschließen continue end if if intersect( a+target, s ) then . Bei Schnitt abbrechen check failed end if end for end for check passed Triviale Fälle: Mit stationärer Geometrie benachbarte, beeinflusste Geometrie. v0 TU Dresden, 26.09.2013 v0 Netzvereinfachung von CAD-Modellen Folie 16 von 27 Optimierung der Schnitttests Zum Ausschluss von SI muss Schleife komplett durchlaufen werden Einige Test-Kombinationen werden subsumiert, es werden – Vertex-Sweeps werden gg. Knoten, Kanten und Facetten, – Edge-Sweeps werden gg. Knoten und Kanten, – Triangle-Sweeps werden gg. Knoten getestet. Getestete Geometrie auf Bounding Box der Time-Sweeps beschränken Suchgitter nötig ! Suchgitter Reguläres Gitter Ermöglicht Abfrage der umliegenden Elemente Zellbreite = 2 * mittlere Kantenlänge TU Dresden, 26.09.2013 Netzvereinfachung von CAD-Modellen Folie 17 von 27 Diskussion - Performance Keine Verhinderung (1,8 Sek.) Mit Verhinderung (180 Sek.) Ursachen für Performance-Probleme I. Heterogene Auflösung der Netze Lange Kanten ! viele nahe Elemente Beispiel Container: 0,0004 bis 1118,01 Kantenlänge (øca. 300 ) ! Viele kleine Elemente in Zellen ! Adaptives Gitter von Vorteil, wenn große u. kleine Elemente getrennt sind ! Median oder kleinere Quantile als Zellbreite u.U. günstiger TU Dresden, 26.09.2013 Netzvereinfachung von CAD-Modellen Folie 18 von 27 Diskussion - Performance Ursachen für Performance-Probleme II. Operationen ohne Selbstdurchdringung Wird nur geometrische Redundanz entfernt, entsteht keine SI Es müssen alle SI-Tests durchgeführt werden ! SI-Verhinderung ist zu Beginn oftmals nicht nötig ! Trennung in zwei Phasen: Redundanzentfernung und stärkere Vereinfachung III. Implementierung Nicht-optimierte Reihenfolge der Schnitttests Nicht-optimierte Schnitttests Hohe Anzahl der Schnitttests, da Elemente aufgrund ihrer Bounding Box eingetragen werden TU Dresden, 26.09.2013 Netzvereinfachung von CAD-Modellen Folie 19 von 27 Diskussion - Funktionalität Die erfolgreiche Verhinderung ist stark von einem gewählten " abhängig Benötigt bei der Erkennung von degenerierten Fällen und Vergleich von Floats Aufgrund heterogener Tesselierung der Netze kaum allgemeingültig zu bestimmen Zum Finden eines " wurde eine Reihe von Netzen mit variiertem " vereinfacht Dabei konnte kein allgemeingültiges " gefunden werden Ist das " entsprechend gewählt, funktioniert die SI-Verhinderung zufriedenstellend. Original TU Dresden, 26.09.2013 Ohne Verhinderung Netzvereinfachung von CAD-Modellen Mit Verhinderung Folie 20 von 27 ! Analyse Vereinfachung Selbstdurchdringung Stitching Fazit & Quellen Unstetige Patches ! Stitching Topologieverändernde Operatoren verbinden nahe Elemente [BGGK03] Problematisch bei beidseitig modellierten Flächen ? Die Orientierung ist beim Verbinden nicht immer konsistent orientierbar. Bei Beschränkung auf Ränder eindeutig Im ersten Schritt entsteht komplexe Geometrie – schlecht bei Abbruch v1 v0 TU Dresden, 26.09.2013 Netzvereinfachung von CAD-Modellen v10 v00 Folie 21 von 27 Stitching - Ablauf Alternative zu topologieverändernden Operatoren Nahe Flächen werden nicht verschmolzen Verringert Anzahl Randkanten durch Einfügen von Facetten Vorverarbeitungsschritt - unabhängig von Abbruchkriterien Ablauf working list = find boundary edges . Randkanten des Netzes for all edge in working list do partner = find partner( edge ) . Finde Partnerkante zum Verbinden if check( edge, partner ) then . Überprüfe Bedingungen insert face(edge, partner) . Füge Facette ein . Betrachte neue Ränder working list.push( new boundary edges) end if end for find partner sucht geeignete Kante zum verbinden check prüft Bedingungen: Distanz, Orientierung, Partner sind Randkanten TU Dresden, 26.09.2013 Netzvereinfachung von CAD-Modellen Folie 22 von 27 Auswertung - Stitching Original Nach Stitching TU Dresden, 26.09.2013 Reduktion der Randkanten von 1.234 auf 993 (-19.53 ) % Reduktion der Patches von 26 auf 4 Konsistente Orientierung erreicht Heterogene Ränder werden kaum erfasst Dauer: 8,54 Sekunden Netzvereinfachung von CAD-Modellen Folie 23 von 27 Auswertung - Stitching Original Nach Stitching % Reduktion der Ränder von 55.294 auf 47.912 (-13.50 ) Reduktion der Patches von 6.379 auf 5.102 Keine konsistente Orientierung Sehr lange Kante werden nicht verbunden Dauer: 137,4 Sekunden Viele kleine Patches, oft umorientieren TU Dresden, 26.09.2013 Netzvereinfachung von CAD-Modellen Folie 24 von 27 Diskussion - Stitching Vorteile Verringert die Anzahl der Randkanten und Patches Vermeidet komplexe Geometrie Ergibt konsistentere Orientierung der Normalen Nachteile Langsam, wenn (viele) Patches (oft) umorientiert werden müssen Schließt nicht alle Lücken (tw. vergleichbar mit Vertex Clustering) Erhöht die Anzahl der Facetten im Netz Eingefügt Facetten ergeben oft Featurekanten ! Glätten verursacht Fehler Erweiterungen Behandlung heterogener Patchränder Selbstdurchdringungsverhinderung TU Dresden, 26.09.2013 Netzvereinfachung von CAD-Modellen Folie 25 von 27 ! Analyse Vereinfachung Selbstdurchdringung Stitching Fazit & Quellen Fazit Implementierung der Vereinfachung zufriedenstellend Stitching erarbeitet – Erweiterungen noch nötig SI-Verhinderung langsam, funktioniert prinzipiell gut Offene Probleme Globale, intuitive Fehlerschranke (Beispielsweise Hausdorff-Distanz) Auflösen initialer Selbstdurchdringung Vermeidung von Selbstdurchdringung Erweiterung des Stitching-Operators auf heterogene Ränder Optimieren von Facettennormalen mittels QEM Optimierung der Implementierung TU Dresden, 26.09.2013 Netzvereinfachung von CAD-Modellen Folie 26 von 27 Quellen Pavel Borodin, Stefan Gumhold, Michael Guthe, and Reinhard Klein. High-quality simplification with generalized pair contractions. In In GraphiCon 2003, pages 147–154, 2003. Pavel Borodin, Stefan Gumhold, and Reinhard Klein. Intersection free simplification. In In The 4th Israel-Korea Bi-National Conference on Geometric Modeling and Computer Graphics, pages 11–16, 2003. Michael Garland and Paul S. Heckbert. Surface simplification using quadric error metrics, 1997. Hugues Hoppe, Tony DeRose, Tom Duchamp, John McDonald, and Werner Stuetzle. Mesh optimization. In Proceedings of the 20th annual conference on Computer graphics and interactive techniques, SIGGRAPH ’93, pages 19–26, New York, NY, USA, 1993. ACM. TU Dresden, 26.09.2013 Netzvereinfachung von CAD-Modellen Folie 27 von 27 Danke für die Aufmerksamkeit! Quadric Error Metrik Berechnet den quadratischen Abstand eines Punktes zu einer Menge von Flächen Erlaubt Vereinfachung mit Gedächtnis - Bewertung bezieht sich auf Originalnetz Durch Gewichte flexibel einsetzbar ^ Quadrik bezüglich einer Facette Fi mit Normale ni und Abstand zum Ursprung di : ( ) = hAi p 2~bi , p Q p =^^ i + ci =^ = A ni nTi ist quadratische Matrix, ~bi ni di ein Vektor, und ci d 2 ein Skalar. Die Vertexquadrik ergibt sich durch Aufsummieren der Quadriken der inzidenten Facetten: 1 Qv p i ( ) = P Area i i X Area Q(p) i Eine optimale Position kann durch Lösen von Ap bestimmt werden. = ~b Rand- und Featurekanten Eine zur Kante senkrecht stehende Ebene wird der QEM hinzugefügt Diese kann über die Binormale bestimmt werden Es muss eine Affinkombination erhalten bleiben: ( ) = (1 Qv0 p n̂ !b ) Qv + !b Qb ~t b̂ Berechnung der Binormale Topologieverändernde Operatoren v0 v0 v1 v1 v0 (Vertex) Pair Contraction v0 v1 e v0 v0 Vertex Edge Contraction v0 t v0 v0 v1 Vertex Triangle Contraction (nach [BGGK03]) Stitching - Knotenpaare v1 v0 v10 v00 0 /v 0 v0 1 v1 v0 Knotenpaare Kantenpaare Finde Randnoten v00 , v10 zu v0 , v1 mit minimalem Abstand Zwei Fälle sind möglich Stitching - Minimaler Maximalabstand d1 d2 d3 d4 d5 Finde Randkante mit minmalem Maximalabstand Günstig, falls keine gültigen Knotenpaare gefunden werden Stitching - Konsistenzbedingungen Entfernung zu groß Falsche Orientierung Erweitertes Stitching v0 e v0 e v00 v1 v1 v10 v10 Erweitertes Stitching Features Loch Bohrung Vertiefung