【发布时间】:2014-11-29 21:02:14
【问题描述】:
我有一个父 Object3D 有子网格。如何使用Raycaster 只选择根父对象?
【问题讨论】:
标签: three.js
我有一个父 Object3D 有子网格。如何使用Raycaster 只选择根父对象?
【问题讨论】:
标签: three.js
如果您的父 Object3D 有多个子网格,并且您想通过光线投射选择父网格,您可以执行以下操作:
将父对象添加到对象数组中:
var objects = [];
...
objects.push( root_parent_object );
为每个子对象添加一个指向根父对象的指针:
child.userData.parent = root_parent_object;
将递归标志传递给intersectObjects()。
var intersects = raycaster.intersectObjects( objects, true );
现在当光线投射器与子对象相交时,您可以获得根对象。
three.js r.68
【讨论】:
SELECTED = intersects[ 0 ].object.userData.parent;
我对使用从 Sketchup 导出的 collada 对象也有类似的需求。 Meshes 前面有多个父母的踪迹,所以我所做的就是:
if (intersects.length >0){
par = intersects[ 0 ].object.parent;
while(par.type !== "Group"){
par = par.parent;
}
groupName = par.name;
}
【讨论】: