查看: 1691|回复: 4

请问osg中怎么在指定时间出现和消失物体

[复制链接]

该用户从未签到

发表于 2012-9-18 13:17:22 | 显示全部楼层 |阅读模式
各位大虾,

最近发现OSG的AnimationPath和VP的AnimationPath有明显区别,OSG的路径回调似乎必须从画面一开始就进行,不管路径文件第一组时间数据是不是零,程序会自动插值求出此时间点的运动信息。也就是说,不同通过AnimationPath设定的时间来控制运动物体的出现和消失?(有做过这方面的么,欢迎讨论)

因为是把Qt和OSG结合到了一起,QWidget每次Update,然后OSG Frame,好像就不能通过while(!viewer->done)来主动刷新帧,也就获得不了elapsedtime,所以这种方法也不能用于在指定时间出现和消失物体。

有没有其他方法来实现物体在指定时间出现或消失呢?OSG的回调函数可不可以从指定时间开始呢?还有,和Qt结合到一起的程序能不能用while(!viewer->done)?我在虚函数QPaniterEvent中设定了,可是画面很奇怪,举例说明:一物体是——,出现的画面是——————————————————————————————————————————。。。。,前一时刻的物体没有消失,后一时刻的物体又出现在新的位置!

求大神指导呀!感觉着些功能是仿真引擎必须得具备的功能呀,怎么在OSG中找不到呢?

该用户从未签到

发表于 2012-9-18 16:05:54 | 显示全部楼层
1.可以通过setPause来设定暂停和开始
2.为什么不能获得elapsedtime,只要有framestamp就可以
3.时间完全您自己定,Qt中也有定时器

该用户从未签到

 楼主| 发表于 2012-9-18 16:33:44 | 显示全部楼层
liuzhiyu123 发表于 2012-9-18 16:05
1.可以通过setPause来设定暂停和开始
2.为什么不能获得elapsedtime,只要有framestamp就可以
3.时间完全您 ...

1、路径动画中的setPause是让路径运动暂停,对吧?如果使用QT的定时器,是否可以让已经有运动路径的物体在某一时间开始路径运动?
2、elapsedtime是可以在QT的绘制事件里获取,在QPainterEvent()里面对时间控制,就会出现我所说的问题,运动物体在路径上连为一体,可是是因为每次QWidget都没有刷新的缘故。
3、感谢版主!我重写了AnimationPath的read函数,分为Time、Position(x\y\z)、Attitude(Roll、pitch、Yaw)、Scale(x/y/z),一共10列数据,读取Txt文本,生成路径,我第一行的时间数据是10,也就是打算从10s时刻,物体出现,并按指定路径运动,请问在AnimationPath中的回调是要暂停10s么?有没有其他解决方案~
我看了Animate源码,里面是对数据进行了插值,虽然第一行时间数据不是零点,但程序会自动计算出0s时刻物体的运动信息,但是没有看出是基于什么算法。(前10s的运动数据是怎么拟合出来的呢?)如果不需要这样的拟合,是不是要重写AnimationPath?

该用户从未签到

发表于 2012-9-18 16:49:45 | 显示全部楼层
qt里的定时器吧,控制动画的开始和结束

该用户从未签到

发表于 2012-9-18 16:50:39 | 显示全部楼层
从写也是可以的 把它的那个插值采样的函数从写就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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