查看: 1736|回复: 6

请教一个模型动画控制的实例问题~

[复制链接]

该用户从未签到

发表于 2009-9-9 00:56:34 | 显示全部楼层 |阅读模式
首先,比如说,一列火车(例如有8节车厢)在铁轨上运行,到了要转弯的时候,这里要让列车依次根据铁轨的转向进而转弯,这里如果设置关键帧的话有什么比较好的方法么?我目前就是设置了2个通道,一个是对每节控制其水平方向的位移,另一个通道是控制每节车厢的旋转,但这种方式存在很大问题目前,只要转弯角度稍大的话,每节车厢之间会出现很大的相对位移,很不真实。。。故不知除了这种很不现实的精确调整关键帧的方法外,还有没有什么办法?

其次,还有一个遇到的比较棘手的问题是,如果要想实时测量当前的列车的行驶速度,而且如果还是用V=S/t 这个公式来计算瞬时速度的话,那么这里的S、t都从哪里更新呢?我之前考虑如果在callback中每次计算速度V的话,感觉有困难。。不知这种计算瞬时速度有什么好办法?。。

希望各位能给予些许指点~~现在这里感谢大家了~~

该用户从未签到

发表于 2009-9-9 10:35:39 | 显示全部楼层
是否在回调中更新车的位置,如果帧率稳定,设当前一帧回调中车的位置为P1,计时器为T1,上一帧回调中车位置P0,计时器T0,则列车移动的距离 ds = |P1 - P0|,(||为差矢量的模长), dt = T1-T0,则 v= ds/dt;  帧率波动如果很大,估计这个办法不行

该用户从未签到

发表于 2009-9-9 10:37:54 | 显示全部楼层
如果是AnimatiohPath 的话,估计比较容易处理了

该用户从未签到

发表于 2009-9-9 10:55:57 | 显示全部楼层
你可以用四元数完成一条平滑的插值的路径,,转换的时候就不会有那种问题了~~~速度的计算方法很多,,,似乎更多不应该放在OSG中,,,其实,,方法很简单,,你可以在定点设置一个定时器,再根据距离对时间导来计算瞬时速度~~~

该用户从未签到

 楼主| 发表于 2009-9-10 00:08:52 | 显示全部楼层
你可以用四元数完成一条平滑的插值的路径,,转换的时候就不会有那种问题了~~~速度的计算方法很多,,,似乎更多不应该放在OSG中,,,其实,,方法很简单,,你可以在定点设置一个定时器,再根据距离对时间导 ...
FlySky 发表于 2009-9-9 10:55


首先感谢FlySky、woshijiameizhou 的热心回答~

这里还想请教下FlySky老师,您所说的设置用四元数设置插值路径,是指靠自己计算关键帧么?如何去表达路径呢?有点晕。。
还有就是您说的设置定时器的方法计算速度。。能稍微具体讲下么~?或者简单举个例子~~先谢谢您了~~

该用户从未签到

发表于 2009-9-10 07:50:17 | 显示全部楼层
是的,,需要自己计算,,,利用四元数的slerp运算进行平滑插值,,,,然后处理的方法很多,,可以直接设置变换或者压入路径~~~~

求瞬时速度有几种情况:
  1在匀速中瞬时速度是最简单的,匀速运动中的任何一个时刻的速度都是一样的,所以瞬时速度也就是平均速度。
  2在匀变速中,又分两种情况,一种是初速度为零的,瞬时速度为V=at(A为加速度,T为时间);另一种情况初速度不为零,瞬时速度为V=at+Vo(Vo为初速度)。

设置定时器的目的就是得到单位时间内的距离或者得到指定时间内的距离~~~~~~~

该用户从未签到

发表于 2009-9-10 12:42:40 | 显示全部楼层
有关各种插值算法,可以参考osgAnimation库中EaseMotion的内容,包含了多种实用的算法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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