Three.js 3.js阴影无法正常工作

Three.js 3.js阴影无法正常工作,three.js,shadow,light,Three.js,Shadow,Light,我试图学习Three.js中的阴影,我发现了。 但是我不明白为什么,当我把光的y降低到65时,那就是: light.position.set( 20, 65, 0 ); 阴影完全消失了。 同时,70岁以上的人一切都很好,阴影已经投射。像往常一样,我可能错过了一些明显的东西,但我真的看不到什么可以阻止光线形成阴影。您可以尝试: light.shadowCameraVisible = true; 要查看屏幕上灯光的位置和方向,这将帮助您了解正在发生的变化 希望有帮助:)之所以会发生这种情况,是因

我试图学习Three.js中的阴影,我发现了。 但是我不明白为什么,当我把光的y降低到65时,那就是:

light.position.set( 20, 65, 0 );
阴影完全消失了。 同时,70岁以上的人一切都很好,阴影已经投射。像往常一样,我可能错过了一些明显的东西,但我真的看不到什么可以阻止光线形成阴影。

您可以尝试:

light.shadowCameraVisible = true;
要查看屏幕上灯光的位置和方向,这将帮助您了解正在发生的变化


希望有帮助:)

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

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

light.shadowCameraNear = 1;

无论光线移动得多低,阴影都会出现。

你能介绍一下你是如何做到这一点的吗?我试过这句话,但没什么变化。我认为“太阳”显示了光的方向。或者不是吗?我开始意识到我应该使用聚光灯。我自己已经找到了一些例子,所以你的例子证明了我的方法是正确的。谢谢:)