Delen via


Cameraruimtetransformaties (Direct3D 9)

Hoekpunten in de cameraruimte worden berekend door de objecthoeken te transformeren met de wereldweergavematrix.

V = V * wvMatrix

Hoekpuntnormalen, in de cameraruimte, worden berekend door de objectnormalen te transformeren met de inverse transponeren van de wereldweergavematrix. De wereldweergavematrix mag wel of niet orthogonaal zijn.

N = N * (wvMatrix⁻¹)T-

De matrixinversion en matrixtransponeren werken op een 4x4-matrix. De vermenigvuldiging combineert het normale met het 3x3-gedeelte van de resulterende 4x4-matrix.

Als de renderstatus is ingesteld op D3DRENDERSTATE_NORMALIZENORMALS TRUE, worden hoekpunt normale vectoren als volgt genormaliseerd na transformatie naar cameraruimte:

N = norm(N)

De lichtpositie in de cameraruimte wordt berekend door de lichtbronpositie te transformeren met de weergavematrix.

Lp = Lp * vMatrix

De richting naar het licht in de cameraruimte voor een directioneel licht wordt berekend door de lichtbronrichting te vermenigvuldigen met de weergavematrix, normaliseren en het resultaat te negeren.

Ldir = -norm(Ldir * wvMatrix)

Voor de D3DLIGHT_POINT en D3DLIGHT_SPOT wordt de richting naar licht als volgt berekend:

Ldir = norm(V * Lp), waarbij de parameters zijn gedefinieerd in de volgende tabel.

Parameter Standaardwaarde Type Beschrijving
Ldir N.V.T D3DVECTOR Richtingsvector van objectpunt naar het licht
V N.V.T D3DVECTOR Hoekpuntpositie in cameraruimte
wvMatrix Identiteit D3DMATRIX Samengestelde matrix met wereld- en weergavetransformaties
N N.V.T D3DVECTOR Hoekpunt normaal
Langspeelplaat N.V.T D3DVECTOR Lichte positie in cameraruimte
vMatrix Identiteit D3DMATRIX Matrix met de weergavetransformatie

 

Wiskunde van Verlichting