Dela via


Transformering av kamerautrymme (Direct3D 9)

Hörn i kamerautrymmet beräknas genom att objekthörn transformeras med matrisen för världsvyer.

V = V * wvMatrix

Hörnnormaler beräknas i kamerautrymmet genom att transformera objektnormalerna med inverterad transponering av världsvymatrisen. Matrisen för världsvyn kan vara ortoggonisk eller inte.

N = N * (wvMatrix⁻¹)T

Matrisens inversion och matris transponerar fungerar på en 4x4-matris. Multiplicera kombinerar det normala med 3x3-delen av den resulterande 4x4-matrisen.

Om återgivningstillståndet D3DRENDERSTATE_NORMALIZENORMALS är inställt på TRUE-normaliseras hörnens normala vektorer efter omvandlingen till kamerautrymmet på följande sätt:

N = norm(N)

Ljuspositionen i kamerautrymmet beräknas genom att ljuskällans position transformeras med visningsmatrisen.

Lp = Lp * vMatrix

Riktningen mot ljuset i kamerautrymmet för ett riktningsljus beräknas genom att ljuskällans riktning multipliceras med visningsmatrisen, normalisera och negera resultatet.

Ldir = -norm(Ldir * wvMatrix)

För D3DLIGHT_POINT och D3DLIGHT_SPOT beräknas ljusriktningen enligt följande:

Ldir = norm(V * Lp), där parametrarna definieras i följande tabell.

Parameter Standardvärde Typ Beskrivning
Ldir Ej tillämpligt D3DVECTOR Riktningsvektor från objekthörn till ljus
V Ej tillämpligt D3DVECTOR Hörnposition i kamerautrymme
wvMatrix Identitet D3DMATRIX Sammansatt matris som innehåller världen och visar transformeringar
N Ej tillämpligt D3DVECTOR Hörn normal
Lp Ej tillämpligt D3DVECTOR Ljus position i kamerautrymme
vMatrix Identitet D3DMATRIX Matris som innehåller vytransformering

 

matematik för belysning