【问题标题】:Why is SpotLight target an Object3D in three.js?为什么 SpotLight 在 three.js 中以 Object3D 为目标?
【发布时间】:2013-05-05 22:31:50
【问题描述】:

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

【问题讨论】:

    标签: three.js spotlight


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      vec3 dir = targeted_3d.position - spot_light.position;
      

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

      希望这会有所帮助。

      【讨论】:

      • 我在 Object3D 和 Mesh 中都没有看到 .target 属性。
      猜你喜欢
      • 2013-03-07
      • 2012-08-08
      • 1970-01-01
      • 2016-02-18
      • 2014-03-02
      • 2021-01-02
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      相关资源
      最近更新 更多