Timeline的Animation Track详解

你好,我是跟着大智学Unity的萌新,我叫小新,这是我本周的学习总结报告哦。

在Timeline中,Animation Track可能是我们用的最多的一个轨道了,而且功能也相对比较多,今天小新就来总结一下Animation Track经常用到的那些功能。

在Timeline中录制基本动画

你可以直接在Timeline的Animation轨道上录制动画,这样直接录制出来的动画称为无限片段(Infinite Clip)

为什么叫无限片段呢?无限片段贯穿整个Timeline,包含了关键帧动画。无限片段不能改变位置、修改长度或者分割,因为它的长度是无限的,贯穿整个轨道。

录制动画之前,你需要有一个空白的Animation track。当然了,创建Timeline的时候已经自动创建了一个选中物体的Animation track。你也可以点击上面的加号,创建一个新的空白Animation track。

添加一个新的Animation Track

在轨道列表中,点击红色的圆形录制按钮开启录制模式。

点击红色的圆形录制按钮开启录制模式

在录制模式中,clip区域会显示红色,并且上面有”Recording…“的信息,录制按钮也会闪烁。

录制中

录制时候的操作和之前学过的Animation窗口录制动画就很像了。录制模式下对任何属性(动画支持的属性)的修改都会作为关键帧被记录在当前时间位置。

一般的流程如下:

  • 首先将Timeline的时间轴移到第一帧

  • 在Inspector窗口中,在需要动画的属性上面右键,选择 Add Key 。这会添加一个动画关键帧。在Clip上会显示一个菱形的小图标,代表关键帧的位置。

image

  • 移动时间轴,修改GameObject的属性,Timeline会自动在clip中添加一个关键帧,保存修改后的属性。

  • 同样可以在场景中进行操作,对物体的移动、旋转、缩放都会记录成关键帧。

录制完成后,再次点击录制按钮,就可以结束录制,退出录制模式。

录制完成后,就没办法直接在Timeline中修改无限clip了,如果需要修改,可以双击clip区域打开动画编辑器窗口。也可以展开曲线编辑区域进行编辑。

最后保存场景或者工程,会将录制的动画保存到Timeline资产中。

无限clip会作为Timeline资产的子资产

如果再增加录制动画,每个动画片段都会按顺序命名。比如三个动画片段会命名成 “Recorded”, “Recorded (1)”,“Recorded (2)” 。如果你把Timeline资产删除了,里面录制的动画片段也会随之删除。

将无限片段转换成动画片段

无限片段在Timeline窗口中显示成一个个关键帧。无限片段不能移动、修改长度、分割,因为它没有一个具体的时长。如果你想移动它,有一个办法,就是将无限片段转换成动画片段(Animation Clip)。不过需要注意的是,一旦转换成动画片段(Animation Clip),就不能再转回去了。

转换的方法很简单:在Clip上右键,选择Convert To Clip Track

转换过后,就会显示成一个动画片段。

处理人形动画

下面虽然主要说的是人形动画,但是介绍的方法适用于所有动画。主要讨论的问题包括:

  • 如何匹配动画之间的偏移
  • 手动调整偏移
  • 创建动画混合解决跳动和滑步的问题。

在接着阅读下面内容之前,你可以去mixamo.com上下载一些人物的动画作为素材。

首先你需要在角色物体上创建Timeline实例,创建后如下图所示:

从工程中拖一个动画clip到Animation track上。例如你可以拖一个Idle的动画,让角色从待机状态开始。

如果想要在Clip视图里面移动、缩放、修改动画长度,在添加Track的按钮右边选中Mix Mode,如下图:

Clip的编辑模式一共有三种,之前讲到过。Mix Mode下,你可以拖拽、修改动画长度来创建混合。

下面再添加一个动画Clip到Animation Track上,比如向左跑的动画( 名字是Run_Left ),拖拽clip的尾部来修改Clip的长度,保证能播放完一个循环。

image

