【问题标题】:Three.js shadows not working properlyThree.js 阴影无法正常工作
【发布时间】:2023-12-26 20:04:01
【问题描述】:

我试图了解 Three.js 中的阴影,我找到了this nice example in jsfiddle。 但是我不明白为什么,当我将光的 y 降低到 65 时,就是:

light.position.set( 20, 65, 0 );

阴影完全消失。 同时,70以上的一切都很好,阴影也投射出来了。像往常一样,我可能遗漏了一些明显的东西,但我真的看不出是什么阻止了光线形成阴影。

【问题讨论】:

    标签: three.js shadow light


    【解决方案1】:

    发生这种情况是因为阴影只会被light.shadowCamera 的截锥体内部的对象投射并投射到其上;在这种情况下,默认的light.shadowCameraNear 似乎设置为大约50,因此视锥体开始时离光源太远,并且当灯光的position.y 位于65 时,该条不包括在内。当灯光的position.y70 时,shadowCamera 平截头体的最近边缘向上移动以包括条形,并且阴影被正确投射。

    您可以通过将light.shadowCameraNear 设置为较小的数字来解决此问题。在那个小提琴中,取消注释该行:

    light.shadowCameraNear = 1;
    

    无论你将灯光移动多低,阴影都会出现。

    【讨论】:

      【解决方案2】:

      你可以试试:

      light.shadowCameraVisible = true;
      

      要查看屏幕上灯光的位置和方向,这将帮助您了解发生了什么变化。

      希望对你有帮助:)

      【讨论】:

      • 你能发一下你是怎么做到的吗?我试过这条线,但没有任何改变。我认为“太阳”显示了光的去向。还是不行?
      • 我开始意识到我应该使用 SpotLight。我自己已经找到了一些例子,所以你的例子证明我走对了。谢谢:)
      最近更新 更多