2013-11-03 54 views
0

我試圖改變聚光燈對象的shadowCameraFov財產使用的onChange方法,在此改變spotLight.shadowCameraFov是代碼:「對飛」

gui.add(controls, 'spotCameraFov', 30, 270).onChange(function (e) { 
      spotLight.shadowCameraFov = e; 
      console.log(e); 
    }); 

我可以看到,值變化(從console.log),但它實際上不會影響投影燈照相機CameraFov。任何關於如何使其可行的建議?

回答

1

以下是你需要遵循的模式:

gui.add(controls, 'shadowCameraFov', 30, 120).onChange(function() { 

    spotLight.shadowCameraFov = controls.shadowCameraFov; 
    spotLight.shadowCamera.fov = spotLight.shadowCameraFov; 
    spotLight.shadowCamera.updateProjectionMatrix(); 

}); 

這裏你可以看到一個活生生的例子:http://threejs.org/examples/webgl_shading_physical.html。控件位於右上角。

three.js r.62

+0

謝謝。情況就是如此。你能解釋一下爲什麼它第一次工作 - 當你定義新的聚光燈時,你可以寫spotLight.shadowCameraFov = x並將它設置爲這個值,當你更新這個值時,你必須在你的回答中提到步驟? –

+0

ShadowMapPlugin.js在第一次調用中處理這些步驟。如果您更改參數,則需要手動重複相同的步驟。研究源代碼以獲取更多信息。 – WestLangley