Unity - Timeline 之 Animating a humanoid(处理类人动画)

目录:Unity - Timeline 知识汇总
原味:https://docs.unity3d.com/Packages/[email protected]/manual/wf_char_anim.html
翻译时Timeline版本:Timeline 1.2.11

Animating a humanoid

处理类人动画

这次任务是演示如何使用Timeline instance和其他动画剪辑来处理类人动画。这次的工作流也会演示如何match clip offsets(匹配剪辑偏移),手动调整剪辑偏移,和创建剪辑之间的混合以将动画剪辑之间过渡平滑。虽然演示流程使用的是类人动画,当然你也可以将这种动画处理方式应用于其他的GameObject上。

在这个工作流中,假设你已经给一个人物模型创建了一个Timeline instance和一些空的Animation轨道。例如,下面的就是一个叫DefaultMale的人物模型添加了一个空的Animation轨道。
Unity - Timeline 之 Animating a humanoid(处理类人动画)

DefaultMale人物模型添加了一个空的Animation轨道

在你的Project视图,拖拽一个动画剪辑到Animation轨道来创建一个新的动画剪辑。例如,拖拽一个idle动作的剪辑作为人物起始的待机站立。

调整这个Animation剪辑的位置,大小,或是头尾裁剪,选择 Mix mode(混合模式)作为剪辑的编辑模式。有 three different Clip Edit modes(三种不同的剪辑编辑模式)可以调整Timeline window的编辑行为。当Timeline window处于 Mix mode下,你可以拖拽和裁剪剪辑来创建混合效果。
Unity - Timeline 之 Animating a humanoid(处理类人动画)

Animation轨道,添加了DefaultMale人物模型,使用了Idle动作来作为动画剪辑。混合模式(红色圈那)是当前选择的剪辑编辑模式。

添加第二个动画剪辑。在这个例子中,添加一个run(跑步)和turn left(转向左边)的剪辑(名字叫:Run_Left)的剪辑到Animation轨道上,并调整剪辑的大小来让Run_Left剪辑循环播放多一次,这样就可以让DefaultMale模型跑步并转向180度。
Unity - Timeline 之 Animating a humanoid(处理类人动画)

带有Idle剪辑与Run_Left剪辑的Animation轨道

播放这个Timeline instance。在这个例子中,DefaultMale人物模型的动画剪辑之间过渡的变化幅度都比较大,因为人物模型的动画Idle动画剪辑与下一个RunLeft的动画剪辑的起始位置相差比较大而导致的位置不平匹配。
Unity - Timeline 之 Animating a humanoid(处理类人动画)

人物模型的动画剪辑跨度大,第一个剪辑结束帧在第29帧(红色圈中的那个播放头那),和第二个动画剪辑,该剪辑在第30帧开始(就是那个半透明的模型,在推到上对应在绿色圈中的播放头那)

Matching clips

匹配剪辑(就是让剪辑的头尾对上位置)

为了处理动画剪辑之间过渡时动作跨度过大的问题,使用每个动画剪辑的match the offset(匹配偏移)。在Timeline window中提供了 different methods for matching offsets(不同的匹配偏移方式)。在这个例子中,Timeline 让第二个动画剪辑匹配了之间的动画剪辑。为了做到这点,选中Run_Left剪辑,鼠标右键菜单选择 Match Offsets to Previous Clip(与前一个剪辑的偏移匹配处理)。
Unity - Timeline 之 Animating a humanoid(处理类人动画)

鼠标右键并选择Match Offsets to Previous Clip来让选中的动画剪辑与前一个剪辑的位置、旋转都匹配上对应的值*

Unity - Timeline 之 Animating a humanoid(处理类人动画)

再匹配调整了偏移后,第二个剪辑的起始(第30帧,半透明人物和绿色播放头那)的位置与旋转都与第一个动画剪辑的结束(第29帧的红色播放头那)的位置与旋转都匹配上了。

这时,再次播放Timeline instance。虽然位置与旋转都匹配调整好了,但仍然有一些动作之间的跳动,因为人物模型的两个动画剪辑的动作是不一样导致的。在第一个动画剪辑的结束的位置,人物模型是双脚合并、站立向着右边的。但在第二个动画剪辑的起始时,人物弯着腰、双脚分开的。

Blending clips

混合动画剪辑处理

Create a blend(创建一个混合效果) 来将两个动作之间的跨度都插值过渡了。调整剪辑的区块大小来调整混合区域,两个动画剪辑之间的那个斜着的直线就是代表两剪辑的动作会有混合过渡处理。例如,在Idle与Run_Left剪辑之间的过渡,Idle剪辑大小调整至36帧,而Run_Left则调整起始播放在第25帧。其他的属性没有调整。
Unity - Timeline 之 Animating a humanoid(处理类人动画)

在Mix mode(混合模式)下,你可以给两动作之间创建混合(红色圈那)来让两个动画的过渡看起来更平滑。

在Idle动画剪辑过渡到Run_Left剪辑时,明显没有了动作之间的跳动了。过渡的处理让模型的其他的动作也更自然过渡了,在这个例子中,模型的脚那部分的混合还是不自然的滑动。

Reducing foot slide

减少脚的滑动

为了减少脚部的滑动问题,手动调整了动画剪辑的偏移来让脚部位置减少大幅度的抖动。手动调整偏移,在Timeline window选择动画剪辑。在Inspector window展开 Animation Playable Asset(动画的可播放资源)。
Unity - Timeline 之 Animating a humanoid(处理类人动画)

选择该动画剪辑。在Inspector window中,展开 ''Animation Playable Asset(红色圈中部分)展示了 ‘Clip Transform Offsets’(剪辑的变换偏移,坐标位置或旋转变换)。

Clip Transform Offsets(剪辑的变换偏移)的旋转与坐标位置都不是0的值,因为之前处理过 Match Offsets to Previous Clip时已经设置过按上一动画剪辑的结束时的人物模型的root(hips)的值。

Clip Transform Offsets 下启用 Move(移动)工具。移动的Gizmo工具提示出现在Scene视图中,这是动画剪辑的Root的Transform。
Unity - Timeline 之 Animating a humanoid(处理类人动画)

启用移动工具(在Inspector视图中的红色箭头那)后,在Scene视图显示了移动的Gizmo(绿色箭头那)

使用以下其一一种方法来手动调整动画剪辑的坐标位置:

  • 在Scene视图拖拽移动Gizmo。
  • 在Inspector 视图,在Clip Transform Offsets下,调整对应的 Position 属性。