Ogre实现不同动画之间的混合
来源:互联网 发布:什么是4g网络 编辑:程序博客网 时间:2024/05/21 09:22
动画混合 -- 实现两个动画的切换, 一个动画逐渐消逝, 另一个动画逐渐显示来实现. 主要通过动画状态的权重来实现
通过三种方式来实现两个动画的混合:
- BlendSwitch - 直接切换至目标动画
- BlendWhileAnimating - 混合的过程中目标动画也更新帧, 实现动画
- BlendThenAnimate - 用源动画的当前帧混合目标动画的第一个帧
源码理解, 主要代码位于下面两个函数
AnimationBlender::blend函数 根据传入的参数设置新转换的源动画和目标动画
AnimationBlender::add函数则更新源动画和目标动画(如存在)的状态和权重
AnimationBlender::blend函数
1. 如果动画转换类型为 AnimationBlender::BlendSwitch
直接将源动画转换成目标动画
2. 如果不是这个转换类型 AnimationBlender::BlendSwitch
如果上次的动画转换还未完成
如果新的目标动画等于上次转换的源动画
则反向转换
如果新的目标动画不等于上次转换的源动画和目标动画
根据上次转换的剩余时间设置是显示上次转换的源动画还是目标动画, 并将其设置为新转换的源动画
显示新转换的目标动画, 并设置其权重
假设上次的动画转换已经完成了转换
设置转换时间, 转换类型, 目标动画和其权重
AnimationBlender::addTime 函数
1. 如有动画在运行
如果存在转换
更新剩余时间
如剩余时间小于0
禁止源动画
将目标动画设置为源动画, 继续运行
如剩余时间不小于0
更新源动画和目标动画的权重
如转换类型为AnimationBlender::BlendWhileAnimating
更新目标动画
判断动画是否完成
更新源动画
完整代码和Demo代码
AnimationBlender.h
AnimationBlender.cpp
AnimationBlenderDemo.h
AnimationBlenderDemo.cpp
不过由于Ninja.mesh的动画时间太小, 很难看出混合效果, 以上代码适合Ogre1.6.5
注:转载源地址
- Ogre实现不同动画之间的混合
- Ogre实现不同动画之间的混合
- Ogre实现不同动画之间的混合
- AnimationBlender - Ogre实现不同动画之间的混合
- AnimationBlender - Ogre实现不同动画之间的混合
- Ogre中的动画混合(AnimationBlender)
- OGRE实现天龙八部组合的骨骼动画
- 不同Activity之间的动画切换
- Unity_混合树实现三种动画的混合_070
- android混合动画实现
- Ogre的骨骼动画
- Ogre overlay实现帧动画
- Ogre overlay实现帧动画
- 使用Kinect驱动OGRE顶点动画的实现
- Ogre中submesh之间的共享缓存的使用 手动画球体
- jquery同一按钮实现不同的动画
- 实现不同页面之间的通信
- [GearMaster开发]OGRE和WinForm的混合
- Eclipse中应该掌握的快捷键
- Unicode编码方案简介及实现
- 转 linux下IPTABLES配置详解
- 线程没有正常结束产生的内存泄露问题的解决
- live555 H264及sps和pps
- Ogre实现不同动画之间的混合
- MyEclipse 10 + Maven2 + Tomcat6 开发环境
- ofstream和ifstream详细用法
- ndk开发之利用android系统中.so库文件(例:libsqlite.so)
- Linux下char类型可能带来的问题
- 在Eclipse中创建java类的注释模板
- 安装adt
- makefile详解(08) 包含内容
- Microsoft web broswer不支持此接口