我想知道你为什么需要完整的Object3D作为目标而不仅仅是Vector3?在我看来,目标的作用只是建立锥体的方向。 Object3D可以为SpotLight带来比原始Vector3更多的操纵魔法吗?
答案 0 :(得分:2)
因为阴影贴图需要作为其视锥体的参考。但是,我正在等待删除它并在灯光中使用distance属性。
答案 1 :(得分:0)
聚光灯具有位置,方向矢量,颜色,强度,角度,衰减。这些仅用于着色器内的计算,以确定一些片段被点亮多少。
它可能没有做任何特殊的魔法,只是Object3D类具有它的属性.target,并且Mesh和SpotLight类(实际上继承Object3D)都使用此属性,但是用于不同的计算并且以不同的方式。目标属性也用于网格的lookAt矩阵,对于SpotLights,您可以通过执行以下操作来计算方向向量:
vec3 dir = targeted_3d.position - spot_light.position;
重新使用已继承的属性,并为子类提供略有不同的用法。
希望这有帮助。