2

我试图了解 Three.js 中的阴影,我在 jsfiddle 中找到了这个很好的例子。但是我无法理解为什么,当我将光的 y 降低到 65 时,即:

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

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

4

2 回答 2

6

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

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

light.shadowCameraNear = 1;

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

于 2013-07-25T17:52:46.247 回答
4

你可以试试:

light.shadowCameraVisible = true;

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

希望能帮助到你 :)

于 2013-05-10T08:44:46.463 回答