prev up next


Aufgabe 10.3 (40 Punkte)

Implementieren Sie jetzt das tatsächliche Flat-Shading mit dem in der Vorlesung vorgestellten Beleuchtungsmodell.

Ihre Szene soll von einem Punktlicht mit den Koordinaten $(0,5,2,1)$, einer Grundintensität $I_e$ von 10 und Abschwächungsfaktoren $C_1 = 1$, $C_2 = 0.05$ beleuchtet werden. Schaffen Sie eine geeignete Datenstruktur für die Repräsentation einer Punktlichtquelle.

Ergänzen Sie nun Ihre DrawableObjects um die Möglichkeit die in der Vorlesung genannten Oberflächen-Eigenschaften vorhalten zu können. Gehen Sie davon aus, dass für alle Objekte zunächst die Werte $k_a = 0.25$, $k_s = 0.1$, $k_d = 0.2$ gelten. Wir gehen von einem vereinfachten Flat-Shading aus und färben Objekte nur in Graustufen ein. Sie können davon ausgehen, dass sowohl die diffuse als auch die spekulare Objektfarbe weiß (also $1.0$) ist. Als spekularen Exponenten $O_e$ wählen Sie standardmäßig $3.0$.

Implementieren Sie nun eine geeignete Methode, die für einen Eckpunkt eines Ihrer Dreiecke mit Hilfe der neuen Beleuchtungsangaben eine Farbe (i.e., einen Grauwert) berechnet. Gehen Sie dabei davon aus, dass die Intensität der ambienten Beleuchtung $I_a$ 0.5 beträgt und die Intensität $I_e$ der Punktlichtquelle für die diffuse Reflexion mit der Entfernung abnimmt, d.h. $I_e = cos(L,N) \cdot \frac{I_0}{C_1 + C_2 * r}$, wobei r der euklidische Abstand des Eckpunktes zur Lichtquelle ist. Da im Term für die spekulare Beleuchtung der Cosinus bereits berücksichtigt wird, können Sie hier annehmen, dass $I_e = \frac{I_0}{C_1 + C_2 * r}$.

Ergänzen Sie schließlich Ihre Viewing-Pipeline so, dass jeder der drei Eckpunkte separat beleuchtet wird und färben Sie dann das entsprechende Dreieck mit dem Durchschnittswert der Farben ein. Mit obigen Werten sollten an der Kugel alle drei Beleuchtungseffekte deutlich sichtbar werden. Machen Sie sich klar, was die einzelnen Faktoren für eine Bedeutung haben, so dass Sie diese Ihrem Tutor erklären können.

Musterlösung vom 23.06.2010:
Die Lösung findet sich unter /home/cg/Uebung/Blatt10/Lsg/draw3d-mlg.jar  .


prev up next