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.

Abbildung 27: Dreiecke rasterisiert mit Top-Left Fill-Convention.<br />

Visibility (3 Punkte) Ohne Berücksichtigung anderer Dreiecke und deren Tiefe, wer<strong>den</strong> Dreiecke einfach<br />

in der Reihenfolge, in welcher der Rasterizer sie bearbeitet gezeichnet. Da sich Dreiecke im Raum in<br />

der Regel natürlich gegenseitig verdecken oder gar durchdringen können ist dies für die Darstellung von<br />

3D Szenen un<strong>zu</strong>reichend. Um das Sichtbarkeitsproblem <strong>zu</strong> lösen bedienen wir uns eines Depth-Buffers<br />

(Z-Buffer). Dabei handelt es sich um einen <strong>zu</strong>sätzlichen Buffer in dem für je<strong>den</strong> Pixel ein Tiefenwert gespeichert<br />

wird. Bevor ein Pixel überschrieben wird, wird <strong>zu</strong>erst überprüft ob der Tiefenwert des neuen<br />

Pixels kleiner (Pixel liegt näher am Betrachter) oder gleich dem momentan im Depth-Buffer befindlichen<br />

Tiefenwert ist. Nur wenn dies der Fall ist wird der Pixel gezeichnet. So wer<strong>den</strong> alle Dreiecke unabhängig<br />

von ihrer Rasterisierungsreihenfolge immer korrekt dargestellt. Um diesen Algorithmus implementieren<br />

<strong>zu</strong> können muss für je<strong>den</strong> Pixel dessen Tiefenwert bekannt sein. Dieser wird berechnet indem nicht nur<br />

die Position sondern – nach dem selben Prinzip (DDA Algorithmus) – auch die Tiefenwerte der Vertices<br />

entlang der Kanten und dann von Beginn <strong>zu</strong>m Ende jeder Scanline linear interpoliert wer<strong>den</strong>.<br />

5.2 Programmgerüst<br />

Das <strong>zu</strong>r Verfügung gestellte Programmgerüst enthält bereits die notwendige Infrastruktur (Konfigurationsdatei<br />

einlesen, Ausgabebild speichern, etc.). Um die Übungsaufgabe <strong>zu</strong> lösen müssen nur noch die<br />

jeweiligen Metho<strong>den</strong> der Klasse Rasterizer entsprechend implementiert wer<strong>den</strong>:<br />

• Rasterizer::SetCamera(): Hier wer<strong>den</strong> die View- und Projectionmatrix berechnet.<br />

• Rasterizer::TransformVertex(): Diese Methode transformiert einen Vertex vom Worldin<br />

<strong>den</strong> Screenspace und liefert ein entsprechendes Objekt vom Typ ScreenVertex <strong>zu</strong>rück.<br />

• Rasterizer::RasterizeTriangle(): Implementiert das Rasterisieren eines Dreiecks.<br />

26

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!