如果现在点击播放按钮播放的话,你会发现在第一个动画和第二个动画之间会发生跳动,这是为啥呢?这是因为第一个动画结尾的位置和第二个动画开始的位置不匹配,那怎么办呢?

如下图所示,29帧和30帧之间会发生跳动。

修复动画片段之间的位置偏移

想要修复跳动的问题,就得将不同动画片段的偏移匹配上。Timeline系统提供了多种匹配偏移的方式。现在我们先将第二段动画匹配到第一段动画的位置上。在第二段动画(Run_Left)上右键,弹出菜单中选择 Match Offsets to Previous Clip

现在播放Timeline的话,虽然位置和旋转匹配上了,但是两个动画之间仍然有跳动,因为两个动画的姿势不太一样。第一个动画结尾,角色的两只脚站在一起,而第二个动画中角色的脚是开始跑的姿势。

混合片段

要解决上面遗留的问题,需要在两段动画之间创建混合,有点类似之前Animator中不同状态的混合。通过移动、调整动画长度来调整两个动画片段的混合区域。比如下图中,Idle动画延长到了36帧,Run_Left动画开始帧移动到了25帧,动画的其他属性都没修改。

混合可以移除两个动画切换时明显的跳动。大多数动画之前的混合都有较好的效果,但是有些情况下,脚步可能会出现滑步的情况。

减少滑步

为了减少滑步的情况,我们可以手动调整动画的偏移,这样可以让脚步变化的不那么明显。手动调整的方法是:在Timeline窗口中选中动画clip,在Inspector窗口中展开 Animation Playable Asset 区域。

上图中 Clip Transform Offsets 不是0的原因是因为之前点击Match Offsets to Previous Clip时系统自动匹配了前一个动画的偏移,但是这个偏移是基于骨骼的轴心来计算的,所以脚的位置可能会有问题。

Clip Transform Offsets 下,启用Move工具,Scene窗口中会在模型轴心显示移动的小工具。

有两种方法可以手动调整偏移:

  • 在Scene窗口中拖拽

  • 在Inspector中修改数值

可能需要多次的修改调试才能达到一个比较好的效果。

使用Animation Override和Avatar遮罩

在动画系统中我们学习过了Animator Override和Avatar Mask,那在Timeline中同样有类似的功能。比如你想让人物能一边跑一边开枪,你就需要用到Mask的功能了。

首先你需要在角色物体上创建Timeline实例,上面有一个简单的Animation clip,创建后如下图所示:

如上图,放了一个向前跑的动画。在轨道上右键,弹出菜单选择 Add Override Track 。这样就会添加一个Override轨道,默认名字是Override 0,并且是和原来的动画轨道是关联的:你会看到,新创建的Override轨道并没有绑定一个GameObject,而是和原来的动画轨道关联同一个GameObject。

现在,你可以从工程中拖一个上半身的动作到Override轨道上,比如一个胳膊挥动,但是下半身站立不动的动画。将Override Clip调整到和上面Clip相同的位置和长度。

如果现在播放Timeline的话,你会看到挥手的动画完全覆盖了跑步的动画。这是因为我们没并没有设置覆盖哪部分,所以会全部覆盖掉。如果想让两个动画结合,需要使用Avatar Mask功能。选中Override clip,在Inspector中启用Apply Avatar Mask功能。

启用Avatar Mask

在Project中创建一个Avatar Mask,遮住下半身,然后将这个Avatar mask拖到对应的属性里面。

如上图这个Avatar Mask,它允许上半身的动画执行,绿色代表会生效,红色的部分会被屏蔽掉。

设置了Avatar mask的轨道,会显示一个小图标,如下图所示:

现在再运行,你就能看到挥手的上半身的动画覆盖掉了向前跑的上半身动画。如果你想暂时禁用Avatar Mask,可以点击上图中那个小图标。

总结

Timeline中大部分内容的呈现还是需要通过动画来完成的,本节课学习了很多动画相关的技巧,记得多尝试。

洪流学堂公众号回复timeline获取专题教程。

发布了138 篇原创文章 · 获赞 72 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/zhenghongzhi6/article/details/103561006