簡體   English   中英

Three.js - 變換控件

[英]Three.js - TransformControls

我正在使用 transformControls 來平移、旋轉和縮放我的對象。 我希望能夠點擊場景中的不同對象並隨時變換它們:它有效! 唯一的問題是幾何圖形的可點擊區域向上移動了一半:

命中框未居中

也就是說,我無法在下方區域單擊時選擇我的對象,但是如果我單擊上方,它將被選中。

對於 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);
    }
}

編輯 :

天啊...問題是這里的一些邊距...

但是現在,我的初學者問題是我真的不知道如何將 transformControls 附加到我的對象。 使用transformControls,我仍然有問題。 但是當我點擊改變材質顏色時,它工作得很好。 有 transformControls 某種邊距? 我這樣做了:

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

答案很明顯...:

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

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

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

我忘記分離控件

sRcBh 的回答基本正確,但是代碼有錯誤。 TransformControlsdetach方法不接受任何參數。

if (intersects.length > 0) {
    SELECTED = intersects[ 0 ].object;
    control.attach(SELECTED);
    scene.add(control);
} else {
    control.detach(); // <- THIS IS CORRECT
    scene.remove(control);
}

(參見https://threejs.org/docs/#examples/en/controls/TransformControls

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM