次の方法で共有


カメラの空間変換

カメラ空間内の頂点は、ワールド ビュー マトリックスによってオブジェクト頂点を変換することにより計算されます。

V = V * wvMatrix

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

N = N * (wvMatrix⁻¹)T

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

レンダリングの状態が法線の正規化に設定されている場合、頂点法線ベクトルはカメラ空間への変換の後、次のように正規化されます。

N = norm(N)

カメラ空間でのライトの位置は、光源の位置をビュー行列で変換することによって計算します。

Lₚ = Lₚ * vMatrix

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

Ldir = -norm(Ldir * wvMatrix)

ポイント ライトとスポット ライトの場合は、ライトへの方向は次のように計算します。

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

パラメーター 既定値 説明
Ldir 該当なし 3D ベクトル (x、y、z 浮動小数点値) オブジェクトの頂点からライトへの方向ベクトル
V 該当なし 3D ベクトル (x、y、z 浮動小数点値) カメラ空間での頂点の位置
wvMatrix ID 浮動小数点値の 4 x 4 マトリックス ワールドとビューの変換を含む合成行列
× 該当なし 3D ベクトル (x、y、z 浮動小数点値) 頂点法線
Lₚ 該当なし 3D ベクトル (x、y、z 浮動小数点値) カメラ空間でのライトの位置
vMatrix ID 浮動小数点値の 4 x 4 マトリックス ビュー変換を含む行列

 

光源の計算