Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Three.js-转换控件_Javascript_Three.js_Clickable - Fatal编程技术网

Javascript Three.js-转换控件

Javascript Three.js-转换控件,javascript,three.js,clickable,Javascript,Three.js,Clickable,我正在使用TransformControl来平移、旋转和缩放对象。我希望能够在我的场景中单击不同的对象,并在任何时候变换它们:而且它可以工作! 唯一的问题是几何图形的可单击区域向上移动了一半: 也就是说,我不能在单击较低区域时选择我的对象,但如果我在上面单击,它将被选中 而对于collada文件来说,情况更糟 我想应该在这里的某个地方: function onDocumentTouchStart(event){ event.preventDefault(); event.cli

我正在使用TransformControl来平移、旋转和缩放对象。我希望能够在我的场景中单击不同的对象,并在任何时候变换它们:而且它可以工作! 唯一的问题是几何图形的可单击区域向上移动了一半:

也就是说,我不能在单击较低区域时选择我的对象,但如果我在上面单击,它将被选中

而对于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);
    }
}
编辑:

天哪。。。问题是这里有一些利润

但现在,我的初学者问题是,我真的不知道如何将TransformControl附加到我的对象。对于TransformControl,我仍然有问题。但是,当我在单击时更改材质颜色时,效果非常好。这家公司有利润吗?我这样做:

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的回答基本正确,但代码中包含错误。
TransformControls
detach
方法不接受任何参数

if (intersects.length > 0) {
    SELECTED = intersects[ 0 ].object;
    control.attach(SELECTED);
    scene.add(control);
} else {
    control.detach(); // <- THIS IS CORRECT
    scene.remove(control);
}
if(intersects.length>0){
选定=与[0]相交。对象;
控件。附加(选定);
添加(控制);
}否则{
控件。分离()//