0

所以我正在使用 ThreeJS 中的阴影。我正在使用带有 WebGLRenderer 的透视相机。照明设置是这样的。

var light = new THREE.SpotLight(0xdddddd, 1);
light.castShadow = true;
light.shadow = new THREE.LightShadow(new THREE.PerspectiveCamera(60, 1, 1, 2500));
light.shadow.bias = 0.0001;
light.shadow.mapSize.width = 1024;
light.shadow.mapSize.height = 1024;
light.position.set(100, 800, 0);

当我靠近墙壁时,我得到的是一个被切断的阴影。我玩过Shadow Bias,但对我来说,这完全是在黑暗中刺伤。

我得到的是这种奇怪的阴影行为。我附上了一个屏幕截图,并用红色圈出了它,并带有一个指向它的箭头。注意阴影是如何被切断的,就好像光线从墙上反射并抵消了阴影一样。有什么办法可以避免这种情况?

在此处输入图像描述

4

1 回答 1

1

最有可能的阴影相机frustm是缩小。您可以使用阴影相机助手检查它:

var helper = new THREE.CameraHelper( light.shadow.camera );
scene.add( helper );

由于性能,阴影相机的尺寸有限,但您可以调整它的每个平面以满足您的需要,或者只是增加它的角度(例如从 60 到 90):

light.shadow = new THREE.LightShadow(new THREE.PerspectiveCamera(90, 1, 1, 2500));

于 2016-10-06T22:19:37.307 回答