首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用GeometryUtils.merge的three.js - intersectObjects

使用GeometryUtils.merge的three.js - intersectObjects
EN

Stack Overflow用户
提问于 2013-08-08 05:20:29
回答 1查看 1.5K关注 0票数 0

我想创建多个立方体,在每个立方体上添加一个点击事件,并用GeometryUtils.merge将它们组合在一个“父”对象中。

代码语言:javascript
复制
    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 } )); 

组合工作得很好。但是我怎么才能在每一个上面都添加一个点击事件呢?我使用的是:

代码语言:javascript
复制
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);
    } 
}

但intersects.length始终为0!我做错了什么?

非常感谢!

问候- Kosha

EN

回答 1

Stack Overflow用户

发布于 2013-08-08 17:11:25

GeorgeProfenza给了我一个很好的提示。解决方案是将这些子对象添加到父对象中,然后--这就是解决方案!谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18114027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档