查看: 863|回复: 5

求交事件导致具有RTT的场景十分卡

[复制链接]

该用户从未签到

发表于 2013-5-11 14:49:51 | 显示全部楼层 |阅读模式
本帖最后由 xinshoulaile 于 2013-5-15 16:36 编辑

Snaps1.jpg

整个场景就是如上图所构造的,当我在Viewer中添加自定义的相交事件处理,在点击场景后,场景就相当的卡,相交测试代码如下:
osgUtil:ineSegmentIntersector::Intersections::iterator hitr = intersections.begin();
osg::MatrixTransform* mt = 0;
for( ;        hitr!=intersections.end(); ++hitr )
{
        for( osg::NodePath::iterator nr = hitr->nodePath.begin();
                         nr!=hitr->nodePath.end(); ++nr )
        {
                mt = dynamic_cast<osg::MatrixTransform*>( *nr );
                if( mt )
                {
                        ……………………
                        return mt;
}
}
}
代码很简单,应该不是这个问题,是不是我的场景结构有问题,导致对节点事件处理时出现了死循环或是别的?麻烦各位指教下,谢谢!

Snaddp1.jpg

该用户从未签到

发表于 2013-5-13 09:32:06 | 显示全部楼层
您的求交事件每帧会执行多少次?

该用户从未签到

 楼主| 发表于 2013-5-15 16:44:36 | 显示全部楼层
上面的代码图中,handle函数体每帧都执行,当鼠标点击场景模型后,会进入到PUSH语句段,然会会卡死在pick函数执行中(这一帧会卡住),也就是上面的相交测试代码,大约半分钟后执行完毕,重新开始handle函数体执行,且在执行完handle一次后,下一帧再次执行handle时又会卡住,但此时不是PUSH中的pick,具体在哪卡住还不明确,半分钟后真个场景正常渲染,直到下一次鼠标再次点击场景才会出现上述情况。个人很不明了,希望有碰到这种情况或理解相关过程的朋友解释下,谢谢

该用户从未签到

发表于 2013-5-15 16:50:15 | 显示全部楼层
貌似只需要 取得第一个intersection 就可以了吧   场景很大或者很复杂
  1. osgUtil:ineSegmentIntersector::Intersections::iterator hitr = intersections.begin();
  2. osg::MatrixTransform* mt = 0;
  3. for( ;        hitr!=intersections.end(); ++hitr )
  4. {
  5.         for( osg::NodePath::iterator nr = hitr->nodePath.begin();
  6.                          nr!=hitr->nodePath.end(); ++nr )
  7.         {
  8.                 mt = dynamic_cast<osg::MatrixTransform*>( *nr );
  9.                 if( mt )
  10.                 {
  11.                         ……………………
  12.                         return mt;
  13. }
复制代码
这东西就不知道执行多少次了

该用户从未签到

 楼主| 发表于 2013-5-15 16:58:30 | 显示全部楼层
感谢回复!
我在上一次做煤矿项目那个场景很大,相交测试很多,但也没出现这个问题,应该和场景大小没太大关系。
这个我在去掉RTT节点部分后,相交测试就不会出现上述卡死问题,我觉得问题还是在节点结构上。

该用户从未签到

发表于 2013-5-16 08:10:44 | 显示全部楼层
可以设置travelMask  去掉对RTT的pick计算 试一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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