查看: 900|回复: 1

线段求交由交点得到所求交物体问题

[复制链接]

该用户从未签到

发表于 2012-1-13 12:04:55 | 显示全部楼层 |阅读模式
场景结构如下:
         group
            /              \
      node1          node2
         /                    \
  cow.osg             glider.osg

使用鼠标选择物体得到交点,代码如下:
  1. if (view->computeIntersections(x, y, intersections))
  2.         {
  3.                 osgUtil::LineSegmentIntersector::Intersection intersection = *intersections.begin();
  4.                 osg::NodePath& nodePath = intersection.nodePath;

  5.                 node  = (nodePath.size()>=1)?nodePath[nodePath.size()-1]:0;
  6.                 parent = (nodePath.size()>=2)?dynamic_cast<osg::Group*>(nodePath[nodePath.size()-2]):0;

  7.                 std::cout<<parent->getName()<<std::endl;
  8.                 std::cout<<node->getName()<<std::endl;
  9.                  }
复制代码
点击glider后发现输出是group, node2(正常可以理解,glider.osg文件中的geode节点没有输出);但点击cow后发现输出是group,cow.osg(不仅输出了cow.osg文件中的geode节点,而且还将node1节点和cow.osg中的group节点给跳过去了)。

请问这是什么原因呢?如果出现这种不稳定的情况,我如何能得到求交的物体节点呢?
                          

该用户从未签到

发表于 2012-1-16 10:02:25 | 显示全部楼层
nodepath中的最后一个必然是geode类型,你可以将nodepath全部打印出来以作判断
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表