Polygontechniken

Werbung
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).
Herunterladen