Ãbungen zu den Lehrveranstaltungen 710.003 Computergrafik 1 ...
Ãbungen zu den Lehrveranstaltungen 710.003 Computergrafik 1 ...
Ãbungen zu den Lehrveranstaltungen 710.003 Computergrafik 1 ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
5 Rasterization („CG/task1b“)<br />
Unter Rasterisierung versteht man <strong>den</strong> Prozess bei dem graphische Primitive (Linien, Polygone, etc.) in eine<br />
Rastergrafik gewandelt wer<strong>den</strong>. Rasterizer bil<strong>den</strong> die Grundlage für einen Großteil aller heutigen <strong>Computergrafik</strong>systeme,<br />
vor allem im Bereich der Echtzeitgrafik. Zweck dieser Übung ist es mit <strong>den</strong> Grundlagen<br />
der Rasterisierung sowie dem Konzept einer Grafikpipeline und damit <strong>den</strong> wesentlichen Abläufen auf<br />
dem Weg von einer dreidimensionalen Szenenbeschreibung <strong>zu</strong> einem zweidimensionalen Abbild der Szene<br />
vertraut <strong>zu</strong> wer<strong>den</strong>. Da<strong>zu</strong> sollen die einzelnen Schritte einer vereinfachten Grafikpipeline implementiert<br />
wer<strong>den</strong>.<br />
Der <strong>zu</strong> implementierende Rasterizer soll auf Objekte, die aus Dreiecken <strong>zu</strong>sammengefügt sind anwendbar<br />
sein. Dreiecke verfügen über eine Reihe wünschenswerter Eigenschaften die sie <strong>zu</strong>m idealen Kandidaten<br />
für ein graphisches Primitiv machen, <strong>zu</strong>m Beispiel:<br />
• Dreiecke sind als einfachste zweidimensionale Form sehr simpel und effizient <strong>zu</strong> Rasterisieren.<br />
• Jedes komplexere Polygon lässt sich aus Dreiecken <strong>zu</strong>sammensetzen und auch beliebige räumliche<br />
Flächen können über Dreiecksnetze approximiert wer<strong>den</strong>.<br />
• Ein Dreieck bleibt auch unter einer perspektivischen Projektion immer ein Dreieck (außer in Grenzfällen<br />
wo ein Dreieck <strong>zu</strong>r Linie wer<strong>den</strong> kann).<br />
Aus all diesen Grün<strong>den</strong> sind Dreiecke die wichtigste Art von Primitiven in der <strong>Computergrafik</strong>. Praktisch<br />
alle Rasterizer heut<strong>zu</strong>tage arbeiten auf Basis von Dreiecken und auch der im Rahmen dieser Übung entwickelte<br />
soll hier keine Ausnahmen sein.<br />
Eine 3D Szene kann durch eine Liste von Dreiecken (gegeben durch die Positionen ihrer Vertices im Raum),<br />
sowie einigen Kameraparametern (Position, Ausrichtung, etc.) beschrieben wer<strong>den</strong>. Vor der Rasterisierung<br />
müssen die Dreiecke einer Reihe von Koordinatentransformationen unterzogen wer<strong>den</strong> um von <strong>den</strong> 3D<br />
Positionen <strong>zu</strong> <strong>den</strong> 2D Positionen an <strong>den</strong>en ein Dreieck schlussendlich ins Ausgabebild gezeichnet wer<strong>den</strong><br />
soll <strong>zu</strong> gelangen. Abschießend ist noch eine Überprüfung der Sichtbarkeit konkreter Pixel notwendig.<br />
5.1 Aufgaben<br />
Die Übung setzt sich aus <strong>den</strong> folgen<strong>den</strong> Schritten <strong>zu</strong>sammen:<br />
Einlesen der Dreieckslisten Die Dreieckslisten und alle anderen benötigten Paramter wer<strong>den</strong> aus einer<br />
Konfigurationsdatei (deren Name als einziges Argument beim Programmstart angegeben wird) gelesen.<br />
Das Format ist i<strong>den</strong>tisch <strong>zu</strong> dem bereits in „CG/task1a“ verwendeten und kann anhand der bereitgestellten<br />
Testcases nachvollzogen wer<strong>den</strong>.<br />
Vertex Tansformation (2 Punkte) Durch homogene Koordinaten lassen sich alle affinen Transformationen<br />
sowie eine perspektivische Projektion über Matrizen beschreiben. Die Position und Ausrichtung der<br />
virtuellen Kamera ist gegeben durch die Kameraposition eye, <strong>den</strong> Punkt auf <strong>den</strong> die Kamera gerichtet ist<br />
lookat und einen Richtungsvektor up, der die Rotation der Kamera um die Blickrichtung festlegt. Wie in<br />
Abbildung 23 dargestellt lassen sich aus diesen Parametern sehr einfach die Basisvektoren des Viewspace<br />
berechnen:<br />
cz =<br />
lookat − eye<br />
‖lookat − eye‖<br />
cx =<br />
up × cz<br />
‖up × cz‖<br />
cy = cz × cx (20)<br />
22