2016-06-14 150 views
0

我需要爲所有場景投射陰影(DirectionalLight是最好的,是吧?),但質量很差,所以我正在嘗試進行設置陰影:開/關,低,正常,高:Three.js陰影質量更新

a = 512 ... 8192; B = 300 ... 8000

light.castShadow = checked; - no update (but if reload an objects it is work) 

    light.shadow.mapSize.width/height = a; - this works 

    light.shadow.camera.top/bottom/left/right = b; - no updating 

試圖看到的變化,但沒有任何工程:

light.shadow.camera.updateProjectionMatrix(); - shadows disappear at all 
scene.updateMatrixWorld(); 
camera.updateProjectionMatrix(); 
camera.updateMatrixWorld(); 
camera.updateMatrix(); 

的是什麼更好的方式做一個陽光? 以及如何重繪陰影?

添加一個例子來更好地理解我的意思 - > Example

回答

0

根據此鏈接:不能在運行時很容易地改變https://github.com/mrdoob/three.js/wiki/Updates

屬性(一旦材料 呈現在至少一次):

  • 數字和類型的制服
  • 數量和類型的燈光
  • 存在或不存在的:質地,霧,頂點顏色,剝皮,變形,陰影貼圖,alpha測試

變化這些都需要新的着色器程序的建設。您需要將material.needsUpdate標誌設置爲true。

+0

Thenk you for reply,but in does not help。問題是一樣的:只是場景的一部分(在中心)有陰影.. [示例](https://s31.postimg.org/lmw07ztsb/image.png)以更好地理解 –

+0

@IgorErsgow好的。如果增加相機平面(頂部,右側等),則還需要增加陰影貼圖大小。如果你設置b = 8000,那麼a = 8k(例如)。如果您需要隨時更改陰影質量,我認爲最簡單的方法是製作幾個光照實例並激活您選擇的實例。 – arnaldof

+0

感謝您的回覆!我明白你在說什麼,但好像你沒有得到任何問題。你能否請你看一個有問題的例子(最後一個鏈接)。在那裏,我試圖畫出問題....我也想過幾個燈光,但我認爲這不是製作高質量全景畫陰影的最佳方法。 –