Task 5.1

  • Hat irgendjemand Tips für diesen Task?


    Ich weiß nicht so wirklich wie ich anfangen soll. Mir ist das PDF leider nicht ganz klar, vorallem das mit dem Tangentenvektor...


    Da ich mich in einer SceneObject Unterklasse befinde hab ich Zugriff auf Transformationen und Modelmatrix, aber was hilft mir das genau bzw. was ist zu tun?


    Danke

  • Im Vertex Shader musst du letztendlich die Model-Koordinaten jedes eingehenden Vertex in World-Koordinaten (bzw. optional in jenes Koordinaten-System in dem du die Lichtberechnung durchführen willst) transformieren. Das geschieht für Vertices, welche ja einfach nur Punkte auf einer Geometrie darstellen, ganz einfach mit der Model-Matrix. Jeder Vertex enthält aber auch einen Normalvektor der für das Shading ebenfalls von Model zu World transformiert werden muss.
    Ein Normalvektor stellt aber keinen Punkt auf einer Oberfläche dar, sondern eine Richtung von einer Oberfläche. Im angesprochenen PDF wird einfach nur durch Algebra erklärt, dass die Modelmatrix für diesen Zweck das falsche Ergebnis liefert. Siehe dazu die PDF Figure 6.15 rechtes Bild, wir wollen den Normalvektor Nn, bekommen durch die Modelmatrix aber Mn, welcher nicht mehr normal auf die Oberfläche ist. Deswegen müssen wir in Geometry.getNormalMatrix eine spezielle Matrix berechnen.
    Lange Rede, kurzer Sinn, du musst letztendlich nur die NormalMatrix aus der ModelMatrix mit der Formel ganz am Ende des PDF berechnen : ) (!Achtung Indizes!)