Ogre 学习笔记之 OGRE轨迹动画

 

 

Ogre 学习笔记之 OGRE轨迹动画

 

 

转致:http://www.cppblog.com/yuanyajie/archive/2007/03/02/19132.html

 

 

 


轨迹动画(Animation Track),是 OGRE 所支持的几种动画模式(包括骨骼动画)中的一种。通过让节点(node)沿着一条预设了关键帧(Key Frame)的轨迹移动来实现节点的动画。

  OGRE 中创建和实施轨迹动画的步骤大致如下:

  1. 在主程序类的 Application :: createScene ( ) 场景创建方法中进行以下工作:

  Animation * Ogre::SceneManager::createAnimation (
   const String & name, // 动画名称
   Real length // 动画长度(秒)
   ) [virtual]

  (2) 使用 createTrack 方法为动画创建轨迹动画:
   AnimationTrack * Ogre::Animation::createTrack (
   unsigned short handle, // 分配给轨迹动画的索引句柄,用于以后可能的调用
   Node * node // 指定要沿着这条轨迹运动的节点
   )

  (3) 使用 createKeyFrame 方法为轨迹动画创建一系列关键帧:
   KeyFrame * Ogre::AnimationTrack::createKeyFrame (
   Real timePos // 时间位置
   )
  
   (4) 使用 setTranslate 、 setScale 、 setRotation 三个方法来设置关键帧每个时间位置上节点的位置、缩放、旋转属性:
   void Ogre::KeyFrame::setTranslate ( const Vector3 & trans )
   void Ogre::KeyFrame::setScale ( const Vector3 & scale )
   void Ogre::KeyFrame::setRotation ( const Quaternion & rot )
  
   (5) 使用 createAnimationState 方法创建一个动画状态来追踪这个轨迹:
   AnimationState * Ogre::SceneManager::createAnimationState ( const String & animName ) [virtual]
  
   (6) 使用 setEnabled 方法来激活动画状态:
   void Ogre::AnimationState::setEnabled ( bool enabled )

  2. 在接收器类的 Listener::frameStarted(const FrameEvent& evt) 方法中刷新动画状态:
   void Ogre::AnimationState::addTime ( Real offset )

你可能感兴趣的:(OGRE)