查看: 890|回复: 2

【求助】使用IntersectorVisitor求交点时结果不正确

[复制链接]

该用户从未签到

发表于 2012-5-16 14:57:12 | 显示全部楼层 |阅读模式
本帖最后由 cll131421 于 2012-5-16 14:58 编辑
  1.                 line = new osg::LineSegment(railInfo->at(i),railInfo->at(i+1));


  2.                 osgUtil::IntersectVisitor iv;
  3.                 iv.addLineSegment(line);
  4.                 _terrainNode->accept(iv);


  5.                 osgUtil::IntersectVisitor::HitList* _hitList = &iv.getHitList(line);
  6.                 if (is_debug)
  7.                         printf("_hitList->size()=%d\n",_hitList->size());
  8.                 if (_hitList->size()>0)
  9.                 {
  10.                         for (unsigned int i2 = 0;i2<_hitList->size();i2++)
  11.                         {
  12.                                 osg::Vec3 _posTemp = _hitList->at(i2).getWorldIntersectPoint();
  13.                                 if (is_debug)
  14.                                         printf("_posTemp坐标为:%f,%f,%f\n",_posTemp._v[0],_posTemp._v[1],_posTemp._v[2]);
  15.        
复制代码
如果交点是一个的话,会显示正确的结果,如果交点是两个,则有可能出错,效果如图:
1.png .
同一个交点输出两遍
请问这是因为什么?应该怎么修改啊?

该用户从未签到

发表于 2012-5-17 10:56:37 | 显示全部楼层
我不回答有关Hit类的问题,因为这个类已经过时了,只用作以前版本的兼容性。请使用LinesegmentIntersector

该用户从未签到

 楼主| 发表于 2012-5-17 16:21:59 | 显示全部楼层
array 发表于 2012-5-17 10:56
我不回答有关Hit类的问题,因为这个类已经过时了,只用作以前版本的兼容性。请使用LinesegmentIntersector

谢谢您的回复
那我就研究一下LinesegmentIntersector类的用法吧,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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