【入门基础】2D游戏骨骼动画简介
原文链接:http://www.taidous.com/thread-27830-1-1.html
一、2D骨骼动画概述
2D骨骼动画是将动画对象进行抽象并拆分成具有层级关系的骨骼,然后在骨骼上绑定对应的部件贴图。通过对各个骨骼在关键帧上进行移动、缩放、旋转等操作,从而实现动画对象的行为动画效果。
在游戏开发领域,Vanillaware公司非常热衷于使用2D骨骼动画来制作游戏。该公司开发了一系列画面表现极为惊艳的2D游戏,例如《胧村正》《奥丁领域》《龙之皇冠》等。此外,育碧(ubi)也拥有一套支持骨骼动画的开发工具——ubiart framework,并借助该工具开发了诸多游戏,像《雷曼:起源》等。
与目前主流的序列帧动画相比,2D骨骼动画具有显著优点。它能够用最少的资源量实现更加流畅的动作效果,并且更容易实现换装等操作。然而,其也存在一定的局限性,运用范围相对有限,程序运行时会产生额外的运算量,同时增加了美术人员编辑角色动作的难度。
二、骨骼动画的实现原理
骨骼动画文件格式
首先,需要定义好骨骼动画的格式。参考DragonBones和Cocos2d-x的骨骼动画格式,我们可以了解到一个基本的骨骼动画文件应当包含以下三部分信息:
- 骨骼的数据:描述骨骼的层级结构、初始位置、长度等基本属性。
- 动画的数据:记录各个骨骼在关键帧的状态(如位置、旋转角度、缩放比例等)以及帧与帧之间的过渡信息。
- 纹理贴图数据:部分引擎可能不需要这部分数据,它主要是与骨骼绑定的部件贴图信息。
骨骼文件的加载与使用
了解骨骼文件的格式后,就需要将骨骼文件加载进来并使用。其具体内部逻辑并不复杂,在每一帧时,根据插值计算的结果确定每个骨骼的位置,并递归计算子骨骼的位置,算好所有骨骼的位置后,更新绑定在该骨骼上的贴图位置即可。具体代码可以参考Cocos2d-x的一个实现。
三、常见2D骨骼动画编辑工具介绍
DragonBones
- URL:https://github.com/DragonBones
- 特点:
- 开源且免费,方便开发者进行二次开发和定制。
- 基于Flash Pro的骨骼动画编辑SkeletonAnimationDesignPanel,为熟悉Flash的开发者提供了便利。
- 拥有骨骼动画Actionnoxss框架,能与Starling完美结合。
- 支持多种文件导出格式,并支持导入Spine的文件。
Spine
- URL:http://zh.esotericsoftware.com/
- 特点:
- 该工具需要收费,它是通过Kickstarter众筹发展起来的。
- 支持较多的Runtime,如Unity、Cocos2d-x、XNA、Starling等。
- 不足之处在于文档相对不足,这可能会给开发者的使用带来一定困难。
Cocostudio
- URL:http://www.cocos.com/downloads/
- 特点:
- 集成了多种工具,包括骨骼动画编辑器、UI编辑器、场景编辑器、数据编辑器等。
- 免费使用,但暂不开源。
- 支持导入DragonBones和Flash动画,并且与Cocos2d-x完美结合,是Cocos2d-x后续发展的重点之一。
Uni2d
- URL:http://www.uni2d-plugin.com/
- 特点:它是Unity的一个插件,功能强大,支持不规则碰撞检测。
四、其他补充说明
单纯的骨骼动画和单纯的序列帧动画都各有优缺点。在实际应用中,有些游戏会将两种技术进行融合。以Vanillaware制作的游戏为例,游戏里角色动画就采用了这种融合方式。例如,角色飘动的披风实际上就是一个序列帧动画,开发者将其作为骨骼上的一个贴图来使用。
此外,对于一些动画效果,适当使用网格动画也能取得不错的效果。不过,关于网格动画的内容与2D骨骼动画的关联性不大,这里就不再深入展开了。