Unity 动画压缩及其优化 您所在的位置:网站首页 blender动画导入unity被压缩 Unity 动画压缩及其优化

Unity 动画压缩及其优化

2024-07-11 21:24| 来源: 网络整理| 查看: 265

一:为什么要做动画优化

    动画文件在游戏包体和内存中占的比例仅次于贴图,优化好动画文件,就优化了一小半游戏内存。拿我们正在开发的游戏举例,优化后的包体和内存比优化前减少了一百多兆,大概优化掉了五分之一的内存。

二:优化思路

  

2.1:Unity引擎对导入的AnimationClip提供三种压缩格式,Off、Keyframe Reduction和Optimal。其中,Off表示不采用压缩处理;Keyframe Reduction表示使用关键帧进行处理,Optimal则表示Unity引擎会根据动画曲线的特点来自动选择一个最优的压缩方式,可能是关键帧压缩,也可能是Dense压缩;设置Animation.Compression:Animation.Compression默认选择的是Optimal。

2.2:AnimationPositionError默认0.2,AnimationRotationError默认0.1,AnimationScaleError大部分需要丢弃,所以默认就可以。具体值需要根据自己游戏调整,我们游戏由于战斗需要拉近镜头所以对动画精度要求较高,调的压缩值比较小。设置fbx动画导入格式,默认AnimationPositionError = 0.2,AnimationRotationError = 0.1,根据项目调整,表示应该减少多少相关曲线,值越低精度越高。2.3:默认不开启Resample Curves选项:Unity官方给的建议是开启,但是开启会增大内存,所以在动画没有问题的情况下建议关闭该选项。

三:对AnimationClip资源的压缩

动画文件保存的大部分都是关键帧数据,unity中可以看到:

这里包含的信息很多,官方文档有一些介绍:https://docs.unity3d.com/Manual/class-Animator.html

结合文档,先说下曲线,从上面可以看到曲线有Pos,Quaternion,Euler,Scale,Muscles,Generic,PPtr,这里我们可以关注常用的Pos,Quaternion,Scale,代表着位置,旋转,缩放,Curves Total代表上面的所有曲线综合,计算方法:468 =48*3+48*4+44*3,Pos(x,y,z)3条曲线,Quaternion(x,y,z,w)4条曲线,Scale(x,y,z)3曲线。

然后再看看存储格式,Constant,Dense,Stream,Unity3种数据存储方式。

Constant代表基本不变的数据,哪些数据用这个存储方式?很典型的就是scale曲线,基本上都是1,Constant的内存占用很小,基本上只有关键帧值数据,不含有切线数据。

Dense格式存储,采用的是线性插值方式,不含有切线数据,少内存。一般是线性插值的曲线会采用这种方式;

Stream格式存储,采



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有