2015-05-18 66 views
0

我試圖通過拖動&拖放實現WebGL項目中的攝像機移動。我已經通過計算事件中之前位置的差異,然後將此值添加到當前旋轉水平。WebGL中的滑動拖放方向

這裏是一段代碼這是做這項工作:

function animate() 
{ 
    // drag and drop part 
    /*var spdx = 0, spdy = 0; 
    spdy = (HEIGHT/2 + difference_y)/400; 
    spdx = (WIDTH/2 + difference_x)/400;*/ 

    if(mouseDown) 
    { 
     camera.rotation.x += difference_x/200; 
     //camera.rotation.y += difference_y/200; 
    } 

    requestAnimationFrame(animate); 
    renderer.shadowMapEnabled = true; 
    renderer.shadowMapType = THREE.PCFSoftShadowMap; 

    object.rotation.x += 0.005; 
    object.rotation.y += 0.01; 

    // Render the scene. 
    renderer.render(scene, camera); 
    //controls.update(); 

} 

function onDocumentMouseMove(event){ 
    mouseX = event.clientX; 
    mouseY = event.clientY; 

    difference_x = mouseX - last_position_x; 
    difference_y = mouseY - last_position_y; 

    last_position_x = mouseX; 
    last_position_y = mouseY; 
} 

它專門在動畫部分()函數到requestAnimationFrame(動畫)。變量mouseDown在ouseDown事件上設置爲true,並在mouseUp時重置爲false。整個代碼,因爲我有它在文件中,你可以找到here(儘管它並不在撥弄工作)

要顯示的參考妥善我的方向之一禁用移動並上載here,這樣你就可以正確測試奇怪的行爲。

任何人都知道問題出在哪裏?謝謝。

回答

0

所以,問題出在mouseDown事件中,我還需要在那裏存儲實際的座標。

function onDocumentMouseDown(event){ 
    mouseDown = true; 
    last_position_x = event.clientX; 
    last_position_y = event.clientY; 
}