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 |
Kapcsolódó témakörök
-
Világítási matematika