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