prev up next


Aufgabe 11.4 (50 Punkte)

Implementiert im Fragment Shader ein direktes Beleuchtungsmodell (nur diffuser Anteil) für gerichtetes Licht (Richtung: Ausgehend von der Sonnenposition zum Ursprung des Koordinatensystem (=Erdmittelpunkt)). Verwendet dazu die bereits in den Shadern vorhandenen Oberflächennormalen. Hinweis: Für die folgenden Teilaufgaben müssen die Java Klassen OriginSphere, Renderer und Scene angesehen bzw. geändert werden. Lasst die Sonne um die Erde rotieren. Verseht dazu die Variable sunPosition mit dem qualifier uniform, berechnet pro Frame eine neue Position für die Sonne und übergebt die Daten an OpenGL. Tipp: Funktioniert analog zur Übergabe der mvpMatrix. Entspricht das Ergebnis der Beleuchtungsberechnung eurer Erwartung? Wie kann die Qualität verbessert werden? Diskutiert dies mit Eurem Tutor.

Musterlösung vom 30.06.2010:

Die Lösung findet sich unter /home/cg/Uebung/Blatt11/Lsg/Link1.zip  .

Nach dem Verschieben der Vertices sind die Flächennormalen nicht mehr korrekt. Folglich führt die Auswertung des Beleuchtungsmodells zu falschen Ergebnissen, die weiterhin denen einer nicht mit einer Displacement Map manipulierten Kugel entsprechen. Dementsprechend müssen auch die Normalen nach der Verschiebung neu berechnet werden. Beispielsweise können in der Applikation für alle Dreiecke die Flächennormalen bestimmt werden. Jeder Vertex erhält dann als neue Normale den Mittelwert der Normalen derjenigen Dreiecke, von denen er Eckpunkt ist.

Die Lösung findet sich unter /home/cg/Uebung/Blatt11/Lsg/Link2.zip  .


prev up next