如何使用Raycaster选择根Object3D

时间:2014-10-05 11:12:54

标签: three.js

我有一个包含子网格物体的父Object3D。如何使用Raycaster仅选择根父对象?

my example

2 个答案:

答案 0 :(得分:4)

如果您的父Object3D有多个子网格,并且您想通过光线投射选择父级,则可以执行以下操作:

将父对象添加到对象数组中:

var objects = [];
...
objects.push( root_parent_object );

向每个子对象添加指向根父对象的指针:

child.userData.parent = root_parent_object;

将递归标记传递给intersectObjects()

var intersects = raycaster.intersectObjects( objects, true );

现在当raycaster与子对象相交时,您可以获得根对象。

three.js r.68

答案 1 :(得分:1)

我有使用从Sketchup导出的collada对象的类似需求。网格在他们之前有多个父母的踪迹所以我所做的就是:

if (intersects.length >0){
    par = intersects[ 0 ].object.parent;
    while(par.type !== "Group"){
        par = par.parent;
    } 
    groupName = par.name;
}