返回介绍

Mecanim 性能和优化

发布于 2021-06-19 18:03:25 字数 2012 浏览 863 评论 0 收藏 0

此页面包含一些有助于您获得 Mecanim 最佳性能的提示,包括角色设置、动画系统和运行时优化。

角色设置

骨骼块数
在某些情况下,您需要创建拥有大量骨骼的角色,例如想要大量定制附件时。这些额外的骨骼会增加发布大小,每增加一块骨骼,您预期会要承担相对加工成本。例如,在已有 30 块骨骼的装置上增加 15 块骨骼,则在通用 (Generic) 模式下要多花 50% 的时间进行处理。请注意,可以在通用类人模式下添加骨骼。动画播放没有使用额外骨骼时,则就没什么加工成本。如果它们的附件不存在或隐藏,该成本将更低。
多个蒙皮网格
只要可能,合并蒙皮网格。将角色分成两个蒙皮网格渲染器就性能方面来说是个坏主意。如果角色只用一种材质,效会果更好,但在某些情况下,可能需要更多材质。

动画系统

控制器
当控制器未设为动画器时,动画器不会花时间进行处理。
简单的动画
播放没有融合的单个动画片段会导致 Mecanim 比旧版动画系统慢。旧版系统非常直接,会取样曲线,并将曲线直接写入变换组件。Mecanim 拥有一个用于融合的临时缓冲区,还有一些取样曲线和其他数据的额外副本。Mecanim 布局已经优化,以便进行动画融合和更复杂的设置。
缩放曲线
确保任何动画片段上均无缩放曲线。您可以编写一个资源后置处理程序,来删除缩放曲线或就其提出警告;请参阅 AssetPostprocessor 参考,获取更多信息。
Mecanim 大多数时间都在评估动画,AnimationLayersAnimationStateMachines 的间接费用控制在最低水平。向动画器(不论是否同步)再添加一层的费用取决于该层所播放的动画和混合树。当层的重量为零时,则将跳过层更新过程。
类人模式对比通用模式
这些提示有助于您在这些模式之间作出选择:
  • 导入类人 (Humanoid) 动画时,使用 BodyMask 来删除不需要的 IK 目标 (IK Goals) 或手指动画。
  • 使用通用 (Generic) 时,采用根运动比不采用时更昂贵。如果动画不采用根运动,确保不要选择根骨。
  • 在安卓 (Android) 上,由于 NEON 目前不支持安卓,获得的性能会更差。类人模式特别偏重使用数学,因此如果没有 NEON,它会极易变慢 2-2.5 倍。
Mecanim 场景
可进行多项优化,一些有用的提示包括:
  • 使用哈希而非字符串来查询动画器 (Animator)。
  • 执行小 AI 层 (AI Layer) 来控制动画器 (Animator)。您可以使之提供 OnStateChange、OnTransitionBegin 等的简单回调。
  • 使用状态标签 (State Tags) 将 AI StateMachine 与 Mecanim StateMachine 轻松匹配。
  • 使用额外曲线来模拟事件 (Events)。
  • 使用额外的曲线来标记动画,例如配合目标匹配。

运行时优化

可见性和更新
始终通过设置动画器的剔除模式 (Culling Mode) 为基于渲染器 (Based on Renderers) 来优化动画,然后禁用蒙皮网格渲染器的在屏幕外时更新 (Update When Offscreen) 属性。这样,动画在角色不可见时不会更新。请参阅蒙皮网格渲染器,获取更多信息。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文