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