Ogre中实现飞机螺旋桨平滑旋转

一个OGRE项目中需要实现飞机的运动,尤其是螺旋桨的运动。假设螺旋桨名为需要绕X轴旋转。初始的想法是每帧让它旋转3次,每次30°,即

mPropeller->pitch( Ogre::Degree(30) ); mPropeller->pitch( Ogre::Degree(30) ); mPropeller->pitch( Ogre::Degree(30) ); 

后来发现,当场景较大,帧率不稳定的时候,螺旋桨速度很不稳定,甚至停止转动。后来一直没有想到合适的解决办法。今天看到《Ogre 3D 1.7 Beginner's guide》,第4章中有一节讲“Modifying the code to be time based rather than frame based”,才恍然大悟。基于时间的运动显然比基于帧率的运动好,因为在我们能在所有机器上获得相同的运动且能更好的控制移动速度。修改后的代码如下所示:

mPropeller->pitch( Ogre::Degree(360) * evt.timeSinceLastFrame ); mPropeller->pitch( Ogre::Degree(360) * evt.timeSinceLastFrame ); mPropeller->pitch( Ogre::Degree(360) * evt.timeSinceLastFrame ); 

 

 

你可能感兴趣的:(360)