2015-10-15 75 views
1

我正在使用transformControls來轉換,旋轉和縮放我的對象。我希望能夠點擊場景中的不同對象,並隨時轉換它們,並且它可以工作! 唯一的問題是,幾何形狀有其可點擊區域的一半上升:Three.js - TransformControls

The hitbox isn't centered

這就是說,我不能選擇單擊底部區域我的目標,但如果我點擊它上面會被選中。

而對於collada文件則更糟。

我想應該是這裏的某個地方:

function onDocumentTouchStart(event){ 
    event.preventDefault(); 
    event.clientX = event.touches[0].clientX; 
    event.clientY = event.touches[0].clientY; 
    onDocumentMouseDown(event); 
} 
function onDocumentMouseDown(event){ 
    event.preventDefault(); 
    mouse.x = (event.clientX/window.innerWidth) * 2 - 1; 
    mouse.y = - (event.clientY/window.innerHeight) * 2 + 1; 
    raycaster.setFromCamera(mouse, camera); 
    var intersects = raycaster.intersectObjects(objects); 
    if(intersects.length > 0){ 
     SELECTED = intersects[ 0 ].object; 
     scene.add(control); 
     control.attach(SELECTED); 
    } else{ 
     scene.remove(control); 
    } 
} 

編輯:

OMG ......問題是一些利潤率它在這裏...

但是現在,我初學者的問題是,我真的不知道如何將transformControls附加到我的對象。隨着transformControls,我仍然有問題。但是,當點擊時更改材質顏色時,它完美地起作用。有transformControls某種邊距?我這樣做:

if(intersects.length > 0){ 
      SELECTED = intersects[ 0 ].object; 
      scene.add(control); 
      control.attach(SELECTED); 
     } else{ 
      scene.remove(control); 
     } 

回答

1

答案是顯而易見的...:

if(intersects.length > 0){ 
    SELECTED = intersects[ 0 ].object; 

    control.attach(SELECTED); 
    scene.add(control); 

} else{ 
    control.detach(SELECTED); 
    scene.remove(control); 
} 

我忘了取下控制