Megosztás a következőn keresztül:


Kameratér átalakítások (Direct3D 9)

A kameratér csúcsai úgy vannak kiszámítva, hogy átalakítják az objektum csúcsait a világnézeti mátrixmal.

V = V * wvMatrix

A csúcspontok normáljait a kameratérben úgy számítjuk ki, hogy átalakítjuk az objektum normáljait a világnézeti mátrix inverz transzponálásával. A világnézeti mátrix lehet ortogonális vagy nem.

N = N * (wvMatrix⁻¹)T

A mátrix inverziója és a mátrix transzponálása 4x4 mátrixon működik. A szorzás egyesíti a normált az eredményül kapott 4x4 mátrix 3x3-szorzatával.

Ha a renderelési állapot D3DRENDERSTATE_NORMALIZENORMALS igaz van beállítva, a csúcsok normál vektorai normalizálódnak a kameratérre való átalakítás után az alábbiak szerint:

N = norm(N)

A kameratérben a fényhelyzet kiszámítása a fényforrás helyzetének a nézetmátrixtal történő átalakításával történik.

Lp = Lp * vMatrix

A kameratérben lévő fény irányát úgy számítjuk ki, hogy megszorozzuk a fényforrás irányát a nézetmátrixmal, normalizáljuk és negáljuk az eredményt.

Ldir = -norm(Ldir * wvMatrix)

A D3DLIGHT_POINT és D3DLIGHT_SPOT a fény iránya a következőképpen lesz kiszámítva:

Ldir = norm(V * Lp), ahol a paraméterek az alábbi táblázatban vannak definiálva.

Paraméter Alapértelmezett érték Típus Leírás
Ldir N/A D3DVECTOR Irányvektor az objektum csúcsától a fényig
V N/A D3DVECTOR Csúcshelyzet a kameratérben
wvMatrix Azonosság D3DMATRIX A világot és a nézetátalakításokat tartalmazó összetett mátrix
N N/A D3DVECTOR Csúcspont normál
Lp N/A D3DVECTOR Fényhelyzet a kameratérben
vMatrix Azonosság D3DMATRIX A nézetátalakítást tartalmazó mátrix

 

Világítási matematika