Processing math: 100%
Computergrafik

Normalen

Per-Vertex Attribute | | Interpolierte Parameter

Ebenso wie die Eckpunkte der Geometrie, müssen die Normalen z.B. für eine Beleuchtungsberechnung spezifiziert und ins Beobachterkoordinatensystem transformiert werden.

Problem: Normalen lassen sich nicht mit Hilfe der gleichen Matrix transformieren wie die Vertices.

Weiteres 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).

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

Trick: nt=0nTt=0

nTM1Mt=0

(nTM1)(Mt)=0 (1)

Für das transformierte System gilt
(Nn)(Mt)=0(Nn)T(Mt)=0

Vergleich mit (1) ergibt
>(Nn)T=(nTM1)

Nach Transponierung:
Nn=M1Tn

Skalarprodukt mit 1|n|2n:
N=M1T

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

Vertices werden mit der MMV transformiert und Normalen mit (MMV1)T.

Zusätzlich muss die Normale nach der Transformation renormalisiert werden, wenn die Matrix M nicht orthonormal war.

Live Demo: GLSL Normal Transformation (T11c)

Per-Vertex Attribute | | Interpolierte Parameter

Options: