prev up next


Aufgabe 4.3 (25 Punkte)

Kopieren Sie die Klasse main.TranslateAndRotatePolygon nach main.TranslateRotateAndScalePolygon und den Vertexshader MainTR_VS.glsl nach MainTRS_VS.glsl.

  1. Lassen Sie das Programm den Vertexshader MainTRS_VS.glsl und den Fragmentshader MainBrightness_FS.glsl in der Methode main() laden.
  2. Erweitern Sie die Klasse um eine Klassenvariable scalation vom Typ org.lwjgl.util.vector.Vector2f, in der die aktuelle Skalierung in $x$- und $y$-Richtung des 12-Ecks gespeichert wird.
  3. Erweitern Sie die Methoden handleInput() und updateUniforms(), sodass sie folgende Funktionen zusätzlich erfüllen:

    1. In handleInput() soll nun zusätzlich geprüft werden, ob die Tasten $\uparrow$, $\downarrow$, $\rightarrow$ oder $\leftarrow$ gedrückt sind und damit die Variable scalation verändert werden.
    2. 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.
    3. 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.
  4. Zusatzaufgabe: Implementieren Sie, dass man mittels der $NUM4$ bzw. $NUM6$ 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 


prev up next