|
场景结构如下:
group
/ \
node1 node2
/ \
cow.osg glider.osg
使用鼠标选择物体得到交点,代码如下:- if (view->computeIntersections(x, y, intersections))
- {
- osgUtil::LineSegmentIntersector::Intersection intersection = *intersections.begin();
- osg::NodePath& nodePath = intersection.nodePath;
- node = (nodePath.size()>=1)?nodePath[nodePath.size()-1]:0;
- parent = (nodePath.size()>=2)?dynamic_cast<osg::Group*>(nodePath[nodePath.size()-2]):0;
- std::cout<<parent->getName()<<std::endl;
- std::cout<<node->getName()<<std::endl;
- }
复制代码 点击glider后发现输出是group, node2(正常可以理解,glider.osg文件中的geode节点没有输出);但点击cow后发现输出是group,cow.osg(不仅输出了cow.osg文件中的geode节点,而且还将node1节点和cow.osg中的group节点给跳过去了)。
请问这是什么原因呢?如果出现这种不稳定的情况,我如何能得到求交的物体节点呢?
|
|