Ogre默认支持四种脚本动画:1.骨骼动画 2.场景节点动画 3.顶点动画 4.数值动画
1.骨骼动画 :
骨骼动画的基础:在ogre中骨骼动画主要涉及两个类,mesh和skeleton,skeleton由许多Bone组成,这些bone之间有层级关系,skeleton就是一个骨架关系,某个mesh可以被绑定在这个skeleton上,绑定的实质就是某个vertex受某些bone的影响,也就是某个bone运动,就会导致和他有关系的那些vertex运动。所以对照本页最上面的图,他最末端控制的店就是skeleton中的每个bone,一个skeleton中可以蕴含多套animation。
一般情况下骨骼动画都是在maya或3Dmax之类的工具里面制作好的,然后通过导出方式,导出到一个mesh文件和一个skeleton文件。ogre在加载模型的时候已经把这些动画加载好,需要直接使用就行了。
AnimationState* as=entity->getAnimationState("动画名字");
动态创作骨骼动画:在另外一些情况下,我们只是在skeleton文件中设置网格顶点与骨骼的绑定关系,而不描述骨骼的运动轨迹。运动轨迹会动态的根据实际情况生成,这对于物理碰撞检测后的动画效果是很常见的。
//1.把skeleton和mesh文件内容加载到entity,此时绑定了骨骼与顶点但是没有实现动画效果...
//获取entity中的相应骨骼
SkeletonInstance* ske=entiy->getSkeleton();
//为骨骼添加一个动画
Animation* anim=ske->createAnimation("My",1);
//为每一块骨头创建track(动作集)
Bone* b0=ske->getRootBone();
NodeAnimationTrack* t0=anim->createNodeTrack(0,b0);//例如这是为root bone创建
//为每个bone的track创建关键帧...
//更新这个新加入的动画
entity->refreshAvailableAnimationState();
2.场景节点动画:
是指让场景中的某些结点运动,如创建camera的动画等。
// 创建Animation
Animation* anim=smgr->createAnimation();
// 设置插值方式:线性的和样条线(样条线的更加平滑)
anim->setInterpolationMode(Animation::IM_SPLINE);
//为需要动画的节点创建一个Track,节点动画是以节点为单位
NodeAnimationTrack* t0=anim->createNodeTrack(0,node);
//对于每个track创建它的每个关键帧
TransformKeyFrame* k_t0_0=t0->createNodeKeyFrame(0);//设置该帧的时间点
k_t0_0->setTranslate(Ogre::Vector3(0,0,0));//设置该帧处这个结点的位置和其他几何状态
TransformKeyFrame* k_t0_1=t0->createNodeKeyFrame(1);
k_t0_1->setTranslate(Ogre::Vector3(100,0,0));
//创建一个AnimationState用于控制动画
AnimationState* as=smgr->createAnimationState(该动画名字);
as->setEnabled(true); //必须设置为true才能被播放
as->setTimePosition();//在帧监听中通过调用这个函数来播放动画
3.顶点动画:
顶点动画大多情况下利用gpu shader来实现以提高效率,所以较少直接使用ogre的动画机制。
4.数值动画:我的理解是跟传统的一副一副图片组成的动画类似,这种方式效率低下,游戏肯定是不会用到的。
分享到:
相关推荐
在Android平台上,动画框架是开发者实现丰富用户交互和视觉效果的重要工具。Android提供了两种主要的动画类型:Tween动画和Frame动画。本篇文章将主要聚焦在Tween动画的实现原理上。 Tween动画,也称为平移动画,是...
标题提到的"swift-一个很棒的Swift实现的动画框架",暗示我们这里讨论的是一个专门为Swift开发者设计的动画库,它旨在简化应用中的动画创建过程。 描述中提到的"一个很棒的 Swift 实现的动画框架"表明这个框架在...
在Android平台上,开发者拥有一个强大的动画框架,这个框架使得创建各种动态效果变得轻松且高效。本文主要关注Android动画框架中的Tween动画,以及如何通过XML和代码直接创建动画。Tween动画是通过连续改变对象的...
Android 动画框架详解 Android 平台的动画框架为开发者提供了丰富的动画效果实现手段,主要分为两类:Tween 动画和 Frame 动画。Tween 动画通过连续改变对象的属性(如平移、缩放、旋转)来创建动态效果,而 Frame ...
"swift简单的动画框架"提及的开源库很可能是Spring,它是一个专门为iOS设计的动画库,提供了一系列自定义选项,包括force(力度)和duration(持续时间),使得开发者可以轻松地创建各种复杂的视图动画。 Spring...
Android 开发中的动画框架是开发者创建动态视觉效果的重要工具。本教程将深入探讨Android动画的原理,特别是Tween动画的实现机制。Tween动画是通过改变对象的位置、大小或旋转等属性来实现连续变化,从而产生动画...
Android 平台提供了一套完整的动画框架,使得开发者可以用它来开发各种动画效果。Android 动画框架详解由原理篇和实例篇两部分组成。本文是第一部分原理篇,主要分析 Tween 动画的实现原理, 最后简单介绍在 Android...
这个"iOS 动画框架pop 1.0.7 framework最新直接用版本"是Pop库的一个特定版本,方便开发者直接集成到他们的项目中。 Pop的核心功能包括但不限于以下几点: 1. **对象动画**:Pop支持对任何CALayer属性进行动画化,...
首先,Android提供了两种主要的动画框架:属性动画(Property Animation)系统和视图动画(View Animation)系统。属性动画在API 11及以上版本引入,更加灵活且强大;而视图动画在早期版本中就已经存在,主要用于...
请看博客文章: 【Android进阶】如何写一个很屌的动画(1)---先实现一个简易的自定义动画框架,http://blog.csdn.net/scnuxisan225/article/details/50448996
《Move.js:基于CSS3的JavaScript动画框架深度解析》 在现代网页开发中,动态效果的实现已经成为提升用户体验的关键因素之一。Move.js,一个由Vision Media开发的JavaScript库,为开发者提供了一种简单且强大的方式...
SceneGraph.js, HTML5 Canvas 和动画框架 SceneGraph.jsSceneGraph.js 是面向HTML5的面向对象对象,它是一个功能强大且非常面向对象的场景图形框架,它是为了简化应用程序和游戏的开发而在HTML5中实现的。...
一个自定义动画框架可以帮助开发者更灵活、高效地实现各种复杂的动画效果。本项目名为“自定义动画框架 demo”,它提供了一个具体的实例,展示了如何在Android中构建自己的动画系统。下面将详细探讨相关知识点。 ...
"Android 动画框架"是指Android系统提供的用于创建丰富视觉效果的工具集,它允许开发者为应用添加动态交互,增强用户界面的吸引力。本Demo以小红书欢迎页为例,展示了如何通过人物移动动画来吸引用户的注意力,从而...
在Android开发中,自定义动画框架的实现是一个高级且实用的技术点,特别是在处理ScrollView滚动时的子控件动画。这不仅能够提升应用的用户体验,也能展现出开发者精湛的技术水平。以下将详细讲解如何实现一个自定义...
swift写一个简单的基于关键帧的动画框架.zip,A simple keyframe-based animation framework for iOS, written in Swift. Perfect for scrolling app intros.
**标题:“js动画框架设计”** 在Web开发领域,JavaScript是一种不可或缺的语言,它不仅用于处理用户交互,还常被用来创建动态和引人入胜的视觉效果,这背后的关键就是JavaScript动画框架。本文将深入探讨js动画...
在Android 动画框架详解的第二部分中,我们将深入探讨如何实现复杂的Android Launcher的平滑和立体翻页效果。这一部分建立在第一部分的基础上,第一部分主要讲解了Android动画框架的原理,包括Y轴旋转的动画示例。 ...
在Android开发中,自定义动画框架是一个非常关键的领域,它可以帮助开发者创造出独特且吸引人的用户界面,提升应用的用户体验。"android 自定义动画框架"这个主题主要涉及到Android平台上的动画实现技术,以及如何...