基于flash骨骼动画的unity实现
基于flash骨骼动画的unity实现
常见的2D动画渲染方式
- 序列帧动画
动画细腻,对动画几乎没有什么限制,
导出文件比较大,运行时占用显存比较高
- 骨骼动画
适合对动作细腻程度不是很苛刻的项目比较适用,对动画制作有一定要求,
导出文件通常就是各个部件的合并贴图大小,运行时占用显存比较少
常用骨骼动画引擎
DragonBones
对动画制作要求相对较高,支持程度不错,不支持滤镜
Spine
对动画要求不高,支持度不错, 全新的工具对flash美术需要重新学习
GAF
对动画要求不高,支持滤镜,收费
为什么选用flash骨骼动画
flash页游培养了大批的flash动画人员
项目开发人员从页游转换过来
flash骨骼动画在之前的项目中长时间运行,有丰富的工具
移植到unity需要解决的问题
- 复杂动画如何进行一次drawCall,完成渲染
如上图所示,在flash 动画中元件嵌套是很常见的一种做法,美术可以方便的复用一些元件动画,但是这也会给在unity中渲染带来一个问题,需要多个drawCall来完成在一帧上的动画显示。那么如何解决这个问题了?我们产用了扁平化动画来处理,将所有动画展开到Root帧上,来消除动画嵌套所带来的渲染层次问题。
如上图所示,在渲染的时候,会将嵌套中的原件,展开到根节点上,这样就可以做到一个drawCall 完成渲染。但是美术制作时并不需要考虑这个问题,这样就能做到工作简单化。提高工作效率。
- 实时创建Mesh 所带来的性能消耗
动画渲染过程中,我们需要创建Mesh以用来渲染,导入进来之后创建所有Mesh缓存所带来的性能和内存的消耗是不能接受的,所以只能是实时创建。实时创建的另一个弊端出现在了当场景上有多个单位时,对性能的消耗是很严重的,所以我们决定把创建的Mesh 缓存起来,这样的话即兼容了性能也兼容了内存消耗。这样实测的数据显示,同屏70个不同角色动画FPS仍然能够达到50左右。
文件结构
导出工具
一键导出的工具,是缩短工作流提高效率的工作利器,美术资源的修改更新,程序都只需要一件即可完成更新和替换,减少程序导出错误风险。
运行效果
运行效果达到美术预期,同时性能出色,同场景中50个不同单位,fps>55。