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)
还没有任何评论哟~
