1

我想知道为什么您需要完整的 Object3D 而不是 Vector3 作为目标?在我看来,目标的作用只是设置锥体的方向。Object3D 能否为 SpotLight 带来比原始 Vector3 更多的操纵魔法?

4

2 回答 2

2

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

于 2013-05-11T11:03:21.477 回答
0

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

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

vec3 dir = targeted_3d.position - spot_light.position;

这是关于重用已继承的属性,并为子类赋予它稍微不同的用法。

希望这可以帮助。

于 2013-05-11T10:16:30.537 回答