Share via


スポットライト モデル

スポットライト モデル

スポットライトは、明るい内部コーンおよび外部コーンの 2 つの部分を持つ光のコーンを放射する。ライティングは、内部コーンの内側が最も明るく、外部コーンの外側にはライティングが存在しない。ライティングの強度は、この 2 つの領域の間で減衰する。一般に、このような減衰をフォールオフと呼ぶ。

頂点が受ける光の量は、内部コーン内または外部コーン内での頂点の場所に基づいている。Microsoft® Direct3D® では、スポットライトの方向ベクトル (L) と頂点からライトへのベクトル (D) の内積を計算する。この値は、2 つのベクトルがなす角度の余弦に等しく、ライティングのコーン角度と比較できる頂点位置を示すので、内部コーンまたは外部コーンのどちらに頂点があるかを判断するのに役立つ。次の図は、これら 2 つのベクトルの間の関係を示している。

スポットライトの方向ベクトルと頂点からスポットライトへのベクトル

システムは、この値をスポットライトの内部および外部コーンの角度の余弦と比較する。スポットライトの D3DLIGHT9 構造体の Theta および Phi メンバは、内部および外部コーンの角度の合計を表す。減衰は、全コーン角度にわたってではなく、ライティングの中心から頂点が離れることによって生じるため、Direct3D はコーン角度を半分に割ってから余弦を計算する。

ベクトル LD の内積が外部コーンの角度の余弦以下の場合、頂点は外部コーンの外側に存在し、ライティングで照らされない。LD の内積が内部コーン角度の余弦より大きい場合、頂点は内部コーンの内側に存在し、最大量のライティングで照らされる (ただし、距離の増加による減衰を考慮する)。頂点が 2 つの領域の間にある場合、Direct3D は次の公式を使って頂点におけるライティングのフォールオフを計算する。

頂点におけるフォールオフ後の光の強度の公式

この公式では、If はライティングの当たる頂点におけるフォールオフ後の光の強度、αはベクトル LD がなす角度、φは外部コーンの角度の半分の角度、θは内部コーンの角度の半分の角度、p はスポットライトのフォールオフ プロパティ (D3DLIGHT9 構造体の Falloff) である。この公式では、頂点における光の強度を定める 0.0 ~ 1.0 の値を求めて、ライトのフォールオフを示す。ライティングから頂点までの距離の係数として減衰も適用される。p 値は、D3DLIGHT9 構造体の Falloff メンバに対応し、フォールオフ カーブの形状を制御する。次の図は、Falloff 値によってフォールオフ カーブがどのように変化するかを示している。

光の強度とライトからの頂点の距離の対比グラフ

Falloff 値が変化しても実際のライティングに与える影響はわずかであり、Falloff 値が 1.0 以外のときに形成されるフォールオフ カーブで若干のパフォーマンス低下が生じるのみである。これらの理由により、通常、この値は 1.0 に設定される。