基于flash骨骼动画的unity实现

发表于2016-01-22
评论3 1.04w浏览

基于flash骨骼动画的unity实现

 

常见的2D动画渲染方式

C:UsersruisonzhouDesktop未命名-1.png

  1. 序列帧动画

动画细腻,对动画几乎没有什么限制,

导出文件比较大,运行时占用显存比较高

C:UsersruisonzhouDesktop未命名-2.png

  1. 骨骼动画

适合对动作细腻程度不是很苛刻的项目比较适用,对动画制作有一定要求,

导出文件通常就是各个部件的合并贴图大小,运行时占用显存比较少D:branch_0.3.8clientsourceAssetsTencentResourcesTDSwfu34r_t0.png

常用骨骼动画引擎

DragonBones

对动画制作要求相对较高,支持程度不错,不支持滤镜

Spine

对动画要求不高,支持度不错, 全新的工具对flash美术需要重新学习

GAF

对动画要求不高,支持滤镜,收费

 

为什么选用flash骨骼动画

flash页游培养了大批的flash动画人员

项目开发人员从页游转换过来

flash骨骼动画之前的项目中长时间运行,有丰富的工具

 

移植到unity需要解决的问题

  1. 复杂动画如何进行一次drawCall完成渲染

如上图所示,在flash 动画元件嵌套是很常见的一种做法,美术可以方便的复用一些元件动画,但是也会给在unity中渲染带来一个问题,需要多个drawCall来完成在一帧上的动画显示。那么如何解决这个问题了?我们产用扁平化动画来处理,将所有动画展开到Root帧上来消除动画嵌套所带来的渲染层次问题。

如上图所示,在渲染的时候,会将嵌套中的原件,展开到根节点上,这样就可以做到一个drawCall 完成渲染。但是美术制作时并不需要考虑这个问题,这样就能做到工作简单化。提高工作效率。

 

  1. 实时创建Mesh 带来的性能消耗

动画渲染过程中,我们需要创建Mesh以用来渲染,导入进来之后创建所有Mesh缓存所带来的性能内存的消耗是不能接受的,所以只能是实时创建。实时创建的另一个弊端出现在了当场景上有多个单位时,对性能的消耗是很严重的,所以我们决定把创建的Mesh 缓存起来,这样的话即兼容了性能也兼容了内存消耗这样实测的数据显示,同屏70个不同角色动画FPS仍然能够达到50左右。

 

文件结构

 

导出工具

一键导出的工具,是缩短工作流提高效率的工作利器,美术资源的修改更新,程序都只需要一件即可完成更新和替换,减少程序导出错误风险

 

运行效果

运行效果达到美术预期,同时性能出色,同场景中50个不同单位,fps>55

 

 

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引