Computergrafik

Normalen

Z-Puffer | | GL Matrizen

Ebenso wie die Eckpunkte der Geometrie, mĂĽssen die Normalen fĂĽr die Beleuchtungsberechnung spezifiziert und ins Beobachterkoordinatensystem transformiert werden.

Problem: Nach der Transformation einer Normale mit einer Matrix M, hat die Normale nicht notwendigerweise mehr die selbe Länge wie vor der Transformation (Skalierung). Die Normale steht auch nicht notwendigerweise mehr senkrecht auf der Fläche (nicht-uniforme Skalierung bzw. Scherung).

Sei t der Tangentenvektor an die Fläche, und n der Normalenvektor der Fläche.

Trick: $n \cdot t = 0$$n^Tt = 0$

$n^TM^{-1}Mt = 0$

$(n^TM^{-1})(Mt) = 0$

$→ (Nn)^T = (n^TM^{−1})

Nach Transponierung:

$Nn = {M^{-1}}^Tn$

Multiplikation mit n, Annahme $|n|=1$:

$N = {M^{-1}}^T$

Daraus folgt, dass Normalen mit der transponierten inversen Modellierungstransformationsmatrix N multipliziert werden mĂĽssen, damit sie weiterhin senkrecht bleiben.

Vertices werden mit der $M_{MVP}$ transformiert und Normalen mit ${{M_{MV}}^{-1}}^T$.

Bemerkung: Die Grafikhardware berechnet die transponierte invertierte Matrix automatisch aus der Modelview-Matrix.

Z-Puffer | | GL Matrizen

Options: