【发布时间】:2013-05-05 22:31:50
【问题描述】:
我想知道为什么需要完整的 Object3D 而不仅仅是 Vector3?在我看来,目标的作用只是设置锥体的方向。 Object3D 能否为 SpotLight 带来比原始 Vector3 更多的操纵魔法?
【问题讨论】:
我想知道为什么需要完整的 Object3D 而不仅仅是 Vector3?在我看来,目标的作用只是设置锥体的方向。 Object3D 能否为 SpotLight 带来比原始 Vector3 更多的操纵魔法?
【问题讨论】:
因为阴影贴图需要它作为其截锥体的参考。但是,我正在等待删除它并改用灯光中的距离属性。
【讨论】:
聚光灯具有位置、方向矢量、颜色、强度、角度、衰减。这些仅用于着色器中的计算,以确定某些片段被点亮的程度。
它可能没有做任何特殊的魔法,只是 Object3D 类有它的属性 .target,而 Mesh 和 SpotLight 类(实际上继承了 Object3D)都使用这个属性,但是用于不同的计算并且以不同的方式。 Target 属性也用于 Meshes 的 lookAt 矩阵,对于 SpotLights,您可以通过以下方式计算方向矢量:
vec3 dir = targeted_3d.position - spot_light.position;
这是关于重新使用已继承的属性,并为子类赋予它稍微不同的用法。
希望这会有所帮助。
【讨论】: