2015-07-20 58 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精度,減小光錐的大小 –