我有一个包含子网格物体的父Object3D
。如何使用Raycaster
仅选择根父对象?
答案 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;
}