カメラ空間トランスフォーム

カメラ空間トランスフォーム

カメラ空間の頂点は、オブジェクトの頂点をワールド ビュー行列でトランスフォームすることによって計算する。

V = V * wvMatrix

カメラ空間内の頂点の法線は、オブジェクトの法線をワールド ビュー行列の逆転置行列でトランスフォームすることによって計算する。ワールド ビュー行列は、正射影である場合とそうでない場合がある。

N = N * (wvMatrix-1)T

行列の逆変換と転置では、4 × 4 の行列を操作する。乗算は、その結果得られる 4 × 4 行列の 3 × 3 部分と、法線とを結合する。

レンダリング ステート D3DRENDERSTATE_NORMALIZENORMALS が TRUE に設定されている場合、頂点法線ベクトルはカメラ空間へのトランスフォームの後、次のように正規化される。

N = norm(N)

カメラ空間でのライトの位置は、光源の位置をビュー行列でトランスフォームすることによって計算する。

Lp = Lp * vMatrix

ディレクショナル ライトの場合、カメラ空間でのライトへの方向は、光源の方向をビュー行列で乗算し、その結果を正規化して正負を反転することによって計算する。

Ldir = -norm(Ldir * wvMatrix)

D3DLIGHT_POINT および D3DLIGHT_SPOT の場合は、ライトへの方向は次のように計算する。

Ldir = norm(V * Lp)。これらのパラメータの定義を次の表に示す。

パラメータ デフォルト値 Type 記述
Ldir 不適用 D3DVECTOR オブジェクトの頂点からライトへの方向ベクトル
V 不適用 D3DVECTOR カメラ空間での頂点の位置
wvMatrix Identity D3DMATRIX ワールドとビューのトランスフォームを含む合成行列
N 不適用 D3DVECTOR 頂点法線
Lp 不適用 D3DVECTOR カメラ空間でのライトの位置
vMatrix Identity D3DMATRIX ビューのトランスフォームを含む行列