我试图了解Three.js中的阴影,我发现this nice example in jsfiddle。 但是我无法理解为什么当我将光线的y降低到65时,就是:
light.position.set( 20, 65, 0 );
阴影完全消失。 与此同时,70以上的一切都非常精细,并且投下阴影。像往常一样,我可能会遗漏一些明显的东西,但我真的看不出有什么可以防止光线产生阴影。
答案 0 :(得分:6)
这种情况正在发生,因为阴影只会被light.shadowCamera
的截头体内的物体施放;在这种情况下,默认light.shadowCameraNear
似乎设置为大约50
,因此截头光源距离光源太远,而当灯光position.y
位于65
时酒吧不包括在内。当灯光position.y
为70
时,shadowCamera
截头柱的最近边缘向上移动以包含条形,阴影投射正确。
您可以通过将light.shadowCameraNear
设置为较小的数字来解决此问题。在那个小提琴中,取消注释:
light.shadowCameraNear = 1;
无论移动灯光有多低,都会出现阴影。
答案 1 :(得分:4)
您可以尝试:
light.shadowCameraVisible = true;
要在屏幕上查看灯光的位置和方向,这将有助于您了解正在发生的变化。
希望有所帮助:)