2017-01-27 48 views
1

有沒有人有任何想法如何更改相機的camera.position.z(與鼠標滾輪),並使滾動效果?用鼠標滾輪改變相機position.z在threejs

當我嘗試使用變量時,它不起作用。

+0

我不能確定是什麼「並滾動效果」的意思,而是要改變攝像機的位置和停止頁面滾動,你會......將一個'scroll'事件監聽器添加到renderer dom元素中,並在監聽器函數中改變攝像機位置並調用'event.preventDefault()'來防止頁面滾動。 – 2pha

+0

我有一個垂直的網格,我想將攝像頭移動到Z軸上,而不是使它與瀏覽器滾動,我有溢出:隱藏的身體 –

+0

滾動事件的問題是,速度增加時間 –

回答

1

TrackballControlsOrbitControls來自示例可用於啓用縮放(以及旋轉和平移)。見例如https://threejs.org/examples/?q=contro#misc_controls_trackball

包括您可以找到下載的軟件包中three.js-master/examples/js/controls/控件之一:

<script src="three.js-master/examples/js/controls/OrbitControls.js"></script> 

並添加到您的代碼

var controls = new THREE.OrbitControls(camera, renderer.domElement); 
controls.addEventListener('change', render); 

和縮放應該工作開箱。

如果您只對縮放感興趣,可以禁用其他功能。

this.enableKeys = false; 
this.enablePan = false; 
this.enableRotate = false; 

參見OrbitControls來源更多的選擇OrbitControls

+0

我想要鼠標滾輪改變攝像頭的位置,並將其用作上下滾動,並且在我只需要該控件後,並非包含在包 –

0

現在我在這裏:

const scl=0; 

$(window).on('DOMMouseScroll mousewheel', function (e) { 


if(e.originalEvent.detail > 0 || e.originalEvent.wheelDelta < 0) { 

    while(scl==0) { 

     scl+=0.05; 
       camera.position.z+=scl; 
       //console.log("1."+" "+scl); 
    } 

} else { 

    while(scl==0) { 


     scl+=0.05; 
       camera.position.z-=scl; 
       //console.log("2."+" "+scl); 
    } 

} 
//console.log("3."+" "+scl);; 
scl=0; 
}); 

window.setInterval(function(){ 
    scl=0; 
}, 10); 
+0

中的所有其他答案都回答了您自己的問題....這是否意味着你解決了你的問題? – 2pha

+0

不,答案仍然不起作用,但代碼不適用於評論回答部分,對不起,我沒有使用jfiddle,我沒有考慮過它。 –