Share via


Transformationen des Kameraraums (Direct3D 9)

Scheitelpunkte im Kamerabereich werden berechnet, indem die Objektvertices mit der Weltansichtsmatrix transformiert werden.

V = V * wvMatrix

Vertexnormale im Kameraraum werden berechnet, indem die Objektnormale mit der umgekehrten Transponierung der Weltsichtmatrix transformiert werden. Die Weltansichtsmatrix kann orthogonal sein oder nicht.

N = N * (wvMatrix⁻¹)T

Die Matrixinversion und die Matrixtransponierung arbeiten auf einer 4x4-Matrix. Die Multiplikation kombiniert die Normalität mit dem 3x3-Teil der resultierenden 4x4-Matrix.

Wenn der Renderzustand D3DRENDERSTATE_NORMALIZENORMALS auf TRUE festgelegt ist, werden vertexnormale Vektoren 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 gerichtetes Licht wird berechnet, indem die Lichtquellenrichtung mit der Ansichtsmatrix multipliziert, normalisiert und das Ergebnis negiert wird.

Ldir = -norm(Ldir * wvMatrix)

Für die 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 Typ Beschreibung
Ldir D3DVECTOR Richtungsvektor vom Objektvertex zum Licht
V D3DVECTOR Vertexposition im Kamerabereich
wvMatrix Identität D3DMATRIX Zusammengesetzte Matrix, die die Welt- und Ansichtstransformationen enthält
N D3DVECTOR Scheitelpunktnormal
Lp D3DVECTOR Lichtposition im Kamerabereich
vMatrix Identität D3DMATRIX Matrix mit der Ansichtstransformation

 

Mathematik der Beleuchtung