Kameraraumtransformationen (Direct3D 9)
Scheitelungen im Kameraraum werden berechnet, indem die Objektvertices mit der Weltansichtsmatrix transformiert werden.
V = V * wvMatrix
Scheitelpunktnormale im Kameraraum werden berechnet, indem die Objektnormale mit der umgekehrten Transponierung der Weltansichtsmatrix transformiert werden. Die Weltansichtsmatrix kann orthogonal sein oder nicht.
N = N * (wvMatrix⁻)T
Die Matrixinversion und matrix transponieren arbeiten mit einer 4x4-Matrix. Die Multiplikation kombiniert den Normalwert mit dem 3x3-Teil der resultierenden 4x4-Matrix.
Wenn der Renderzustand D3DRENDERSTATE NORMALIZENORMALS auf TRUE festgelegt ist, werden normale Vertexvektoren nach der Transformation in den Kameraraum wie _ folgt normalisiert:
N = norm(N)
Die Lichtposition im Kameraraum wird berechnet, indem die Position der Lichtquelle mit der Ansichtsmatrix transformiert wird.
Lp = Lp * vMatrix
Die Richtung zum Licht im Kameraraum für ein direktionales Licht wird berechnet, indem die Richtung der Lichtquelle mit der Ansichtsmatrix multipliziert, das Ergebnis normalisiert und negiert wird.
Ldir = -norm(Ldir * wvMatrix)
Für D3DLIGHT POINT und D3DLIGHT SPOT wird die Richtung zum Licht _ _ wie folgt berechnet:
Ldir = norm(V * Lp), wobei die Parameter in der folgenden Tabelle definiert sind.
| Parameter | Standardwert | type | BESCHREIBUNG |
|---|---|---|---|
| Ldir | NICHT ZUTREFFEND | D3DVECTOR | Richtungsvektor vom Objektvertex zum Licht |
| V | NICHT ZUTREFFEND | D3DVECTOR | Scheitelpunktposition im Kameraraum |
| wvMatrix | Identity | D3DMATRIX | Zusammengesetzte Matrix, die die Welt- und Ansichtstransformationen enthält |
| N | NICHT ZUTREFFEND | D3DVECTOR | Scheitelpunkt normal |
| Lp | NICHT ZUTREFFEND | D3DVECTOR | Lichtposition im Kameraraum |
| vMatrix | Identity | D3DMATRIX | Matrix, die die Ansichtstransformation enthält |