相機空間轉換 (Direct3D 9)
相機空間中的頂點是藉由使用世界檢視矩陣轉換物件頂點來計算。
V = V * wvMatrix
在相機空間中,頂點常態是藉由使用世界檢視矩陣的反向轉置來轉換對象常態來計算。 世界檢視矩陣不一定是正交。
N = N * (wvMatrix⁻ー)T
矩陣反轉和矩陣轉置會在 4x4 矩陣上運作。 乘法結合產生的 4x4 矩陣的 3x3 部分。
如果轉譯狀態,D3DRENDERSTATE_NORMALIZENORMALS會設定為 TRUE,轉換到相機空間之後,頂點法向量會正規化,如下所示:
N = norm(N)
相機空間中的光線位置是藉由使用檢視矩陣轉換光源位置來計算。
Lp = Lp * vMatrix
方向光線在相機空間中的光線方向是藉由將光源方向乘以檢視矩陣、正規化和否定結果來計算。
Ldir = -norm(Ldir * wvMatrix)
針對D3DLIGHT_POINT和D3DLIGHT_SPOT光線方向的計算方式如下:
Ldir = norm(V * Lp),其中參數定義於下表中。
參數 | 預設值 | 類型 | 描述 |
---|---|---|---|
Ldir | N/A | D3DVECTOR | 從物件頂點到光線的方向向量 |
V | N/A | D3DVECTOR | 相機空間中的頂點位置 |
wvMatrix | 身份 | D3DMATRIX | 包含世界和檢視轉換的複合矩陣 |
N | N/A | D3DVECTOR | 頂點一般 |
Lp | N/A | D3DVECTOR | 相機空間中的光線位置 |
vMatrix | 身份 | D3DMATRIX | 包含檢視轉換的矩陣 |
相關主題
-
光源 的 數學