次の方法で共有


カメラ空間変換 (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 ビュー変換を含む行列

 

照明の計算