Advertisement

Ogre中实现动画效果之节点动画(Node Animation)

阅读量:

Ogre中与节点动画相关的类:

(1)Ogre::Animation

(2)Ogre::AnimationState

(3)Ogre::NodeAnimationTrack

(4)Ogre::TransformKeyFrame

节点动画的使用步骤:

复制代码
 //1.创建动画对象

    
 Animation* anim= mSceneMgr->createAnimation("动画名","持续时间");
    
 //2.设置动画常用参数
    
 anim->setInterpolationMode(Animation::IM_SPLINE); //设置动画的差值类型:IM_LINEAR线性差值、IM_SPLINE 样条(曲线)差值
    
  
    
 //3.创建节点动画路径
    
 NodeAnimationTrack* track = anim->createNodeTrack("处理优先级", "与之绑定的节点");
    
  
    
 //4.为路径创建关键帧
    
 TransformKeyFrame* kf = track->createNodeKeyFrame("关键帧1出现时间");
    
 //5.设置关键帧的属性:位置、大小等
    
 kf->setTranslate(Vextor3(x, y, z));
    
 kf->setScale(Vextor3(sx, sy, sz));
    
  
    
 TransformKeyFrame* kf = track->createNodeKeyFrame("关键帧2出现时间");
    
 kf->setTranslate(Vextor3(x, y, z));
    
 kf->setScale(Vextor3(sx, sy, sz));
    
  
    
 //6.创建动画状态对象(真正操控动画)
    
 AnimationState* animState = mSceneMgr->createAnimationState("与之绑定的动画名");
    
 //设置相关属性
    
 animState->setEnabled(true); //动画是否有效
    
 animState->setLoop(false);	//动画是否循环
    
    
    
    
    代码解释

经过以上步骤节点动画就创建完成了,但运行发现并没有动画效果。

要想动画真正运动起来,还需要修改time position

复制代码
 //1.在帧监听中加入以下代码,运行可以看到动画效果了

    
 animState->addTime(evt.timeSinceLastFrame);
    
 //2.也可以在帧监听中手动设置time postion,创建动画效果
    
 animState->setTimePosition("时间时刻");
    
    
    
    
    代码解释

全部评论 (0)

还没有任何评论哟~