2015-07-20 25 views
1

我有阴影在工作的麻烦。在下面的图片中,您可以看到聚光灯在具有平面几何图形的物体上投射阴影。在靠近飞机的聚光灯和墙壁的平面几何之间没有任何物体。THREE.js聚光灯铸造阴影与近平面和接收器之间没有任何物体

什么会导致此类行为?

Three.js spotlight

的光被配置成这样:

var spotLight = new THREE.SpotLight(0xFFFFFF, 1); 
spotLight.position.set(0, -20, 100); 
spotLight.target.position.set(0,0,0); 
spotLight.shadowDarkness = 0.5; 
spotLight.shadowCameraVisible = true; 
spotLight.castShadow = true; 
spotLight.shadowMapWidth = 1024; 
spotLight.shadowMapHeight = 1024; 

spotLight.shadowCameraNear = 10; 
spotLight.shadowCameraFar = 200; 
spotLight.shadowCameraFov = 10; 
spotLight.shadowBias = 0.1; 
scene.add(spotLight); 

矩形网格是BufferGeometriesPlaneGeometries转换与PNG UV映射图像与.receiveShadow集到true质感。

THREE.js版本r71。

任何帮助将非常感激。

回答

1

也许这是自我阴影,试着玩spotLight.shadowBias。通常,值为0.05用于避免自我阴影。

+0

感谢@ Ale_32,改变'.shadowBias'的值将自身阴影向上或向下移动一半,不会使它消失......我读过它与'.shadowCameraFov'值有关太小了......所以,这意味着如果没有这种自我阴影神器,你就不能创造出一盏小灯。 – user1398498

+1

在这种情况下,使用'.shadowBias'的小_negative_值来减轻自我阴影伪影。 – WestLangley

+1

您也可以尝试-0.05作为值...或者,您可以提高阴影贴图的z精度,减小光锥的大小 –