__动画剪辑__是 Unity 动画的最小构成元素。它们代表了一个单独的运动,例如 RunLeft、Jump 或 Crawl,并且可通过各种方式进行操作和组合,从而产生生动的效果(请参阅动画状态机 (Animation State Machines)、Animator Controller 或混合树 (Blend Trees))。 您可以从导入的 FBX 数据中选择动画剪辑。
单击包含动画剪辑的模型时,将显示以下属性:
Inspector 窗口的 Animation 选项卡包含四个区域:
(A) 特定资源属性。这些设置定义了整个资源的导入选项。
(B) 剪辑选择列表。您可以从此列表中选择任何项目以显示其属性并预览其动画。您也可以定义新的剪辑。
(C) 特定剪辑属性。这些设置定义了所选__动画剪辑__的导入选项。
(D) 动画预览。您可以在此处播放动画并选择特定帧。
这些属性适用于此资源中定义的所有动画剪辑和约束:
属性: | 功能: | |
---|---|---|
Import Constraints | 从此资源导入约束。 | |
Import Animation | 从此资源导入动画。 注意:如果禁用此选项,则会隐藏此页面上的所有其他选项,并且不会导入任何动画。 |
|
Bake Animations | 烘焙通过反向动力学 (IK) 或模拟 (Simulation) 创建的动画以便推进运动关键帧。 仅可用于 Autodesk® Maya®、Autodesk® 3ds Max® 和 Cinema 4D 文件。 |
|
Resample Curves | 将动画曲线重新采样为四元数值,并为动画中的每个帧生成一个新的四元数关键帧。 默认情况下会启用此选项。 仅当原始动画中的关键点之间存在插值问题时,才应禁用此选项来保留最初创作的动画曲线。 仅当导入文件包含欧拉曲线时才会显示此选项。 |
|
Anim. Compression | 导入动画时要使用的压缩类型。 | |
Off | 禁用动画压缩。这意味着 Unity 不会在导入时减少关键帧数量。禁用动画压缩可产生最高精度的动画,但性能会降低、文件会更大、运行时内存大小将增加。通常建议不要使用此选项;如果需要更高精度的动画,应启用关键帧减少 (Keyframe Reduction) 功能并减小允许的 Animation Compression Error 值。 | |
Keyframe Reduction | 导入时减少冗余关键帧。如果启用此属性,则 Inspector 会显示 Animation Compression Errors 选项。这会影响文件大小(运行时内存)以及如何计算曲线。 仅适用于 Generic 动画类型绑定。 |
|
Keyframe Reduction and Compression | 导入时减少关键帧并在文件中存储动画时压缩关键帧。这仅影响文件大小;运行时内存大小与 Keyframe Reduction 相同。如果启用此属性,则 Inspector 会显示 Animation Compression Errors 选项。 仅适用于 Legacy 动画类型绑定。 |
|
Optimal | 让 Unity 决定如何进行压缩:通过减少关键帧还是通过使用密集格式。如果启用此属性,则 Inspector 会显示 Animation Compression Errors 选项。 仅适用于 Generic 和 Humanoid 动画类型绑定。 |
|
Animation Compression Errors | 仅当启用 Keyframe Reduction 或 Optimal 压缩时可用。 | |
Rotation Error | 设置旋转曲线压缩的容错度(以度为单位的角度)。Unity 使用此值来确定是否可以删除旋转曲线上的关键点。 这表示原始旋转值和减小值之间的最小角度: Angle(value, reduced) < RotationError
|
|
Position Error | 设置位置曲线压缩的容错度(百分比)。Unity 使用此值来确定是否可以删除位置曲线上的关键点。有关更多信息,请参阅设置容错度以减少位置曲线和缩放曲线上的关键点。 | |
Scale Error | 设置缩放曲线压缩的容错度(百分比)。Unity 使用此值来确定是否可以删除缩放曲线上的关键点。有关更多信息,请参阅设置容错度以减少位置曲线和缩放曲线上的关键点。 | |
Animated Custom Properties | 导入您指定为自定义用户属性的任何 FBX 属性。 Unity 在导入 FBX 文件时仅支持一小部分属性(例如转换、旋转、缩放和可见性)。但是,您可以借助 extraUserProperties 成员,在导入器脚本中指定标准 FBX 属性(如用户属性)来处理这些属性。在导入期间,Unity 会将所有这些指定属性传递给资源后处理器 (Asset postprocessor),就像“真实”用户属性一样。 |
通过设置容错度百分比,确定 Unity 是否可以删除位置曲线或缩放曲线上的关键点作为动画压缩策略。
将 Anim. Compression 属性设置为“Keyframe Reduction”或“Optimal”时,Unity 会将原始曲线与删除特定关键帧后的曲线外观进行比较,并应用以下测试:
OriginalValue - ReducedValue > OriginalValue * percentageOfError
如果原始值和消减值之间的差值小于原始值乘以容错度百分比,则 Unity 会删除关键帧。
请注意,Unity 会比较三个曲线分量之间的距离(即,它会比较 distance(x,y,z)
)以及每个分量的距离(distance(x)
,distance(y)
,然后是 distance(z)
)。
以下示例说明了 Unity 如何使用 10% 的容错度来估算 y 轴上的减少量:
关键帧 A 的值为 11.2:
关键帧 B 的值为 11.1:
所得的消减曲线如下所示:
关键帧 A 未被消减,原因是:
D = 11.2 - 10 = 1.2
。E = 10% * 11.2 = 1.12
关键帧 B 被消减,原因是 11.1 - 10 < 10% * 11.1
:
D = 11.1 - 10 = 1.11
E = 10% * 11.1 = 1.11
请注意,当使用仅略有变化的较高值时,此方法有局限性。将场景移开 1000 个单位会产生基本上相同的动画,但位置会远离 0。
在这种情况下,两个关键帧都会被消减。
关键帧 A 被消减,原因是:
D = 1011.2 - 1010 = 1.2
E = 10% * 1011.2 = 101.12
关键帧 B 被消减,原因是 11.1 - 10 < 10% * 11.1
:
D = 11.1 - 10 = 1.11
E = 10% * 1011.1 = 101.11
较高的值要求原始值与消减值之间的差值要大得多才能将关键帧保留在消减曲线中。关键帧 A 的值为 1100,将被丢弃;关键帧 B 的值为 1112,将被保留:
在 Animation 选项卡的此区域中可执行以下任务:
+
) 按钮为此文件创建新剪辑。-
) 按钮删除所选的剪辑定义。警告:如果您手动更改导入的剪辑的任何属性,则当源资源更改时,Unity 不会导入新的动画剪辑。例如,如果在 Animation 选项卡上创建新剪辑或更改剪辑的时间,则即使在 Unity 之外将剪辑添加到 FBX 文件中,该剪辑列表也不会更改。Unity 将忽略新的动画剪辑。
Animation 选项卡的此区域显示以下特性:
(A) 所选剪辑的名称(可编辑)
(B) 动画剪辑时间轴
(C) 用于控制循环和姿势的剪辑属性
(D) 这些可展开的部分用于:定义曲线、事件、遮罩和运动根以及查看导入过程产生的消息
您可以为此资源中定义的每个动画剪辑单独设置以下属性:
属性: | 功能: | |
---|---|---|
A 区域(可编辑名称) | ||
源文件中的剪辑,用作此动画剪辑的源。 此属性定义了在 Motionbuilder、Autodesk® Maya® 和其他 3D 包中提取的一组动画。Unity 可以将这些内容导入为单个剪辑。您可以从整个文件或从帧子集创建它们。 |
||
B 区域(时间轴特性) | ||
您可以通过在时间轴上拖动起始和结束标记来定义每个剪辑的帧范围。 | ||
Start | 剪辑的起始帧。 | |
End | 剪辑的结束帧。 | |
C 区域(循环和姿势控制) | ||
Loop Time | 播放动画剪辑并在到达结尾时重新开始。 | |
Loop Pose | 无缝循环运动。 | |
Cycle Offset | 循环动画在其他时间开始时的周期偏移。 | |
Root Transform Rotation | ||
Bake into Pose | 将根旋转烘焙到骨骼移动。禁用此选项将会存储为根运动。 | |
Based Upon | 根旋转的基础。 | |
Original | 保持源文件中的原始旋转。 | |
Root Node Rotation | 使用根节点的旋转。 仅适用于 Generic 动画类型。 |
|
Body Orientation | 保持上半身朝前。 仅适用于 Humanoid 动画类型。 |
|
Offset | 根旋转偏移(以度为单位)。 | |
Root Transform Position (Y) | ||
Bake into Pose | 将垂直根运动烘焙到骨骼移动。禁用此选项将会存储为根运动。 | |
Based Upon (at Start) | 垂直根位置的基础。 | |
Original | 保持源文件中的垂直位置。 | |
Root Node Position | 使用垂直根位置。 仅适用于 Generic 动画类型。 |
|
Center of Mass | 保持质心与根变换位置对齐。 仅适用于 Humanoid 动画类型。 |
|
Feet | 保持双脚与根变换位置对齐。 仅适用于 Humanoid 动画类型。 |
|
Offset | 垂直根位置偏移。 | |
Root Transform Position (XZ) | ||
Bake into Pose | 将水平根运动烘焙到骨骼移动。禁用此选项将会存储为根运动。 | |
Based Upon | 水平根位置的基础。 | |
Original | 保持源文件中的水平位置。 | |
Root Node Position | 使用水平根变换位置。 仅适用于 Generic 动画类型。 |
|
Center of Mass | 保持与根变换位置对齐。 仅适用于 Humanoid 动画类型。 |
|
Offset | 水平根位置偏移。 | |
Mirror | 在此剪辑中进行左右镜像。 仅当动画类型 (Animation Type) 设置为 Humanoid 时才显示。 |
|
Additive Reference Pose | 启用此选项可以设置附加动画层基础参考姿势的帧。在时间轴编辑器中可以看到蓝色标记: |
|
Pose Frame | 输入一个帧编号以用作参考姿势。还可以在时间轴中拖动蓝色标记来更新此值。 仅当启用 Additive Reference Pose 的情况下才可用。 |
|
D 区域(可展开部分) | ||
Curves | 展开此部分可管理导入的剪辑上的动画曲线。 | |
Events | 展开此部分可管理导入的剪辑上的动画事件。 | |
Mask | 展开此部分可管理对导入剪辑的遮罩。 | |
Motion | 展开此部分可管理根运动节点的选择。 | |
Import Messages | 展开此部分可查看有关如何导入动画的详细信息,包括可选的重定向质量报告 (Retargeting Quality Report)。 |
创建剪辑实质上是定义动画段的起点和终点。为了使这些剪辑循环,应修整这些剪辑,使它们尽可能匹配所需循环的第一帧和最后一帧。
如果在动画导入过程中出现任何问题,动画导入检视面板 (Animations Import Inspector) 顶部会显示警告:
这些警告并不一定意味着您的动画未导入或不正常。可能仅表示导入的动画与源动画看起来略有不同。
要查看更多信息,请展开 Import Messages 部分:
在这种情况下,Unity 提供了 Generate Retargeting Quality Report 选项,通过启用该选项可以查看有关重定向问题的更多具体信息。
您可能会看到的其他警告详细信息包括:
这些消息表明 Unity 导入动画并将其转换为自己的内部格式时忽略了原始文件中的某些数据。这些警告实质上告诉您重定向的动画可能与源动画不完全匹配。
注意:Unity 不支持除常量 (constant) 以外的前外推 (pre-extrapolate) 和后外推 (post-extrapolate) 模式(也称为前无限 (pre-infinity) 和后无限 (post-infinity) 模式),因此会在导入时将这些模式转换为常量。
Animation 选项卡的预览区域提供以下特性:
(A) 所选剪辑的名称
(B) 2D 预览模式按钮(在正交摄像机和透视摄像机之间切换)
(C) 轴心和质心显示按钮(在显示和隐藏辅助图标之间切换)
(D) Avatar 选择器(更改要预览该操作的游戏对象)
(E) 播放/暂停按钮
(F) 位于预览时间轴上的播放头(可来回拖动)
(G) 动画预览速度滑动条(向左移动减速;向右移动加速)
(H) 播放状态标记(以秒、百分比和帧编号显示播放位置)
(I) Tag 栏,在此处可以定义标签 (Tags) 并将其应用于剪辑
(J) AssetBundle 栏,在此处可以定义 AssetBundle 和变体
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.