2016-12-17 186 views
1

使用orbitcontrols.js(帶有THREE.js),我想在代碼中實現與旋轉鼠標滾輪相同的效果。例如,我想調用諸如camera.zoomIn()之類的東西,並讓它向目標移動一段距離。有人知道怎麼做嗎?orbitcontrols.js:如何放大/縮小

回答

2

查看源代碼,您可以在OrbitalControls對象上調用.dollyIn(dollyScale).dollyOut(dollyScale)

編輯:這些不是公共方法;可以通過編輯OrbitalControls.js來訪問它們。

我將this.dIn = dollyIn;添加到THREE.OrbitControls函數中,我現在可以通過從外部調用controls.dIn(1.05); controls.update();進行放大。

+0

謝謝克里斯,則意味着這個 功控制=新THREE.OrbitControls(照相機,renderer.domElement); 後面跟着這樣的東西 controls.dollyIn(.5); 對不對?我得到一個對象不支持屬性或方法錯誤。我嘗試過所有的組合,包括直接調用dollyIn,因爲它不是OrbitControls對象的成員,我總是得到相同的結果。 –

+0

你是對的;我找到了一種方法並編輯了我的答案。 –

+0

克里斯,謝謝! –

0

至少對於簡單的情況下,可以更改相機的位置,這自動地更新OrbitControls(例如通過因子相乘xyz)。

實施例與<input type="range">滑塊:

zoomer.addEventListener('input', function(e) { 
    var zoomDistance = Number(zoomer.value), 
     currDistance = camera.position.length(), 
     factor = zoomDistance/currDistance; 

    camera.position.x *= factor; 
    camera.position.y *= factor; 
    camera.position.z *= factor; 
}); 

https://codepen.io/Sphinxxxx/pen/yPZQMV