18.07.2014 Aufrufe

Übungen zu den Lehrveranstaltungen 710.003 Computergrafik 1 ...

Übungen zu den Lehrveranstaltungen 710.003 Computergrafik 1 ...

Übungen zu den Lehrveranstaltungen 710.003 Computergrafik 1 ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!