游戏开发论坛

 找回密码
 立即注册
搜索
查看: 9470|回复: 0

基于flash骨骼动画的unity实现

[复制链接]

1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
发表于 2016-1-25 13:52:24 | 显示全部楼层 |阅读模式
48_296601_8f2340fa255af9b.jpg

  文/ruisonzhou

  常见的2D动画渲染方式

1.jpg

  序列帧动画

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

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

2.jpg

  骨骼动画

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

3.jpg

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

  常用骨骼动画引擎

  DragonBones

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

  Spine

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

  GAF

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

  为什么选用flash骨骼动画

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

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

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

  移植到unity需要解决的问题

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

4.jpg

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

5.jpg

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

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

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

  文件结构

6.jpg

  导出工具

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

7.jpg

  运行效果

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

8.jpg

9.jpg

  相关阅读如何在Unity中实现MVC模式?

via:GAD

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-25 10:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表