Graphische Datenverarbeitung und Bildverarbeitung Hochschule Niederrhein Clippen in 2D und 3D Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 1 Einordnung in die Inhalte der Vorlesung Einführung mathematische und allgemeine Grundlagen Hardware für Graphik und Bildverarbeitung Graphische Grundalgorithmen (Zeichnen graphischer Primitive, Methoden für Antialaising, Füllalgorithmen) Bildaufnahme (Koordinatensysteme, Transformation) Durchführung der Bildverarbeitung und -analyse Fourier Transformation Bildrestauration Bildverbesserung (Grauwertmodifikation, Filterverfahren) Segmentierung Morphologische Operationen Merkmalsermittlung und Klassifikation Erzeugung von Bildern in der Computergraphik Geometrierepräsentationen Transformationen in OpenGL Clipping in 2D und 3D Hidden Surface Removal Beleuchtungsberechnung Shading Volumenrendering als Beispiel für die Nutzung beider Gebiete Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 2
19.1 Einleitung Motivation und Anwendung: Clippen: Einleitung Abschneiden einer geometrischen Beschreibung an einem Clipkörper. Anwendungen: Fenstersysteme: Abschneiden der dargestellten Geometrie an den Fenstergrenzen (Bestandteil des Graphiksystems von Fenstersystemen) Abschneiden von 3d-Geometrien am Sichtkörper (Pyramidenstumpf bzw. Quader) Abschneiden eines verdeckten Polygons an einem davor liegenden Polygon (HSR) Exploration von Daten mit einer Clipebene Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 3 Einleitung Anwendungen von Clipping: Links: Clippen am Sichtkörper Mitte: Clippen bei der Bestimmung verdeckter Kanten Rechts: Clippen am Viewport Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 4
Was heißt Clippen? Einleitung 1. Entscheiden, welche Graphikprimitive komplett gezeichnet werden. 2. Entscheiden, welche Teile von Graphikprimitiven gezeichnet werden Schnittpunktberechnungen zwischen Graphikprimitiven und Clipgeometrie Geschlossene Polygone bzw. Polyeder sind nach dem Abschneiden nicht mehr geschlossen. Berechnung von verbindenden Kanten/Flächen. Beim Rendering muss das Clippen für jedes Polygon in 3d und für die sichtbaren Polygone nach Projektion in 2d durchgeführt werden. Zahl der Schnittpunktberechnungen minimieren. Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 5 19.2 Clippen von Liniensegmenten an Rechtecken Lagebeziehungen zwischen Linie (p 1, p 2 ) und Rechteck: 1. p 1 und p 2 innerhalb (AB) Linie komplett innerhalb (accept) 2. p 1 und p 2 außerhalb und jenseits der gleichen Kante (CD) Linie komplett außerhalb (reject) Bei 1. und 2. nutzt man Konvexität einer Linie 3. p 1 und p 2 außerhalb aber in Bezug auf verschiedene Kanten -> testen, ob es zwei Schnittpunkte gibt (GH) 4. p 1 innerhalb p 2 außerhalb (EF) Berechne Schnittpunkt zwischen p 1; p 2 und dem Rechteck 5. p 1 außerhalb und p 2 innerhalb Vertauschen von p 1 und p 2 und dann vorgehen wie Fall 4 Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 6
Clippen von Liniensegmenten an Rechtecken Test, ob Punkt p im achsenparallelen Rechteck (xmin, xmax, ymin, ymax): If (p(x)>=xmin && p(x)<=xmax && p(y)>=ymin && p(y)<=ymax) inside = true; Schnittpunktberechnungen: 1. Identifizieren der geschnittenen Rechteckkante Tests separat durchführen, ggf. kommen zwei Kanten in Frage (siehe EF) 2. Schnittpunktberechnung mit dieser (diesen) Kante(n) Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 7 Clippen von Liniensegmenten an Rechtecken Cohen-Sutherland-Algorithmus: Bestimme für jeden Eckpunkt (x;y) ein Bitfeld, das angibt, ob Eckpunkt jenseits des entsprechenden Wertes ist. 1. Bit: y > ymax, 2. Bit: y < ymin, 3. Bit: x > xmax, 4. Bit: x < xmin 1001 1000 1010 0001 0000 0010 0101 0100 0110 Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 8
Clippen von Liniensegmenten an Rechtecken Cohen-Sutherland-Algorithmus: outcode (p1) und outcode (p2) seien die Bitfelder der Eckpunkte: if (outcode (p1) == 0000 && outcode (p2) == 0000) accept; if (outcode (p1) & outcode (p2)!= 0000) // bitweises und reject; if (outcode (p1) outcode (p2)!= 0000) calculate_intersection (p1, p2, x_min, x_max, y_min, y_max) Schnittpunktberechnung hängt von der Linienrepräsentation ab. Parametrische Darstellung günstig, weil keine Sonderfälle (z.b. vertikale Linien) auftreten. Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 9 Clippen von Liniensegmenten an Rechtecken Cohen-Sutherland-Algorithmus: A (0000) B (0000) o1 o2 = 0 ACCEPT C (0110) D (0010) o1 & o2 <> 0 REJECT E (0000) F (1010) o1 = 0, o2 <> 0 ACCEPT (Linie verkürzen) G (0001) H (1000) o1 & o2 = 0? (Schnittpunkttest mit den Seiten des Fensters) Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 10
Clippen von Liniensegmenten an Rechtecken Parametrische Liniendarstellung: p(t) = (1-t) p 1 + t p 2. Für t 0 und t 1 Linie von p 1 zu p 2. Wenn es einen Schnittpunkt zwischen (p 1 ; p 2 ) und einer Rechteckkante (r 1 ; r 2 ) gibt, dann gibt es Parameter s und t, mit s in (0,1) und t in (0,1) so dass r(s) = (1-s) r 1 + s r 2 = p(t). Lösung: Gleichungen für x und y-komponente der Punkte aufstellen und gleichsetzen (2 Gleichungen; 2 Unbekannte) Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 11 Clippen von Liniensegmenten an Rechtecken Beispiel: Schnittpunktberechnung mit der unteren Rechteckkante (x min ;y min ) (x max ; y min ) Schnittpunktberechnung an horizontalen und vertikalen Kanten vereinfacht sich. I. (1-t) x 1 + t x 2 = (1-s)x min + s x max II. (1-t) y 1 + t y 2 = (1-s)y min + s y min (1-t) y 1 + t y 2 = y min -t y 1 + t y 2 = y min - y 1 ymin y1 t = y y 2 1 Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 12
Clippen von Liniensegmenten an Rechtecken Zusammenfassung: Clipprozedur für eine Linie (x 1 ;y 1 ) (x 2 ; y 2 ) an einem Rechteck erzeugt neue Linie (x 3 ;y 3 ) (x 4 ; y 4 ), wobei (x 3 ;y 3 ) und (x 1 ;y 1 ) sowie (x 2 ; y 2 ) und (x 4 ; y 4 ) gleich sein könnten. Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 13 19.3 Clippen von Polygonen an Rechtecken Grundsätzlich kann das Clippen von Polygonen (p 1 ;p 2 ; ; p n ) an Rechtecken durch sukzessives Clippen der Linien (p i ;p i+1 ) durchgeführt werden. Problem: Konkave Polygone Durch Clippen kann ein konkaves Polygon in mehrere Polygone zerfallen. Lösungsmöglichkeiten: Unterteilung des Polygons in konvexe Polygone (z.b. Triangulierung) oder Einführen von zusätzlichen Kanten. Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 14
Clippen von Polygonen an Rechtecken Einfügen von zusätzlichen Kanten, um geschlossenes Polygon zu repräsentieren Triangulierung eines konkaven Polygons. Zusammenhang zwischen Dreiecken und Polygon muss repräsentiert werden. Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 15 Clippen von Polygonen an Rechtecken Clippen in einer Pipeline-Architektur: sukzessive an den 4 Rändern clippen. Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 16
Sutherland-Hodgman Clipping Zuschneiden eines gegebenen Polygons schrittweise an den vier Geraden des Darstellungsfensters Entscheidung, welche Eckpunkte übernommen und welche neuen Punkte hinzugefügt werden Vier Fälle können dabei auftreten: Beide Punkte außerhalb des Fensters kein Punkt wird übernommen (A B) Kante von außen nach innen (B C) Übernahme von Schnittpunkt S 1 und Endpunkt C Beide Punkte liegen innerhalb des Fensters (C D) Übernahme des Endpunktes D Kante von innen nach außen (D A) Übernahme des Schnittpunktes S 2 Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 17 Sutherland-Hodgman Clipping Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 18
Sutherland-Hodgman Clipping Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 19 19.4 Clippen in 3D Wesentlicher Unterschied zwischen 2D und 3D: 2D: Schnittpunktberechnungen zwischen zwei Linien (Clipgeometrie durch Begrenzungslinien charakterisiert) 3D: Schnittpunkte liegen i. a. nicht auf den Kanten der Clipgeometrie. Schnittpunktberechnungen zwischen Linien und Flächen. Linie: p 1 p 2 Ebene: p 0 und n (Normale, senkrecht) (I) p(t) = (1-t) p 1 + t p 2 (II) n (p(t) p 0 ) =0 n t = n ( p0 p1 ) ( p p ) 2 1 Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 20
Clippen in 3D Erweiterung des Cohen-Sutherland-Algorithmus durch Ergänzen der Bitfelder pro Eckpunkt (2 zusätzliche Bits repräsentieren Vergleich mit z min und z max ) Für Schnittpunktberechnung in parametrischer Form wird eine 3. Gleichung ergänzt, die sich auf die z-koordinaten bezieht. Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 21 Clippen in 3D Clippen von Linien gegen achsenparallele Quader (Sichtbereich bei der Parallelprojektion). Vereinfachung wie im 2D-Fall. Clippen von Linien gegen Pyramidenstumpf (perspekt. Projektion): Scherung des Sichtkörpers achsenparalleler Quader entsteht. Bei einer Pipeline-Architektur wird sukzessive gegen die 6 Begrenzungsflächen eines Quaders getestet. Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 22
19.5 Effizientes Clippen komplexer geometrischer Objekte Schnittpunktberechnungen sind sehr aufwändig für - Große Polygone - Parametrische Kurven - Text Intern wird Text häufig durch parametrische Kurven repräsentiert (Skalierbarkeit) und diese werden wiederum in Polygone umgewandelt. Schnittpunktberechnungen sind sehr effizient für einfache Formen (Kugeln, Quader). Effiziente Verfahren nutzen einfache (konvexe) Formen als Hüllkörper und testen, ob Hüllkörper geclippt werden muss. Nur wenn Hüllkörper teilweise innerhalb und teilweise außerhalb der Clipgeometrie ist, werden aufwändigere Tests durchgeführt. Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 23 Effizientes Clippen komplexer geometrischer Objekte Clippen von großen Polygonen mit Bounding Boxen Clippen von komplexeren Geometrien Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 24
19.6 Clipebenen zur Exploration von 3D-Daten Einschränkung der dargestellten Daten durch Bewegung einer Clipebene Bewegung einer Schnittebene durch 3D-Daten unterstützt z.b. die medizinische Diagnostik von Computertomographiedatensätzen. Kombination mehrerer Clipebenen möglich (Hardwareunterstützung für bis zu 6 Clipebenen) Slab Rendering: Kopplung von 2 Schnittebenen (vordere und hintere Begrenzung), wobei der Abstand gleich bleibt. Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 25 Clipebenen zur Exploration von 3D-Daten Selektives Clippen: Die Clipebene wirkt sich nur auf bestimmte Objekte aus. Quelle: Höhne et al. 96 Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 26
Zusammenfassung Clippen ist eine wichtige Aufgabe im Renderingprozess. Clippen der Geometrie in 3D am Sichtkörper. Clippen der transformierten und projizierten Polygone an den Viewportgrenzen Clippen von komplexeren Geometrien wird auf Clippen von Polygonen und schließlich von Linien zurückgeführt. Clippen ist aufwändig, weil Schnittpunktberechnungen (Linie- Linie bzw. Linie-Fläche) nötig sind. Effiziente Verfahren reduzieren die Zahl der notwendigen Schnittpunktberechnungen, z.b. durch Bounding Box-Tests. Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 27