所以我正在使用ThreeJS中的阴影。我正在使用带有WebGLRenderer的Perspective Camera。照明设置就是这样。
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一起玩,但对我而言,这是在黑暗中完全刺伤。
我得到的是这种奇怪的阴影行为。我附上了一个屏幕截图,并用红色的箭头指向它。注意阴影是如何被切断的,就像光线从墙壁反射并消除阴影一样。有什么方法可以避免这种情况吗?
答案 0 :(得分:1)
影子相机最容易受到影响。您可以使用shadow camera helper:
进行检查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));