2013-05-10 95 views
2

我試圖瞭解Three.js中的陰影,發現this nice example in jsfiddle。 但是我無法理解爲什麼當我降低光的y喜歡65,那就是:Three.js陰影無法正常工作

light.position.set(20, 65, 0); 

陰影完全消失。同時,70以上的所有東西都非常好,並且陰影被鑄造出來。像往常一樣,我可能錯過了一些明顯的東西,但我真的不明白什麼可以阻止光線產生這樣的影子。

回答

4

你可以試試:

light.shadowCameraVisible = true; 

要在屏幕上看到的光的位置和方向,這將幫助你瞭解正在發生變化。

希望它能幫助:)

+0

你可以發表你如何做到這一點的小提琴嗎?我試過這條線,但沒有任何改變。我認爲「太陽」顯示了光線的位置。或者不是嗎? – 2013-05-10 08:51:30

+0

對不起,我添加了錯誤的鏈接:(查看這一個http://jsfiddle.net/Fe7PQ/2/ – 2013-05-10 09:38:29

+1

我開始意識到我應該使用SpotLight。已經發現了它自己的一些例子,所以你的例子證明我我是對的,謝謝:) – 2013-05-10 09:47:54

6

這是發生,因爲陰影只能由和到light.shadowCamera的截內部的對象定投;在這種情況下,默認light.shadowCameraNear似乎設置爲約50,所以最終距離光源開始太遠,並且當光的position.y位於65時,該條不包括在內。當光線的position.y70時,shadowCamera最近的邊緣向上移動以包含條紋,並且陰影被正確投射。

您可以通過將light.shadowCameraNear設置爲更小的數字來解決此問題。在該小提琴中,取消註釋:

light.shadowCameraNear = 1; 

無論您移動燈光有多低,都會出現陰影。