尝试通过点击选择一些对象,我尝试使用每个示例中使用的标准代码:
function onMouseDown(evt) {
evt.preventDefault();
canvasAbsoluteHeight = $('canvas').height();
canvasAbsoluteWidth = $('canvas').width();
mouseDown = true;
mouseX = evt.offsetX == undefined ? evt.layerX : evt.offsetX;
mouseY = evt.offsetY == undefined ? evt.layerY : evt.offsetY;
var mouse = new THREE.Vector3();
mouse.x = ( evt.clientX / canvasAbsoluteWidth ) * 2 - 1;
mouse.y = 1 - ( evt.clientY / canvasAbsoluteHeight ) * 2;
mouse.z = 0;
ray = new THREE.Raycaster( mouse, camera );
var intersects = ray.intersectObjects( objects);
console.log('intersects', intersects);
if ( intersects.length > 0 ) {
console.log('intersects', intersects);
}
}
objects
是一个THREE.Object3D
的数组,应该可以被选中。
我认为它可能与相机有关。我的camera
是THREE.Object3D
的子项,以便于操作,并且父对象未设置为原点。
另外一点是画布不是全屏,可能有鼠标位置的东西? (它位于div内部,与页面边缘有一些偏移)。
答案 0 :(得分:0)
检查fiddle。您可以使用Picker类。首先,你必须用相机和圆顶元素来启动这个课程
Picker.init(camera,domelement)
然后你必须附加网格
Picker.attach(mesh)
之后你必须在Picker方法中指定你在mosedown / mouseup之后想做什么。