(12) Geometrie Vorlesung Computergrafik III M. Raspe 1 Punkte ! Sie sind oft das Ergebnis von Digitalisierungsverfahren, wie etwa Laserscans, bildgebenden Verfahren, Radarscans etc. ! Problem: Triangulierung zur Oberflächenerzeugung (lineare Interpolation, planare Unterteilung) ! …oder höherwertigere Funktionen (Dank an P. Neugebauer, Polygon Technology GmbH) M. Raspe 2 / 26 2 Problem der Triangulierung ! Triangulierung nicht eindeutig ! Schlecht: Triangulierung mit kleinen Dreieckswinkeln M. Raspe 3 / 26 3 Delaunay-Triangulierung ! Anzahl der Triangulierungen einer endlichen Punktmenge S ist endlich, d.h. es gibt eine optimale Triangulierung, die den minimalen Winkel maximiert. ! Analoge Definition: für jedes Dreieck ist kein weiterer Punkt im Umkreis des Dreiecks ! Ansatz für die Delaunay-Triangulierung ! ! typische Daten: Dreiecks-/Polygon-Netze („Meshes“) Delaunay liefert immer die konvexe Hülle... M. Raspe 4 / 26 4 Algorithmus (grob…) ! ! ! ! ! Suche einen Punkt am Rand (z.B. x-Koordinate) Suche nächstgelegenen Punkt (kürzester Abstand) Schleife über alle Punkte ! Berechne Winkel im Dreieck am neuen Punkt ! Wähle Dreieck mit max. Winkel Rekursion über 2 neue Kanten Schleife über alle Punkte im vorderen Halbraum ! Berechne Winkel im Dreieck am neuen Punkt ! Wähle Dreieck mit max. Winkel 4 5 6 3 1 7 2 8 M. Raspe 5 / 26 5 Diskussion ! Es gibt eine Reihe von interessanten Algorithmen zur Implementierung ! ! ! Minimierung des Rechenzeitaufwands Aber: das Ergebnis ist immer gleich Wichtiger Vertreter für Divide & Conquer ! ! ! ! Teile Punktmenge in 2 Hälften Berechne Triangulierung für beide Hälften Füge Hälften zusammen Das ganze rekursiv M. Raspe 6 / 26 6 Delaunay ! Eine Delaunay-Traingulierung ist eindeutig in dem Sinne, dass alle minimalen Winkel maximiert werden ! Allerdings kann es mehrere solcher Lösungen geben ! Beispiel: M. Raspe 7 / 26 7 Ist das eine Delaunay-Triangulierung? Delaunay Triangulierung Definition 2: Kein Eckpunkt liegt innerhalb des Umkreises eines anderen Dreiecks Antwort: Nein! M. Raspe 8 / 26 8 Konvexe Hülle ! Ein Problem der DelaunayTriangulierung ist, daß als Resultat immer die konvexe Hülle entsteht. ! Daher braucht man Algorithmen, die nachträglich die Kanten entfernen, die „man nicht haben will“ ! Typische Verfahren arbeiten auf Klassifikationen von Winkeln oder Kanten ! Definitiv ein schwieriges Problem M. Raspe 9 / 26 9 Triangulierung in 3D? ! Auch mit Delaunay? ! Im Prinzip ja, allerdings mit Tetraedern ! Minimaler Winkel in der Tetraeder-Spitze maximieren (Raumwinkel) ! Problem: welche der drei Flächen kann ich wegwerfen? ! Hier gibt es verschiedene Metriken… M. Raspe 10 / 26 10 Voronoi Diagramm ! ! ! Def.: Die Menge aller Punkte, die näher zum Punkt P sind, als zu allen anderen Punkten 4 5 6 3 Der duale Graph zur Delaunay Triangulierung 1 Einfacher Algorithmus ! ! 7 Nimm die Delaunay-Kanten Berechne Schnittpunkt der Mittelsenkrechten 2 8 M. Raspe 11 / 26 11 Typische Datenstruktur object surface surface surface polygon polygon polygon Object Surfaces polygon polygon Polygons Edges/ vertices e0 e1 e2 e3 en Edges v0 v1 v2 v3 vn Vertices Vertex Edge Wie berechnet man Nachbarn? M. Raspe 12 / 26 12 Probleme ! Viele Kanten müssen in beide Richtungen definiert sein ! Kante 3-5 und 5-3 5 3 ! Nachbarschaftsinformationen werden oft gebraucht: ! ! ! ! Gegeben ist ein Dreieck, welches sind die Nachbar-Dreiecke? Gegeben ist eine Kante, welche Dreiecke haben diese gemeinsam? Gegeben ist ein Eckpunkt, zu welchen Flächen gehört er? Gegeben ist ein Eckpunkt, zu welchen Kanten gehört er? M. Raspe 13 / 26 13 Adaptive Unterteilung ! Typische Datenstruktur: Quadtree ! Unterteilung in 4 selbstähnliche Objekte ! Adaptive Oberflächenunterteilung wird oft gebraucht, um Geometrie da zu erzeugen, wo sie gebraucht wird ! ! Radiosity: Adaption der Schattenkanten Deformation: Adaption der Krafteinwirkung 3 4 1 2 13 11 14 12 M. Raspe 14 / 26 14 Adaptive Unterteilung: Subdivide ! ! Implementierung der Routine „Subdivide“ (für Dreiecke) Generiere 3 neue Punkte ! ! 3 Seitenhalbierenden der Vaterkanten 1 4 Generiere 4 neue Kinderknoten ! 2 Schreibe die Eckpunkte im richtigen Uhrzeigersinn in die neuen Kinderknoten M. Raspe 15 / 26 15 Nachbarschaftssuche im Quadtree ! Min. Breite Min. Höhe Problem ! ! Man darf nur auf gleicher Ebene suchen Dann nach oben/unten etc. „herantasten“ M. Raspe 16 / 26 16 Winged-Edge Datenstruktur Topologische Datenstruktur ! ! ! ! ! Typischer „Tradeoff“ zwischen Speicherplatz und Rechenzeit Nachbarschaftssuche effizient möglich Für jede Kante ! ! ! ! Shirley: „This data structure makes edges the first-class citizen of the data structure“ ! Alle Nachbarschaftsinformationen mit gleichem Aufwand abfragbar Anfangs- und Endpunkt Benachbarte Fläche links/ rechts Nachfolgende Kante links/ rechts Vorausgehende Kante links/ rechts Es gibt auch „kleinere“ Datenstrukturen, ! ! z.B. Weglassen des Vorgängers Wir können die Nachfolger im Kreis ablaufen bis wir bei Original sind (mehr Rechenzeit, weniger Speicher) M. Raspe 17 / 26 17 Winged-Edge Datenstruktur ! Jede Kante wird nur einmal abgespeichert ! Die konkrete Speicherung ist nicht eindeutig, führt aber immer zum gleichen Ergebnis A b 0 d a 1 c e B edge a vertex vertex face face Vorg. Nachf. Vorg. Nachf. 1 2 links rechts links links rechts rechts B A 0 1 c b d e M. Raspe 18 / 26 18 D Winged-Edge: Beispiel 3 a e 0 A vertex vertex face face Vorg. Nachf. Vorg. Nachf. edge 1 2 links rechts links links rechts rechts A D 3 0 f e c b b A B 0 2 a c d f c B D 0 1 b a e d d B C 1 2 c e f b e C D 1 3 d c a f A f C A 3 2 e a b d C c b a 1 f 2 d B vertex edge face edge a 0 a B d 1 c ! Zusätzlich speichert man sich „Einstiegstabellen“ für Eckpunkte und/oder Flächen C d 2 d ! Die Tabellen enthalten eine angrenzende Kante (nicht immer eindeutig) D e 3 a M. Raspe 19 / 26 19 Beispiele ! Verfolgen von Kanten ! ! Z.B. gegen den Uhrzeigersinn Kanten von 0 verfolgen, bis Anfang wieder erreicht wird. Nachbarflächen von Fläche 1 ! ! vertex vertex face face Vorg. Nachf. Vorg. Nachf. 1 2 links rechts links links rechts rechts a A D 3 0 f b c e c A B 0 2 B D 0 1 a c d f b a e d d B C 1 e C D 1 2 c e f b 3 d c a f f C A 3 2 e a b d D Zeichne Fläche 0 ! ! Entscheidung ob Nachfolger rechts/links abhängig von Kantenrichtung edge Kanten von 1 verfolgen, bis Anfang wieder erreicht und Nachbarflächen einsammeln Welche Fläche grenzt an A ? ! siehe Übung 3 a A e 0 b 2 b f c 1 C d B vertex edge face edge A a 0 B d 1 c C d 2 d D e 3 a M. Raspe a 20 / 26 20 Zusammenfassung ! Erzeugung von Meshes aus Punktemengen ! ! ! ! Repräsentation von Dreiecksnetzen ! ! ! ! Delaunay: liefert konvexe Hülle Voronoi: duale Repräsentation beide auch im 3D Häufig werden Nachbarschaften gebraucht Kompromiss zwischen Speicheraufwand und Laufzeit Häufig Winged Edge (zunehmend auch Half Edge) Tools für Geometrie: „Computational Geometry Algorithms Library“ ! ! Open Source Projekt www.cgal.org M. Raspe 21 / 26 21 Nachtrag 22 Polygon: Flächenberechnung Die Fläche im Polygon kann tatsächlich als Summe aller (vorzeichenbehafteten) Dreiecksflächen berechnet werden (also für konkave und konvexe Polygone gleich). 1 n − → F = |∑ → r i+1 × − r i| 2 i M. Raspe 23 / 26 23 Parameterdarstellung X X X C = A + s · ( B − A) + t · (C − A) = (1 − s − t ) · A + s · B + t · C = r·A+s·B+t·C A X mit r = 1 − s − t B C X C XA A B X C A B B Interpretation der Koordinaten als Gewichte/Gewichtungen im Dreieck „Bi-Lineare Interpolation“ (Analog zu Gouraud-Shading) M. Raspe 24 / 26 24 Baryzentrische Koordinaten ! „Man betrachte ein masseloses Dreieck mit einem beliebigen Punkt P innerhalb der Dreiecksgrenzen. Die baryzentrischen Koordinaten von P sind diejenigen Gewichte mi, mit denen die Eckpunkte versehen werden müssen, damit ihr Schwerpunkt P ist. Die Summe aller Gewichte beträgt in diesem Zusammenhang 1“; (Bronstein & Semendjajew) ! (bary…: (gr.) schwer…) P M. Raspe 25 / 26 25 Erweiterungen ! ! Baryzentrische Koordinaten funktionieren nur für konvexe Dreiecke... Zahlreiche Erweiterungen für: ! ! ! ! MVC für korrekte PhongBeleuchtung (Hormann et al.) konvexe Polygone (Wachspress coordinates, Diskrete harmonische Funktionen usw.) beliebige Polygone sogar im 3D Verformung von 3D-Objekten (Ju et al.) Mean Value Coordinates (Floater et al.) ! ! ! sehr flexibel und schnell zahlreiche Anwendungen sehr gut für GPU geeignet MVC bei 2D-Transferfunktionen in Cascada (MedVis2) M. Raspe 26 / 26 26