Q&A——动画(一)

动画

Q1:我在Profiler中看到Animator.Initialize这个耗时很大,这个有什么建议么?Animator.Instance 是因为Animator过多造成的吗?

由图中可知,Animator.Initialize主要是在Instantiate实例化时引起(实际上,GameObject.Active操作也会引起Animator.Initialize),而其具体的耗时原因是相关资源(主要是AnimationClip资源)的加载所致。因此,我们的建议如下:
(1)对GameObject的Instantiate实例化操作进行检测,对于频繁Instantiate的GameObject尝试进行缓存;
(2)对Animator Controller中的AnimationClip资源进行精简,可尝试动态加载和替换Animator Controller中的AnimationClip;
(3)由(1)引申出来,对于已经在缓存池中通过GameObject.Active操作造成的Animator.Initialize开销,建议通过Active/Deactive Animator组件来代替Active/Deactive GameObject,这种操作可以避免Animator.Initialize时内部组织结构创建的开销,进而降低Animator.Initialize时的CPU开销。
0.png

动画

Q2:我有一个带位移动画A,有位置有旋转的变化,需要播完这个动画后切换到一个原地的动画B。现在我发现动画A没播放就会切换到B了,导致一些位移数据并没有作用到模型上,这种情况怎么处理?

0.png

Mecanim动画系统提供了“Apply Root Motion”功能来满足两个动画文件顶点位移不一致的切换的需求。当开启“Apply Root Motion”功能后,角色的GameObject位置会随着动画的更新而更新,因此,问题中的A切到B后,GameObject的位移将不会改变。建议该研发团队检测GameObject Animator组件的“Apply Root Motion”功能是否开启。

动画

Q3:请教大神们个问题,美术在制作人物模型的骨骼动画时候,一般是没有必要缩放的,但是导出的动画文件里还有这部分信息。不知道是否有优化掉的必要。如果有,有什么好方法么?
请输入图片描述

如果可以,还是建议尽可能去掉这部分“无用”信息。研发团队可根据这里的方法来进行批量处理。
http://answers.unity3d.com/questions/668672/removing-scale-curves-from-animation.html

动画

Q4:对于Animators.DirtySceneObjects这个参数,它是和哪些因素有关,以及如何优化?
请输入图片描述

该参数是更新场景中受Mecanim动画系统影响的每个GameObject的Transform,所以当这类的GameObject数量越多时,其CPU占用也会越高。对于它的优化方式,主要有如下两种:

  1. 如果是蒙皮网格物体,则可以开启“Optimize GameObject”选项来对其进行优化;
  2. 如果是非蒙皮网格(比如具有动画的UI界面、2D Sprite等),则只能建议研发团队尽可能减少同一时刻运动的GameObject数量(一般都不会太多),如果是被缓存的屏幕外的物体,则切记要在移出时关闭其Animator组件。

动画

Q5:我们有些特效的动画开始是在相机外的 , 动作的裁剪使用的AnimationCullingType.BasedOnRenderers,这样会导致特效之后在相机内也显示不出来了,除了更改如下这个选项还有其他做法么?
请输入图片描述

理论上来说,是不应该出现这种情况的。建议用户可以提交一个具体案例给我们进行研究。同时,研发团队可以通过Unity的Culling Group功能来进行自定义的裁剪操作,该种方式较之动画系统的Culling功能更为灵活。

动画优化

Q6:UWA DAY 2017中提到“Animator优化可以把精度从8位减到3位”是什么意思?如何实现呢?

Unity的动画文件中每个关键帧数据的数值精度会达到小数点后6位以上(如下图一)。在Unity中可以通过将菜单“Edit->Project Settings->Editor”中的Asset Serialization选项设为"Force Text"获得动画文件的文本,然后通过文本处理将所有数据数值精度降低到小数点后3位(如下图二),这样可以使动画文件的大小降低。

请输入图片描述
图一

请输入图片描述
图二

以133s的动画文件为例,在不开启压缩时,其内存大小为31MB,使用Keyframe Reduction选项可以降为8MB,进一步经过降低精度后,可以降为3MB。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值