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

Mathematik der Beleuchtung