开启左侧

[临床动画学] 动画资源内存占用优化清单

  [复制链接]
QQ图片20170807120732.png
本路新搞了个公众号 不定期更新技术贴 欢迎大家来一波关注
8.8更新 新增了两张截图 感谢网友指正

1.减少骨骼 所有优化都受限于骨骼数,骨骼数太多的话,即使其他优化都做的很到位,也还是会占用很大空间。但是过少的骨骼会限制美术效果,一个人形角色最少也要21根骨骼,骨骼数的多少是从原画阶段就要考虑的,原画设定很多裙摆、飘带、头发的话,骨骼数必然会增多。笼统来说一个有手指、头发、少量装备的角色,骨骼数会在40-50根左右。 QQ截图20170807214928.png 1.png

2.减少关键帧 在骨骼数相同的情况下,减少动画长度和关键帧密度也会降低动画占用空间。每多一个关键帧,都会多出动画信息。而如果关键帧数量相同,动画时间更长的,也会占用更多空间,这里涉及到unity存储动画的三种曲线方式Constant,Dense和Stream。通常动画是stream曲线,这种曲线越长信息越多。不过说到底,关键帧的多少和动画时间的长短,对整体动画文件影响比较小,只要美术同学在制作过程中有这个意识,不要制造无用信息即可。

2.png
3.不要让动画满帧导出 这里包括烘焙、塌陷以及各种飘带解算插件生成的满帧。参照第二条可知满帧的话会导致文件变大,插件生成的满帧手动删除即可,烘焙导出的的话,可以打开曲线过滤选项,或者干脆不要使用需要烘焙的连接方式。

3.png
4.删除无用曲线 如bone骨骼的缩放曲线通常是不做动画的,那么就可以将缩放曲线删除掉。这里要注意的是,如果要删除一个角色的A骨骼缩放曲线,一定是所有动画里都没有A骨骼的缩放动画,否则在切换动画的时候,有可能会出现,删除了曲线的动画,会继承没删除曲线动画的动态。

4.png
5.transform值只保留小数点后四位 这是个需要程序写个工具来实现的。小数点后四位是个常用值,实际是保留三位还是五位可根据具体情况而定。而且每次操作之后一定要对比下动画的变化,没有明显误差才可以使用。
6.动画压缩optimal(最佳压缩)与keyframe reduction(帧压缩) 帧压缩是通过计算两帧之间的差值,如差值小于设置好的阈值(error参数),则删除帧。帧压缩使用的是stream曲线,两帧之间以曲线链接,每个节点有可以调整的切线,比较像贝塞尔曲线,stream曲线是unity存储动画占用空间最大、动画表现力最好的存储方式。最佳压缩,在帧压缩基础上,转化两点间的stream曲线Dense曲线,Dense曲线两帧之间以直线相连,Dense曲线的存储占用小于stream曲线,画面表现也次于stream曲线。并且选择哪条stream曲线转换为Dense曲线是unity黑箱完成的,无法控制。还有一种Constant曲线,就是从初始帧到结束帧完全是一条平直的线段,占用空间最小没有动画。

5.png
7. Legacy、Generic、Humanoid三种动画模式  测试结果显示,其他条件相同下Humanoid 占用内存要小于Legacy 和Generic,但是具体原理尚不清晰,仅供参考。
QQ截图20170807214844.png
小结,一般来说大部分项目中,动画资源占比并不大,通常只需要设置好动画压缩、截取transform值即可。因为unity的动画压缩会做类似2、3、4节提到的操作,虽没有手动的彻底,但是快捷方便性价比很高。而在格斗、动作以及舞蹈类游戏动画资源在美术资源里占比比较大,需要用比较多的精力去优化,除了上面介绍的方法之外,还有些项目用MotionBuilder或者自研的unity工具,去修改fbx文件。大幅提高性能的优化通常都伴随着画面品质的降低,性能优化和画面表现是天平的两端,多花点时间培养美术同学的优化意识,要比花时间培养程序同学的审美来的实在,赶紧把这篇内容转给你的美术同事吧!









点击标签,内容一促即达。

拉撒路
上海市
其他作品 (35)

动画资源内存占用优化清单

20837 368 6年前
您需要登录后才可以回帖 登录

全部评论
真不错
6年前 回复
[size=13.3333px]动画资源内存占用优化清单

6年前 回复
瞅瞅

6年前 回复


6年前 回复
谢谢楼主分享~
6年前 回复
谢谢楼主分享~
6年前 回复
膜拜神贴,后面的请保持队形~
6年前 回复
厉害了我的哥!
6年前 回复
学习学习学习学习
6年前 回复
不错,又占了一个沙发!
6年前 回复
数据加载中...
没有更多评论了
快速回复 返回顶部 返回列表