查看: 2372|回复: 1

osgGA::AnimationPathManipulator暂停

[复制链接]

该用户从未签到

发表于 2011-4-11 15:56:36 | 显示全部楼层 |阅读模式
响应array建议,单独开个帖子,说明我的问题
osgGA::AnimationPathManipulator暂停以后,切换到其它手动漫游器,过一段时间再切换到自动漫游,已经不是原来停顿的地方了,难道是后台还是在自动漫游?

  1. //View视图中切换矩阵操作器
  2. void CNTVRView::OnDisplaypath()
  3. {
  4. mOSG ->PlayPath("walk.path");
  5. //如果当前暂停,则发送消息
  6. //if (ampPause)
  7. // SendMessage(WM_KEYDOWN, 0x70);
  8. }
  9. void CNTVRView::OnStopdisplay()
  10. {
  11. mOSG ->StopPath();
  12. //如果当前没有暂停,则发送消息
  13. //if (!ampPause)
  14. // SendMessage(WM_KEYDOWN, 0x70);
  15. }
  16. void PlayPath(std::string filepath)
  17. {
  18. //读取漫游路径
  19. if (!amp.valid())
  20.   amp = new osgGA::AnimationPathManipulator(filepath);
  21. //else
  22. // amp->_isPaused=false;
  23. //当前手动漫游
  24. moldManipulator=mViewer->getView(0)->getCameraManipulator() ;
  25.     //设置固定漫游
  26. mViewer->getView(0)->setCameraManipulator(amp.get());
  27. }
  28. void StopPath()
  29. {
  30. if(moldManipulator.valid())
  31. {
  32.   //停止自动漫游
  33.   //amp->_isPaused=true;
  34.   mViewer->getView(0)->setCameraManipulator(moldManipulator.get()) ;
  35. }
  36. }
复制代码


自动漫游停顿的地方

重新开始漫游的位置

该用户从未签到

发表于 2011-4-11 17:03:23 | 显示全部楼层
首先不可能是后台继续漫游,因为同时进入handle()的漫游器只能有一个。
您可以检查自己的setPause()是否有效地执行了,因为AnimationPathManipulator是取得ReferenceTime用来判断当前运行位置的,如果没有暂停的话,下一次再进入动画漫游时参考时间的差值会很大
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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