动画系统(第一篇)

动画系统概述

Unity 有一个丰富而复杂的动画系统(有时称为“Mecanim”)。该系统具有以下功能:

为 Unity 的所有元素(包括对象、角色和属性)提供简单工作流程和动画设置。
支持导入的动画剪辑以及 Unity 内创建的动画
人形动画重定向 - 能够将动画从一个角色模型应用到另一角色模型。
对齐动画剪辑的简化工作流程。
方便预览动画剪辑以及它们之间的过渡和交互。因此,动画师与工程师之间的工作更加独立,使动画师能够在挂入游戏代码之前为动画构建原型并进行预览。
提供可视化编程工具来管理动画之间的复杂交互。
以不同逻辑对不同身体部位进行动画化。
分层和遮罩功能
在这里插入图片描述
动画工作流程
Unity 的动画系统基于动画剪辑的概念;动画剪辑包含某些对象应如何随时间改变其位置、旋转或其他属性的相关信息。每个剪辑可视为单个线性录制。来自外部的动画剪辑由美术师或动画师使用第三方工具(例如 Autodesk® 3ds Max® 或 Autodesk® Maya®)创建而成,或者来自动作捕捉工作室或其他来源。

然后,动画剪辑将编入称为 Animator Controller 的一个类似于流程图的结构化系统中。Animator Controller 充当“状态机”,负责跟踪当前应该播放哪个剪辑以及动画应该何时改变或混合在一起。

一个非常简单的 Animator Controller 可能只包含一个或两个剪辑,例如,使用此剪辑来控制能量块旋转和弹跳,或设置正确时间开门和关门的动画。一个更高级的 Animator Controller 可包含用于主角所有动作的几十段人形动画,并可能同时在多个剪辑之间进行混合,从而当玩家在场景中移动时提供流畅的动作。

Unity 的动画系统还具有用于处理人形角色的许多特殊功能。这些功能可让人形动画从任何来源(例如:动作捕捉、Asset Store 或某个其他第三方动画库)重定向到您的角色模型中,并可调整肌肉定义。这些特殊功能由 Unity 的替身系统启用;在此系统中,人形角色会被映射到一种通用的内部格式中。

所有这些部分(动画剪辑、Animator Controller 和 Avatar)都通过 Animator 组件一起附加到某个游戏对象上。该组件引用了Animator Controller,并(在必需时)引用此模型的 Avatar。Animator Controller又进一步包含所使用的动画剪辑的引用。
在这里插入图片描述
上图显示了以下内容:

1.动画剪辑是从外部来源导入的或在 Unity 内创建的。在此示例中,它们是导入的动作捕捉人形动画。 2.动画剪辑显示并排列在Animator Controller中。因此,在 Animator 窗口中会显示Animator Controller的视图。状态(可表示动画或嵌套的子状态机)显示为通过线条连接的节点。此Animator Controller作为资源存在于 Project 窗口中。 3.骨架角色模型(在本示例中为宇航员“Astrella”)具有映射到 Unity 常见替身格式骨骼的特定配置。此映射作为导入的角色模型的一部分存储为 Avatar 资源,并且在 Project 窗口中显示(如图所示)。 4.对角色模型进行动画化时,角色模型会附带一个Animator组件。在上图所示的 Inspector 视图中,您可以看到一个Animator组件,该组件已被分配了Animator Controller和替身。Animator将这些一起用于对模型的动画化过程。仅在对人形角色进行动画化时,才需要引用 Avatar。对于其他动画类型,只需Animator Controller。

Unity 动画系统中有很多的概念和术语。如果在任何时间需要了解术语的含义,请转至动画术语表。

旧版动画系统

虽然在大多数情况下建议使用 Mecanim,但是 Unity 保留了 Unity 4 之前的版本便存在的旧版动画系统。在处理 Unity 4 之前的版本创建的旧内容时可能需要使用它。有关旧版动画系统的信息,请参阅此部分

动画剪辑

动画剪辑是 Unity 动画系统的核心元素之一。Unity 支持从外部源导入动画,并允许在编辑器中使用 Animation 窗口从头开始创建动画剪辑。

外部源动画

从外部源导入的动画剪辑可能包括:

在动作捕捉工作室中捕捉的人形动画
美术师在外部 3D 应用程序(如 Autodesk® 3ds Max® 或 Autodesk® Maya®)中从头开始创建的动画
来自第三方库(例如 Unity 的 Asset Store)的动画集
从导入的单个时间轴剪切的多个剪辑。
在这里插入图片描述
在这里插入图片描述

Unity 中创建和编辑的动画

在 Unity 的 Animation 窗口中还可以创建和编辑动画剪辑。这些剪辑可针对以下各项设置动画:

游戏对象的位置、旋转和缩放
组件属性,例如材质颜色、光照强度、声音音量
自定义脚本中的属性,包括浮点、整数、枚举、矢量和布尔值变量
自定义脚本中调用函数的时机
在这里插入图片描述

外部来源的动画

外部来源的动画按照与常规 3D 文件相同的方式导入 Unity。这些文件(无论是通用 FBX 文件还是来自 Autodesk® Maya®、Cinema 4D、Autodesk® 3ds Max® 等 3D 软件的原生格式)可包含动画数据,这些数据的形式为文件中对象移动的线性录制结果。

