为什么SpotLight会在three.js中定位Object3D?

时间:2013-05-11 09:48:11

标签: three.js spotlight

我想知道你为什么需要完整的Object3D作为目标而不仅仅是Vector3?在我看来,目标的作用只是建立锥体的方向。 Object3D可以为SpotLight带来比原始Vector3更多的操纵魔法吗?

2 个答案:

答案 0 :(得分:2)

因为阴影贴图需要作为其视锥体的参考。但是,我正在等待删除它并在灯光中使用distance属性。

答案 1 :(得分:0)

聚光灯具有位置,方向矢量,颜色,强度,角度,衰减。这些仅用于着色器内的计算,以确定一些片段被点亮多少。

它可能没有做任何特殊的魔法,只是Object3D类具有它的属性.target,并且Mesh和SpotLight类(实际上继承Object3D)都使用此属性,但是用于不同的计算并且以不同的方式。目标属性也用于网格的lookAt矩阵,对于SpotLights,您可以通过执行以下操作来计算方向向量:

vec3 dir = targeted_3d.position - spot_light.position;

重新使用已继承的属性,并为子类提供略有不同的用法。

希望这有帮助。