查看: 1596|回复: 3

如何知道EarthManipulator飞行结束?请指点下,给个思路

[复制链接]

该用户从未签到

发表于 2014-2-17 15:58:15 | 显示全部楼层 |阅读模式
代码中,我通过如下方式,会使摄像机从当前视点移动到设定位置,经历过1秒钟后,飞行结束,我想知道飞行结束的那一刻,主要是在此时要触发一个事件干其它的事情,但是在机制上不知道该如何处理。
  1. earthManipulator->setViewpoint(Viewpoint(xorlon, yorlan, z, heading_deg, pitch_deg, rangle), 1);
复制代码

该用户从未签到

发表于 2014-2-18 18:56:36 | 显示全部楼层
重写下这个函数,里面使用qt的信号函数,给你发个信号通知你执行其他的操作

该用户从未签到

 楼主| 发表于 2014-2-19 14:37:17 | 显示全部楼层
ysw 发表于 2014-2-18 18:56
重写下这个函数,里面使用qt的信号函数,给你发个信号通知你执行其他的操作

这样机制好像也不太合适啊,如果将飞行用时延长至10秒钟测试,会明显发现飞行结束和调用此方法的时间会有10秒的延时差距,osg内部是异步处理的,在setViewpoint后通过代码延时10秒,倒是时间上差不多,但总归觉得不是太好的处理方式。其实这样做,也不需要重写setViewpoint。我现在的处理方式是:在每帧渲染后,判断当前摄像机位置和setViewpoint设置的位置的距离,如果小于一定值,就认为飞行结束了,但总感觉这样做也不是最好的方式。

该用户从未签到

发表于 2014-2-20 18:11:03 | 显示全部楼层
laotang 发表于 2014-2-19 14:37
这样机制好像也不太合适啊,如果将飞行用时延长至10秒钟测试,会明显发现飞行结束和调用此方法的时间会有 ...

你如果直接在setViewpoint这个功能函数里面之间增加一个信号槽,这样做摄像机都没有运动,你设置飞行多少秒,就有多少秒的时间间隔。

你可以在earthManipalator类的功能函数handle(),这里面你可以使用getviewPoint()获取当前的视点信息,然后与你设置的视点信息做一下比较,如果一样的话,给你发送个信号就可以了。这样你设置飞行多少时间都没有问题了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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