three.js-与GeometryUtils.merge相交的对象

three.js-与GeometryUtils.merge相交的对象,three.js,Three.js,我想创建多个多维数据集,在每个多维数据集上添加一个单击事件,并将它们与GeometryUtils.merge组合在一个“父”对象中 var cubes=[]; var mainGeom = new THREE.Geometry(); var cubegeometry = new THREE.CubeGeometry(50, 50, 50, 1, 1, 1 ); cubes[1] = new THREE.Mesh( cubegeometry ); c

我想创建多个多维数据集,在每个多维数据集上添加一个单击事件,并将它们与GeometryUtils.merge组合在一个“父”对象中

    var cubes=[];
    var mainGeom =  new THREE.Geometry(); 
    var cubegeometry =  new THREE.CubeGeometry(50, 50, 50, 1, 1, 1 );

    cubes[1] = new THREE.Mesh( cubegeometry );
    cubes[1].position.y = -50; 
    THREE.GeometryUtils.merge( mainGeom, cubes[1] );

    cubes[2] = new THREE.Mesh( cubegeometry );
    cubes[2].position.y = 50; 
    THREE.GeometryUtils.merge( mainGeom, cubes[2] ); 

    cubes[3] = new THREE.Mesh( cubegeometry );
    cubes[3].position.z = -50; 
    THREE.GeometryUtils.merge( mainGeom, cubes[3] ); 

    cube = new THREE.Mesh( mainGeom,new THREE.MeshBasicMaterial( { color: 0xff0000 } )); 
合并很有效。 但是我如何才能在每一个按钮上添加一个点击事件呢?我用的是:

function onDocumentMouseDown( event ) {
    event.preventDefault(); 

    mouse = {x : ( event.clientX / window.innerWidth ) * 2 - 1, y :- ( event.clientY / window.innerHeight ) * 2 + 1 };

    var vector = new THREE.Vector3( mouse.x, mouse.y, 0.5 );
    projector.unprojectVector( vector, camera ); 

    var raycaster = new THREE.Raycaster( camera.position, vector.sub( camera.position ).normalize() );
    var intersects = raycaster.intersectObjects( cube );

    if ( intersects.length > 0 ) {
      console.log(intersects);
    } 
}
但相交长度始终为0! 我做错了什么

非常感谢


问候-科沙

乔治·洛芬扎给了我一个很好的暗示。解决方案是将这些子对象添加到父对象,然后-这就是解决方案!谢谢

如果要独立单击,为什么要合并几何体?您应该能够简单地将多维数据集添加到父对象3D,而无需合并。
Raycaster.intersectObjects()
将数组作为参数。您正在通过一个网格。@WestLangley-我知道这一点,我也一直在使用intersectObject进行检查,但它也不起作用