AnimationClip内存优化
有什么好的方法可以优化动画内存占用?除了常见的降低精度,压缩,去scale等操作外,降低frameRate是否可行?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有什么好的方法可以优化动画内存占用?除了常见的降低精度,压缩,去scale等操作外,降低frameRate是否可行?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(7)
可能是测试例子的问题,降低精度并不能保证内存一定降低,但可以增大将曲线转为constant曲线的概率。在generic类型中,动画文件中经常会包含较多数值接近零的数据,这些近零值经过约取后会归为零,而零通常可以正确保存。如此这些曲线就可以转化为零值constant曲线,从而降低动画文件的内存大小。
感谢鑫哥~强! 看来一定要降低精度~
动画片段的内存占用无非是记录各种属性的变化(关键帧),想降低内存占用也无非就是去除不必要的关键帧以及对属性的操作。
从程序员的角度,提供自动剔除重复关键帧的工具已是仁至义尽,剩下就是TA从艺术角度去约束和缩减看似有用其实不必要的属性变化信息了。
对资源的优化永远是个综合性系统工程,单从程序角度出发既不能达到最优性能也不能达到最佳品质,只有综合产品、艺术、技术才能得出最优(折中)解。
Hi 题主,关于framerate可以补充一下:
如果题主问的是动画导入到unity后,在播放时改变framerate(通过控制动画播放speed,导入unity后实际已经没法改变动画片段原始framerate了),那framerate的改变不会影响内存;
但是,如果题主指的是在动画制作软件里(比如3dsmax,maya)修改framerate,那导入到unity后内存确实会受些影响。此时, 如果两个动画一致,单纯framerate不同:
结论也就是说,当动画压缩选项开启的时候,制作动画时的framerate对内存其实影响也不大,所以不需要特意在framerate上做优化
frameRate决定这个AnimationClip的关键帧采样(可以理解成是关键帧之间的间隔时间是多少),和内存没有直接的关系。
动画降低精度我做了个测试,降低以后文件大小确实小了,但是内存没什么变化。假如用float保存数据,它就是4字节,并不会因为把精度降低了内存就小了。
但是如果把精度降后,在打assetbundle (带压缩) 由于先前降低了精度,导致大量的数据相同(前提是开了force text),这样就可以压缩了,所以assetbundle会小一点。
我们可以把一些线性动画进行程序模拟,这样减少动画K帧的数据量,比如常用的itween、dotween插件和uwa推荐的xtween等