一.大概介绍下
2D骨骼动画将动画对象抽象出拆分成一个个有层级关系的骨骼
骨骼上绑定对应的部件贴图
通过对各个骨骼在关键帧进行移动,缩放,旋转等操作
来实现动画对象的行为动画效果
市面上最爱使用2D骨骼动画做游戏的公司非Vanillaware莫属,他们开发了一系列画面表现异常惊艳的2D游戏,诸如<胧村正><奥丁领域><龙之皇冠>等,
除了他们,ubi也有一套支持骨骼动画的开发工具ubiart framework开发了诸多游戏,如雷曼:起源等
同目前主流的序列帧动画相比,使用骨骼动画的优点是能用最少的资源量实现更加流畅的动作效果,并且能够更加容易实现换装等操作,缺点在于运用范围有些有限,程序运行时多了额外的运算量,同时增加了美术编辑角色动作的难度。
二.骨骼动画的实现原理
首先需要定义好骨骼动画的格式,参考dragon bones和 cocos2dx的骨骼动画格式,基本可以知道一个基本的骨骼动画文件应当包含哪些信息。
数据分为三部分,第一部分是骨骼的数据,第二部分是动画的数据,第三部分是纹理贴图数据,第三部分部分引擎也许并不需要。
了解骨骼文件的格式后,我们需要把骨骼文件加载进来并使用他,具体内部逻辑其实不复杂,每一帧的时候根据插值计算的结果确定每个骨骼的位置,并递归子骨骼,算好所有各个的位置,并更新绑定在该骨骼上的贴图位置即可,具体代码可以参考cocos2dx的一个实现:
三.工具介绍
下面介绍部分常见的2D骨骼动画编辑工具
DragonBones
特点:
开源,免费
基于Flash Pro的骨骼动画编辑SkeletonAnimationDesignPanel
骨骼动画Actionnoxss框架,完美结合starling
多种文件导出格式,并支持导入spine的文件
Spine
特点:
收费,来自kickstarter众筹发展
支持Runtime较多
unity,cocos2dx,xna,starling
文档不足
Cocostudio
特点:
包括骨骼动画编辑器,UI编辑器,场景编辑器,数据编辑器等工具
免费,暂不开源
支持导入DragonBones和flash动画
和cocos2dx完美结合,cocos2dx后续发展重点之一
Uni2d
特点:
unity的一个插件
功能强大,支持不规则碰撞检测
四.其他
单纯的骨骼动画和单纯的序列帧动画都各有优缺点,比如Vanillaware做的游戏里角色动画,其实是包含了两种技术融合,比如下面这个动画
我们可以看到那个飘动的披风实际上就是一个序列帧动画,他们把序列帧动画作为了骨骼上的一个贴图使用。
另外有些动画效果还可以适当使用网格动画,也能取得不错效果
网格动画编辑工具:
效果图:
不过继续扯下去说的东西都和2D骨骼没啥关系了,略跑题。