1

Vector3 だけでなく、完全な Object3D がターゲットとして必要なのはなぜですか? ターゲットの役割は、コーンの方向を設定するだけのように思えます。Object3D は生の Vector3 よりも多くの操作魔法を SpotLight にもたらすことができますか?

4

2 に答える 2

2

シャドウ マッピングでは、錐台の参照としてそれが必要になるためです。ただし、私はそれを削除することを保留しており、代わりにライトで距離プロパティを使用しています。

于 2013-05-11T11:03:21.477 に答える
0

スポット ライトには、位置、方向ベクトル、色、強度、角度、フォールオフがあります。これらはシェーダー内の計算に使用され、一部のフラグメントがどれだけ照らされているかを判断します。

おそらく特別な魔法は何もしません。Object3D クラスには属性 .target があり、メッシュ クラスとスポットライト クラス (実際には Object3D を継承する) の両方がこの属性を使用しますが、異なる計算と少し異なる方法で使用します。Target アトリビュートは、メッシュの lookAt マトリックスにも使用されます。SpotLight の場合、次のようにして方向ベクトルを計算できます。

vec3 dir = targeted_3d.position - spot_light.position;

継承された属性を再利用し、子クラスに少し異なる使用法を与えることです。

お役に立てれば。

于 2013-05-11T10:16:30.537 に答える