查看: 1450|回复: 10

添加小地图以后碰撞检测出错

[复制链接]

该用户从未签到

发表于 2010-7-7 09:35:39 | 显示全部楼层 |阅读模式
小地图是新建了一个Camera节点,然后把场景添加进去,从上方俯视观察

碰撞检测是最简单那种

  1. osg::ref_ptr<osg::LineSegment> lineXY = new osg::LineSegment(newPos1, m_vPosition);
  2. osg::ref_ptr<osg::LineSegment> LineZ = new osg::LineSegment(newPos1 + osg::Vec3(0.0f, 0.0f,10.0f),
  3. newPos1 - osg::Vec3(0.0f, 0.0f, -10.0f));
  4. ivXY.addLineSegment(LineZ.get());
  5. ivXY.addLineSegment(lineXY.get());
  6. m_pHostViewer->getSceneData()->accept(ivXY);
  7. if (!ivXY.hits())
复制代码


没有添加小地图的时候在场景里漫游一切正常,碰撞检测没问题。
但是添加小地图以后在场景里漫游就容易被卡住,明明前方无障碍也不能前进,就好像撞上了一堵空气墙。。。

请教一下是什么原因呢?该如何解决?
谢谢!

该用户从未签到

发表于 2010-7-7 09:42:30 | 显示全部楼层
场景中有透明节点?

该用户从未签到

 楼主| 发表于 2010-7-7 09:44:11 | 显示全部楼层
没有啊。
因为没添加小地图节点的时候都是正常的~
应该跟小地图有关系

该用户从未签到

发表于 2010-7-7 10:29:21 | 显示全部楼层
是不是小地图节点下的东西影响啊

该用户从未签到

 楼主| 发表于 2010-7-7 11:21:12 | 显示全部楼层
我就是不知道它是怎么影响的,所以不知道怎么修改。。。

我又试了一下,把小地图不管挪到哪个位置,在场景相同的位置都会产生空气墙。。。

该用户从未签到

 楼主| 发表于 2010-7-7 16:48:46 | 显示全部楼层
现在有个想法是是碰撞检测时屏蔽掉小地图节点,不知道有没有什么方法可以办到。。。

该用户从未签到

发表于 2010-7-7 17:05:39 | 显示全部楼层
可以设置小地图的setNodeMask(),以及IntersectionVisitor的setTraverseMask(),使这两者的与操作为0即可避免对小地图求交

该用户从未签到

发表于 2010-7-7 17:23:25 | 显示全部楼层
我正晕呢,array给点醒了

该用户从未签到

 楼主| 发表于 2010-7-7 22:29:20 | 显示全部楼层
谢谢array

我试试看

该用户从未签到

 楼主| 发表于 2010-7-7 22:37:42 | 显示全部楼层
问题解决了,谢谢大家

还有那个是setTraversalMask吧? array是不是拼错了~~

该用户从未签到

 楼主| 发表于 2010-7-7 22:38:18 | 显示全部楼层
问题解决了,谢谢大家

还有那个是setTraversalMask吧? array是不是拼错了~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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