在这里插入图片描述
在某些情况下,要动画化的对象(例如角色)以及随附的动画可能存在于同一文件中。在其他情况下,动画可能存在于与动画化模型相分离的文件中。

动画可能是特定模型所特有的,不能在其他模型上复用。例如,游戏中的最终 boss 巨型章鱼可能具有独特的肢体和骨骼排列,因此有自己的一组动画。

在其他情况下,您可能拥有一个动画库,这些动画将用于场景中的各种不同模型。例如,许多不同的人形角色可能都使用相同的行走和奔跑动画。在这些情况下,为了预览动画文件,在这些文件中使用简单占位模型是很常见的做法。或者可以使用只有动画数据而没有几何体的动画文件。

导入多个动画时,每个动画可以在项目文件夹中以单独文件形式存在,或者如果先前以连续片段形式从 Motion Builder 或使用 Autodesk® Maya®、Autodesk® 3ds Max® 或其他 3D 包的插件/脚本导出了 FBX 文件,您可以从单个 FBX 文件提取多个动画剪辑。如果您的文件包含了在单个时间轴上排列的多个单独动画,您可能需要执行此操作。例如,长时间的运动捕捉时间轴可能包含几个不同跳跃动作的动画,而您可能希望剪切其中的某些部分以用作单个剪辑而丢弃其余部分。Unity 提供了动画剪切工具来实现此目的;当您在一个时间轴中导入所有动画时,这些工具允许您为每个剪辑选择帧范围。

导入动画文件

在 Unity 中使用任何动画之前,必须先将其导入项目。Unity 可导入本机 Autodesk® Maya®(.mb 或 .ma)、Autodesk® 3ds Max® (.max) 和 Cinema 4D (.c4d) 文件以及通用 FBX 文件(这些文件可从大多数动画包中导出)。

有关更多信息,请参阅导入。

在导入的动画文件中查看和复制数据

您可以在 Animation 窗口中查看导入的动画剪辑的关键帧和曲线。有时,如果这些导入的剪辑存在带有大量关键帧的很多骨骼,信息量可能非常复杂。例如,下图是 Animation 窗口中的人形奔跑动画的情况:
在这里插入图片描述
为了简化视图,请选择您希望检查的特定骨骼。然后,Animation 窗口仅显示这些骨骼的关键帧或曲线。
在这里插入图片描述
查看导入的动画关键帧时,Animation 窗口提供动画数据的只读视图。要编辑此数据,请在 Unity 中创建新的空动画剪辑(请参阅创建新动画剪辑),然后选择、复制导入的动画剪辑的动画数据并将其粘贴到新的可写动画剪辑中。
在这里插入图片描述

人形Avatar

Unity 的动画系统具有处理人形角色的特殊功能。因为人形角色在游戏中很常见,所以 Unity 为人形动画提供专门的工作流程以及扩展工具集。

Unity 使用Avatar系统来识别布局中的特定动画模型是否为人形,以及模型的哪些部分对应于腿、手臂、头和躯干。

由于不同人形角色之间骨骼结构的相似性,可将动画从一个人形角色映射到另一个角色,允许__重定位__和__反向运动学 (IK)__。

在这里插入图片描述

Animation 窗口指南

Unity 中的 Animation 窗口__让您可以直接在 Unity 内创建和修改__动画剪辑。它旨在充当外部 3D 动画程序的强大而直接的替代方案。除了对运动进行动画化,编辑器还允许您对材质和组件的变量进行动画化,并使用__动画事件__函数(在时间轴上的指定点调用这些函数)来充实动画剪辑。

请参阅关于动画导入和动画脚本的页面以了解关于这些主题的更多信息。

Animation 窗口和 Timeline 窗口之间有何差异?

Timeline 窗口
Timeline 窗口可用于创建影片内容、游戏序列、音频序列和复杂的粒子效果。可以在同一序列(例如有角色与景物交互的过场动画或脚本序列)中为许多不同的游戏对象设置动画。在 Timeline 窗口中,可以有多种类型的轨道,每个轨道可以包含多个可以移动、修剪和混合的剪辑。这对于创建更复杂的动画序列非常有用,因为这些动画序列需要将许多不同的游戏对象编排在一起。

Timeline 窗口比 Animation 窗口更晚推出。它是在版本 2017.1 中添加到 Unity 的,并取代了 Animation 窗口的一些功能。要了解 Unity 中的 Timeline 窗口,请访问用户手册的 Timeline 部分。
在这里插入图片描述

Animation 窗口

Animation 窗口可用于创建各个动画剪辑以及查看导入的动画剪辑。动画剪辑存储单个游戏对象或单个游戏对象层级视图的动画。Animation 窗口可用于为游戏中的独立对象(例如摆动的钟摆、滑动的门或旋转的硬币)设置动画。Animation 窗口一次只能显示一个动画剪辑。

Animation 窗口是在 Unity 4.0 版中添加的。Animation 窗口是比 Timeline 窗口更旧的功能。Animation 窗口提供了一种创建动画剪辑和为单个游戏对象设置动画的简单方法,而在其中创建的剪辑可以用 Animator Controller 进行组合和混合。但是,要创建涉及许多不同游戏对象的更复杂序列,应使用 Timeline 窗口(见上文)。

Animation 窗口的用户界面中有一个“时间轴”(标有时间刻度的水平条),但这与 Timeline 窗口是分开的。

要了解 Unity 中的 Animation 窗口,请访问用户手册的 Animation 部分。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值