2013-01-16 69 views
1

在THREE.js中,我嘗試根據鼠標位置在屏幕上移動對象。在看了一些examples之後,它看起來非常艱難。下面是我從一個例子中借用的一些代碼,其中大部分是針對我需要的:THREE.js - 使用旋轉/縮放的父級相對於屏幕移動對象

function mouseMove(e){ 
    mouse2D.x = ((e.pageX-canvas.offsetParent.offsetLeft)/canvas.clientWidth) * 2 - 1; 
    mouse2D.y = - ((e.pageY-canvas.offsetParent.offsetTop)/canvas.clientHeight) * 2 + 1; 

    if (selected) { 
     var ray = projector.pickingRay(mouse2D, PGL._camera).ray; 
     var targetPos = ray.direction.clone().addSelf(ray.origin); 
     targetPos.subSelf(_offset); 

     obj.position.x = initPos.x + targetPos.x; 
     obj.position.y = initPos.y + targetPos.y; 
    } 
    } 

這適用於在場景內移動直接子項。問題是試圖移動具有旋轉和/或縮放父級的對象。你將如何處理?將運動物體matrixRotationWorld應用於運動? 我仍然試圖圍繞這個東西包裹我的頭。任何幫助讚賞。

+0

棘手的問題確實。 – mrdoob

回答