最近在开发中遇上骨骼动画,之前没有怎么聊过这个主题,写一篇来谈谈我对这个的认识。骨骼动画或者说骨骼动画这个在游戏中还是运用的很多,尤其是精细的角色动画。刚入门的开发者可能还比较陌生,但要开发高品质的游戏,是必不可少的。制作骨骼动画的编辑器很多,比较知名的有Spine/Maya/DragonBones等等。研发DragonBones(龙骨动画)的公司(白鹭引擎的公司)已经不在了,很可惜,但技术还是值得一说。龙骨动画(DragonBones)包含了骨骼动画编辑器和运行时动画解决方案,用于创建和展示2D骨骼动画。
角色或对象的动画效果通过骨骼的变换和动作来实现。这种技术能够使动画制作更加灵活,并允许开发者创建更自然、更流畅的动画效果。除了编辑器,骨骼动画还有针对多个平台的(包括Cocos Creator/Unity等等)运行时解决方案和引擎集成。因此骨骼动画可以轻松地集成到游戏或应用程序中,并在各种设备和平台上运行。动画设计师负责设计动画,开发负责集成即可,因此大家可以分工合作,快速产出游戏。
骨骼动画的适用场景
骨骼动画适用于许多不同的场景和应用,可用于制作角色动画、特效动画、界面动画等。可以实现生动、流畅的游戏角色动作,并增强游戏的视觉效果。我就不用太多的文字介绍,通过一些案例感受一下到底能够做什么。
角色动画
特效
场景
彩带
总的来说,骨骼动画在游戏开发中的应用非常广泛,可以用于角色动画、特效、界面、背景和场景等多个方面,为游戏增添更多细节和视觉效果,提升整体游戏体验。
怎么用
以DragonBones为例子,导出的资源有三个,一个是骨骼描述文件,一个是图集描述,一个是图集
骨骼描述文件的内容,引擎runtime就是通过这些东西渲染出实际的动画。一个骨骼描述文件可以包含多个动作,每个动作有自己的骨骼,皮肤描述。下面是一个描述文件的简要内容如下:
{ "frameRate": 24, "name": "upgrade", "version": "5.5", "compatibleVersion": "5.5", "armature": [{ "type": "Armature", "frameRate": 24, "name": "root", "aabb": { "x": -118.86, "y": -194.41, "width": 320.95, "height": 215.63 }, "bone": [{ ... }], "slot"[{ ... }], "skin": [{ ... }], "animation": [{ ... }], "defaultActions": [{ ... }] }]}
使用方式还是比较简单,在Cocos Creator中给Node节点新增一个龙骨的渲染组件,然后设定相对应的资源就能够渲染出来了。
spine骨骼动画原理是差不多的,使用方式也差不多,就不做详细介绍。
优势和劣势
骨骼动画作为一种2D骨骼动画解决方案,具有许多优势和一些限制。以下是关于骨骼动画的优势和劣势:
优势:
编码要求低: 骨骼动画提供了一个相对友好的图形化编辑器,开发者能够相对容易地创建和编辑骨骼动画,不需要过多的编程知识。
跨平台支持: 骨骼动画支持多个平台和游戏引擎,能够轻松集成到不同的游戏开发环境中,包括Unity、Cocos等,具备较好的跨平台性,原生App和Web都是没问题的。
动画流畅: 骨骼动画运行时性能较好,能够有效地处理大量骨骼和动画序列,同时支持GPU加速,有助于提高动画的流畅性和效率。
节省资源: 相较于传统帧动画,骨骼动画可以节省大量的资源空间,因为它们只需要存储骨骼和动画数据,而不是每一帧的完整图像。
劣势:
学习曲线: 对于新手来说,学习使用骨骼动画工具和理解骨骼动画的概念可能需要一定的时间和学习成本。
内存性能消耗大: 在某些情况下,处理大量复杂的骨骼和动画可能会对系统资源产生一定的消耗,需要进行优化以确保性能。简单的动画采用帧动画或者缓动能够满足的就别用骨骼动画了,杀鸡不用牛刀。
不适合所有类型的动画: 虽然骨骼动画对于角色动画和许多特效非常有效,但对于某些特定的动画类型(例如某些精细的手绘动画风格),可能不太适用。
所以在游戏开发时得考虑其优势和劣势,并根据具体需求选择合适的工具和技术。
常见的工具
国外还是有不少做2D骨骼动画的软件,但能够提供Cocos的runtime的并不多。下面介绍几个比较常见的:
DragonBones
公司倒闭,已经没有人维护了,而且也没法注册登录下载。卒
https://dragonbones.github.io/cn/index.html
Spine
专注于骨骼动画的软件,cocos有运行时,也支持Unity。软件要收费:基础版69刀一年,专业版329刀,这个费用对于个人来说还算比较高,公司团队还是负担得起。
https://zh.esotericsoftware.com/
Unity 2DAnimation
Unity的2D Animation系统提供了一套用于创建和管理2D动画的工具,当然是不限于骨骼动画,其他2D动画动能做。
https://unity.com/features/2danimation
Live2D
严格来说也不是骨骼动画,是一种基于2D图片的实时运动技术,允许2D角色模型在用户交互时产生动态效果。小日子研发的,具体可以去官网了解下,目前cocos也有这块的运行时。
https://www.live2d.com/zh-CHS/
扩展知识
骨骼动画的技术原理可以参考知乎的系列文章:https://zhuanlan.zhihu.com/p/431446337
随着AI的发展,文本生成骨骼动画的AI也开始显露,未来降本增效还是能起到不少作用,可以参考这个开源仓库:
https://github.com/EricGuo5513/momask-codes
特效资源
Cocos官网提供了一些特效参考,练练手熟悉下
https://github.com/cocos/cocos-test-projects/tree/v3.8/assets/cases/middleware/dragonbones
收集了几个游戏中的特效,效果可以参考下,需要的请私信,不可用于商用,仅限于学习用途:
PS:部分图片来源于网络,侵删~
欢迎关注我的公众号,获取更多游戏开发知识和游戏源码,手把手教你做游戏
更多历史文章
解密益智游戏背后的逻辑:水排序核心实现深度解析
玩转合成游戏:从0到1的合成游戏开发指南
新形势下,中小团队和个人开发者还能入局小游戏吗?
游戏弯道设计:曲线运动的关键技巧与策略