Unity - 大批量的蒙皮动画优化

Unity - 大批量的蒙皮动画优化


MeshAnimator

之前做的一个PSVR项目,在后期优化时碰到由于场景里有大量蒙皮动画导致CPU时间太高的问题,最终解决办法是采用了一个MeshAnimator的插件。

其原理是,将蒙皮动画烘焙成N份Mesh,播放动画就是替换MeshRenderer的Mesh。然后我们项目的情况是3种角色,4种动画,场景上会出现最大100+的角色,假设此时的DrawCall是100。我们控制一个角色播放一个动画时统一使用同一个Mesh播放序列,既保证了播放同一个动画的角色,其MeshRenderer里的Mesh都是一样的,这样DrawCall最大只有3*4 = 12个。

这其实是一个空间换时间的概念,而且MeshRenderer支持GPU Instancing,再多的角色也不怕。

AnimMap

其次也参考了慕容小匹夫的做法:一个蒙皮动画将其顶点的变化烘焙成一张贴图,运行时在Shader里读取并改变Mesh的顶点,同样支持GPU Instancing(需要手写Shader)。我们采用后对其进行了改进添加了Diffuse光照和阴影,不过由于Shader学艺不精,在环境光采用Gradient模式时,光照有问题,最终还是采用了上面的方案。

MeshAnimator链接:https://assetstore.unity.com/packages/tools/animation/mesh-animator-26009
AnimMap链接:https://www.cnblogs.com/murongxiaopifu/p/7250772.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值