Tesselation Vortrag im Rahmen des Seminars Computergrafik II Dozent: Dipl.-Phys. Olaf Müller Student: Amir Sekic Übersicht Was ist Tesselation? Was sind Tesselators? Polygon Triangulation Shading Problems Edge Cracking T-Vertices Tesselation Tesselation – Zerlegung von Polygonen in primitive Flächen: Dreiecke und Vierecke. to tesselate - mit Mosaik pflastern , schmücken. Triangulation – Zerlegung von Polygonen in Dreiecke. Dreiecke sind fast wie Atome,da fast jede Fläche in Dreiecke zerlegt werden kann. Gründe für Tesselation Viele Grafik - API-s und Grafikkarten sind für Dreiecke optimiert oder können nur konvexe Polygone behandeln (convex partitioning). Über die Fläche soll ein Netz aufgespannt werden, um Schatten und reflektiertes Licht zu regulieren. Separieren kleiner Teile der Fläche. Tesselators Das erste, was ein Tesselator tun soll, ist ein 3-D Polygon in die günstigste Ebene zu projezieren. Die beste Projektionsseite ist die mit der größten Projektionsfläche, um self-intersection (Kreuzung der Polygonkanten) zu vermeiden. Ein Weg ist die Koordinaten der Normale mit der größten Magnitude auf die Null zu setzen. Tesselators Dieses Verfahren eliminiert die meisten, aber nicht alle Kreuzungen der Polygonkanten. Es kann ein sogenanntes Bowtie-Viereck entstehen. In diesem Fall wird ein Vergleich der Polygonkanten notwendig. Für 2-D und 3-D kann man es mit der Methode der Linienvergleiche überprüfen. Tesselators Der nächste Schritt ist die Zerlegung in konvexe Regionen (ein sehr komplexes und langsames Verfahren), im Teil Polygon Triangulation wird dieses später näher erklärt. Hierbei sind die Hohlräume und die winding number zu beachten. Tesselators Die Idee bei den Hohlräumen ist ein vorsichtiges Verbinden von zwei Vertices der inneren und äußeren Kante. Dabei erhält man ein Polygon mit einer inneren und einer äußeren Region. Tesselators winding number – gibt an, wie oft der Punkt von der Kontur des Polygons umlaufen wird bzw. wie viele Konturen ihn umschließen. Man geht von außen nach innen vor. Wenn man die Kante im Uhrzeigersinn abläuft, wird die Zahl um eins erniedrigt, im anderen Fall um eins erhöht. Tesselators Die Winding Rule klassifiziert einen Bereich als Innen, wenn die winding number zur gewählten Kategorie gehört, nämlich ungerade, ungleich null,positiv, negativ oder Iwinding numberI<=2. Polygon Triangulation Dreieckszerlegungen von Polygonen ohne Kantenüberschneidungen und Hohlräume. Verfahren: Zerlegung in monotone Regionen (Polygonen) und dann in Dreiecke. Polygon Triangulation Definition: Ein Polygon ist monoton in Beziehung zur Linie l, wenn für jede Linie l‘ die orthogonal zur l ist beim Schneiden mit Polygonkanten eine Linie (Segment) oder ein Punkt entsteht. Polygon Triangulation Das Verfahren: Wir gehen vom obersten Vertex zum niedrigsten. Wenn sich die Laufrichtung an einem Vertex von oben nach unten oder von unten nach oben ändert haben wir ein Turn Vertex. Definition: p ist oberhalb von g wenn py<=gy und px>gx ist, p ist unterhalb von g wenn py>=gy und px<gx ist. Polygon Triangulation Es gibt 5 verschiedene Vertices die folgendermaßen definiert sind: Start Vertex: wenn die Nachbarn unterhalb liegen und der innere Winkel < Pi ist; wenn der Winkel > Pi ist, dann ist das ein Split Vertex. Polygon Triangulation End Vertex: wenn die Nachbarn unterhalb liegen und der Winkel < Pi ist; wenn der Winkel > Pi ist, dann ist es ein Merge Vertex. Alle anderen sind Reguläre Vertices. Um monotone Polygone zu bekommen muss man Split und Merge Vertices eliminieren. Polygon Triangulation Bei Split Vertices wird die Diagonale zum nächsthöheren (bezogen auf den yWert) Vertex gezogen wenn die Diagonale innerhalb des Polygons liegt. Bei Merge Vertices wird die Diagonale zum nächstniedrigeren Vertex gezogen. Polygon Triangulation Triangulation monotoner Regionen Der Algorithmus: Input: Ein Polygon P, gelagert in einer doppeltverketteten Liste, ein leerer Keller. Output: Dreieckszerlegung von Polygon P. Shading Problems Manchmal sind auf Polygone Netze aufgespannt, die aus Vierecken bestehen(um Bowtie zu vermeiden). Was ist der beste Weg, die Vierecke in die Dreiecke zu zerlegen? Shading Problems Für die Flächen ohne zusätzliche Informationen ist es das Beste, die kürzeste Diagonale zu nehmen. Bei Vertices die unterschiedliche Farbwerte haben verbindet man die Vertices mit dem kleinsten Farbwertunterschied. Bei Landschaften gibt es mehrere Möglichkeiten, abhängig von den gewünschten Effekten: Shading Problems Die Diagonale mit dem größten Winkel zwischen den Dreiecken nehmen. Verbinden der zwei Vertices mit dem größten und dem kleinsten Höhenunterschied. Diejenige Diagonale nehmen, die zwei Dreiecke mit dem minimalsten Größenunterschied produziert. Shading Problems Es gibt Fälle, in denen Dreiecke das Innere von Vierecken nicht richtig darstellen können. Ein Weg ist, ein Netz aufzuspannen oder ein anderes Interpolationsschema für die Textur zu nehmen. Ein anderer Weg ist, Gouard Shading auf das ganze Viereck anzuwenden. Edge Cracking Einige Modeller benutzen NURBS um Kurven zu beschreiben, meistens sind über die Spline Flächen Netze aufgespannt. Vorgehensweise: Man geht schrittweise über die Fläche und berechnet die Vertices und Normalen. Ein Problem entsteht wenn sich zwei Spline Flächen treffen. Edge Cracking Wenn die Vertices auf der gemeinsamen Kante nicht gleich sind, können sogenannte Cracks entstehen. Edge-Stitching nennt man den Prozess um dieses Problem zu korrigieren. Hierbei ist sicher zu stellen, dass alle Vertices der gemeinsamen Kante gemeinsam für beide Splines sind. T-Vertizes Dieses Problem entsteht wenn zwei Regionen versuchen die Vertices an der gemeinsamen Kante zu teilen. Ein Weg dies zu vermeiden ist die Benutzung grafischer Hardware mit Subpixel Addressing, ein anderer Weg das Finden und Sicherstellen solcher Kanten, bei denen die Vertices auf der gemeinsamen Kante allen Flächen gehören(eine oft sehr schwierige Prozedur).