Aufgabe 4.3 (25 Punkte)
Kopieren Sie die Klasse main.TranslateAndRotatePolygon nach
main.TranslateRotateAndScalePolygon und den Vertexshader
MainTR_VS.glsl nach MainTRS_VS.glsl.
- Lassen Sie das Programm den Vertexshader MainTRS_VS.glsl
und den Fragmentshader MainBrightness_FS.glsl in der Methode
main() laden.
- Erweitern Sie die Klasse um eine Klassenvariable scalation
vom Typ org.lwjgl.util.vector.Vector2f, in der die aktuelle
Skalierung in - und -Richtung des 12-Ecks gespeichert wird.
- Erweitern Sie die Methoden handleInput() und updateUniforms(),
sodass sie folgende Funktionen zusätzlich erfüllen:
- In handleInput() soll nun zusätzlich geprüft werden, ob die
Tasten , , oder
gedrückt sind und damit die Variable scalation verändert
werden.
- In updateUniforms() soll zusätzlich aus der Variable scalation
eine Skalierungsmatrix erzeugt werden und diese als uniform
Variable scale vom Typ mat4 dem Shaderprogramm übergeben
werden.
- Verändern Sie den Vertexshader MainTRS_VS.glsl, sodass er
eine uniform Variable scale vom Typ mat4
bereitstellt und mit dessen Hilfe die Skalierung der Vertexposition
sowie der -normalen verändert. Normalisieren sie die Normale anschließend
wieder.
- Zusatzaufgabe: Implementieren Sie, dass man mittels der
bzw. die Lichtausrichtung rotieren kann. Hinweis:
Auch ohne Bearbeitung dieser Aufgabe können Sie 100% der Punkte erreichen.
Musterlösung vom 23.05.2012:
Die Quellen finden sich hier:
/home/cg/2012/Uebung/Blatt4/Lsg/CG12Blatt4.zip