动画系统概览

Unity 拥有丰富和复杂的动画系统(有时称为 Mecanim),提供了以下功能:

  • 为 Unity 中的对象、角色、道具等元素提供易用的动画工作流程和设置。
  • 支持导入动画片断和用 Unity 创建的动画。
  • 人形动画重定位 — 这一能力允许把一个角色模型的动画应用到另一个角色。
  • 为调整动画剪辑提供简化了的工作流程。
  • 为动画剪辑、转换、交互提供方便的预览。使得动画可以更独立于程序和原型运行,在嵌入代码之前,就可以预览动画。
  • 用可视化的编程工具管理动画之间的负责交互。
  • 可以为不同的身体部位添加不同的动画逻辑。
  • 层和遮罩功能。

Typical view of an Animation State Machine in the Animator window

动画视图中的动画状态机

动画工作流程

Unity 动画系统基于动画剪辑概念,包含了指定对象随着时间推移应该如何改变位置、旋转或其他属性的性息。每个剪辑可以认为是一段线性记录。外部导入的动画剪辑由第三方艺术或动画工具创建,例如 Max 和 Maya,或者来源于动作捕捉设置,或者其他来源。

动画剪辑 Animation Clip 被组织成类似流程图的系统,称为动画控制器 Animator Controller。动画控制器的行为像一台状态机,记录了当前应该播放的动画剪辑,以及什么时候应该切换或混合动画剪辑。

一个非常简单的动画控制器可能只包含一个或两个动画剪辑,例如控制一段旋转或弹跳动画,或者是在合适的时间打开或关闭一扇门。更高级的动画控制器可能包含许多人形动画,涵盖了主要角色的动作,并且当玩家在场景内移动时,可能同时混合多个动画剪辑来提供流畅的动作。

Unity 动画系统还为人形角色提供了一些特殊功能,使你可以重构任意来源的人形动画(例如,动作捕捉,资源商店,或其他第三方动画库)到你的角色模型上,并且可以调整肌肉定义。这些特殊功能由 Unity 的 Avatar 系统提供,可以把人形角色映射到一种通用的内部格式。

每个元素 — 动画剪辑、动画控制器、Avatar — 通过动画组件 Animator 组件合并到一个游戏对象上。这个组件引用了动画控制器和(如果需要)Avatar 系统,动画控制器又包含了对动画剪辑的引用。

Diagram showing how the various parts of the animation system connect together

动画系统的各部分是如何连接在一起的

上面的图形展示了:

  1. 动画剪辑或者从外部资源导入,或者在 Unity 中创建。在这个例子中,是从动作捕捉导入的人形动画。
  2. 动画剪辑被放入动画控制器。上图显示了动画视图中的动画控制器。这些状态(表示动画或嵌套的子状态机)以节点的形式展现,用线条连接。动画控制器作为一个资源显示在项目视图中。
  3. 被控制的角色模型(在这里是宇航员 Astrella)拥有特殊的骨骼配置,被映射到 Unity 的通用 Avatar 格式。映射以 Avatar 资源的形式存储在角色模型下,做为被导入角色模型的一部分,显示在项目视图中。
  4. 当赋予角色模型动画时,一个动画组件被添加。在上面的检视视图中,你可以看到动画组件被指定了动画控制器和 Avatar。动画组件同时使用两者来使模型动起来。只有人形角色才需要引用 Avatar。对于其他类型的动画,只需要一个动画控制器。

Unity 动画系统(称为 Mecanim)含有大量的概念和术语。在任何时候,如何你需要查找某个东西的含义,请访问 动画术语

传统动画系统

尽管在大多数情况下推荐使用 Mecanim,但是 Unity 还保留了 Unity 4 之前的传统动画系统。如果使用 Unity 4 之前创建的老内容时,你可能需要用到它。有关传统动画系统的更多信息请查看 这章

Unity 打算把传统动画系统的工作流程合并到 Mecanim,来逐步淘汰传统动画系统。