Three.js - TransformControls

时间:2015-10-15 07:10:56

标签: javascript three.js clickable

我使用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);
        }

2 个答案:

答案 0 :(得分:1)

答案很明显......:

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

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

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

我忘了分离控件

答案 1 :(得分:0)

sRcBh的回答基本上是正确的,但是代码中包含错误。 detach的{​​{1}}方法不带任何参数。

TransformControls

(请参见https://threejs.org/docs/#examples/en/controls/TransformControls