Kameraraumtransformationen
Scheitelpunkte im Kamerabereich werden berechnet, indem die Objektvertices mit der Weltansichtsmatrix transformiert werden.
V = V * wvMatrix
Vertexnormale werden im Kamerabereich berechnet, indem die Objektnormalen mit der umgekehrten Transponierung der Weltansichtsmatrix transformiert werden. Die Weltansichtsmatrix kann orthogonal sein.
N = N * (wvMatrix⁻¹)T
Die Matrixinversion und Matrixtransponierung werden mit einer 4x4-Matrix ausgeführt. Die Multiplikation kombiniert die Normalität mit dem 3x3-Teil der resultierenden 4x4-Matrix.
Wenn der Renderzustand auf die Normalisierung festgelegt ist, werden vertexnormale Vektoren nach der Transformation in den Kameraraum wie folgt normalisiert:
N = Norm(N)
Die Lichtposition im Kamerabereich wird berechnet, indem die Position der Lichtquelle mit der Ansichtsmatrix transformiert wird.
Lp = Lp * vMatrix
Die Richtung zum Licht im Kamerabereich für ein direktionales Licht wird berechnet, indem die Lichtquellenrichtung durch die Ansichtsmatrix, Normalisierung und Negierung des Ergebnisses multipliziert wird.
Ldir = -norm(Ldir * wvMatrix)
Für ein Punktlicht und ein Spotlight wird die Richtung des Lichts wie folgt berechnet:
Ldir = norm(V - Lp), wobei die Parameter in der folgenden Tabelle definiert sind.
Parameter | Standardwert | Typ | Beschreibung |
---|---|---|---|
Ldir | N/V | 3D-Vektor (X-, Y- und Z-Gleitkommawerte) | Richtungsvektor vom Objektvertex zum Licht |
V | N/V | 3D-Vektor (X-, Y- und Z-Gleitkommawerte) | Vertexposition im Kamerabereich |
wvMatrix | Identität | 4x4-Matrix von Gleitkommawerten | Zusammengesetzte Matrix, die die Welt- und Ansichtstransformationen enthält |
N | N/V | 3D-Vektor (X-, Y- und Z-Gleitkommawerte) | Vertexnormal |
Lp | N/V | 3D-Vektor (X-, Y- und Z-Gleitkommawerte) | Lichtposition im Kamerabereich |
vMatrix | Identität | 4x4-Matrix von Gleitkommawerten | Matrix, die die Ansichtstransformation enthält |
Verwandte Themen