【总结】Unity 动画方面的优化

原视频:https://v.qq.com/x/page/s05175xbjvd.html。

不得不说UWA团队真的厉害。以下内容都是从视频里的概括而来。

UWA团队网络上还有很多博客,有兴趣的童鞋自己搜索。


optimize gameobject

针对Mecinam新版动画系统的优化选项,默认情况下会将动画网格下的所有骨骼结点隐藏,但是,你可以通过“Extra Transform to Expose”查看你想通过脚本获取的骨骼结点,这样既可以提升该角色的动画模块性能,又可以达到获取某个关键结点的需求。不过这种方式获得的骨骼节点是只读的,如果想要对其中的属性进行改变比如换装,就不可以开启这个选项。


multithreaded rendering
多线程渲染,将主线程的一部分渲染工作移到另一个线程里执行,Android平台下才有的优化渲染设置,但是对半透明物体支持不好,项目中需要进行测试来决定开不开启。

Legacy Generic Humaniod
Legacy 老版动画系统
Generic 适合非人型动画
Humaniod 适合人型动画,可以动画重定向
cpu耗时 Generic < Humanoid
Humanoid更省内存

Apply Root Motion
增加CPU计算量,不建议开启。如果要开启,建议勾上optimize gameobject。

AnimationBlend
指的是混合树,多层动画,动画状态过渡三个方面。
会增加ProcessAnimations的开销
避免频繁blend
替换不必要的blend tree和layers

Animation Compression
动画曲线数目决定内存大小
Type
Constant
推荐Optimal
通过调节Error调整动画文件体积
截取尾数

Bake Mesh
将Skinned Mesh转换为普通的Mesh,运行时从网格中获取对应的网格数据进行渲染。
缺点:需要记录Mesh信息,占用大量内存。

GPU Skinning
用GPU计算网格,
优点:
减少SkinnedMesh.Render的CPU耗时
骨骼结点信息通过纹理来存储,数据量较Bake Mesh会大幅降低
缺点:
增加GPU消耗,
要求DIrectX 11或者Opengl ES 3.0

猜你喜欢

转载自blog.csdn.net/j756915370/article/details/79415841