カメラ空間変換 (Direct3D 9)
カメラ空間内の頂点は、ワールド ビュー マトリックスによってオブジェクト頂点を変換することにより計算されます。
V = V * wvMatrix
カメラ空間内の頂点の法線は、オブジェクトの法線をワールド ビュー行列の逆転置行列で変換することによって計算します。 ワールド ビュー行列は、正射影である場合とそうでない場合があります。
N = N * (wvMatrix⁻¹)T
行列の逆変換と転置では、4 × 4 の行列を操作します。 乗算は、その結果得られる 4 × 4 行列の 3 × 3 部分と、法線とを結合します。
レンダリング状態D3DRENDERSTATE_NORMALIZENORMALS が TRUE に設定されている場合、頂点法線ベクトルはカメラ空間への変換後に次のように正規化されます。
N = norm(N)
カメラ空間でのライトの位置は、光源の位置をビュー行列で変換することによって計算します。
Lₚ = Lₚ * vMatrix
指向性ライトの場合、カメラ空間でのライトへの方向は、光源の方向をビュー行列で乗算し、その結果を正規化して正負を反転することによって計算します。
Ldir = -norm(Ldir * wvMatrix)
D3DLIGHT_POINTとD3DLIGHT_SPOTの場合、ライトの方向は次のように計算されます。
Ldir = norm(V * Lp) です。パラメーターは次の表で定義されています。
パラメーター | 既定値 | 型 | 説明 |
---|---|---|---|
Ldir | 該当なし | D3DVECTOR | オブジェクトの頂点からライトへの方向ベクトル |
V | 該当なし | D3DVECTOR | カメラ空間での頂点の位置 |
wvMatrix | ID | D3DMATRIX | ワールドとビューの変換を含む合成行列 |
× | 該当なし | D3DVECTOR | 頂点法線 |
Lₚ | 該当なし | D3DVECTOR | カメラ空間でのライトの位置 |
vMatrix | ID | D3DMATRIX | ビュー変換を含む行列 |
関連トピック