一、Timeline概述
使用Unity的Timeline创建电影内容,游戏序列,音频序列和复杂的粒子效果。
使用Unity的Timeline创建的每个剪切场景,电影或游戏序列都包含Timeline Asset和Timeline instance。
Timeline Overview部分包含有关Timeline Editor窗口,Timeline Assets和Timeline instance之间关系的详细信息。
Timeline Workflows部分显示如何创建Timeline Assets以及Timeline instances,如何记录基本动画以及如何创建过场动画。
二、Timeline workflows
Timeline Editor窗口提供了许多不同的工作流程,用于创建Timeline Assets和instances,录制动画,安排动画和创建电影内容:
(1)、创建Timeline Asset以及Timeline instance
要在场景中使用Timeline Asset,可使用Playable Director组件将Timeline Asset与GameObject相关联。将Timeline Asset与Playable Director组件相关联可创建Timeline instance,并允许你指定Timeline Asset为场景中的哪些对象设置动画。GameObject还必须具有Animator组件。
Timeline Editor窗口提供了一种在创建新的Timeline Asset时创建Timeline instance的自动方法。Timeline Editor窗口还会创建所有必须的组件。
要创建新的Timeline Asset以及Timeline instance,可按照下列步骤操作:
1.在场景中,选择一个GameObject来做电影或其他基于游戏玩法的序列。
2.打开Timeline Editor窗口(menu:Window>Sequencing>Timeline)。如果GameObject尚未将Playable Director组件附加到Timeline Asset,则Timeline Editor窗口中会有提示你单击Create按钮的消息。
1.单击"Create"将出现一个对话框,提示你输入正在创建的Timeline Asset的名称和位置。你还可以指定tags来表示Timeline Asset
2.点击 Save
Unity执行以下操作:
·将新的Timeline Asset保存到项目中。如果你未更改正在创建的Timeline Asset的名称和位置,则Timeline Asset基于所选的带有"Timeline"后缀的GameObject。例如,默认情况下,选择名为"Enemy"的GameObject会将Asset命名为"Enemy Timeline"并将其保存到项目的Assets目录中。
·将空的Animation轨道添加到Timeline Asset中
·将Playable Director组件添加到选定的GameObject,并将Playable属性设置为Timeline Asset。这将创建一个Timeline instance。
·在Playable Director组件中,Animation轨道的绑定设置为选定的GameObject。Animation轨道没有任何剪辑,因此所选的GameObject不会播放动画。
·将Animator组件添加到选定的GameObject.Animator组件通过Timeline instance为GameObject设置动画。没有Animator组件,GameObject无法进行动画处理。
(2)、使用 Infinite clip录制基本的animation
你可以将动画直接录制到Animation轨道。直接录制到空Animation轨道时,可以创建 Infinite clip。
Infinite clip定义为包含通过Timeline Editor窗口记录的基本键动画的clip。 Infinite clip无法定位,修剪或拆分,因为它没有定义的大小:它跨越整个动画轨道。
在创建 Infinite clip之前,必须要为设置动画的GameObject添加空的动画轨道。
在Track列表中,单击空Animation轨道的Record按钮以启用Record模式。Record按钮可用于绑定简单的GameObject的运动轨迹,例如:cubes,spheres,lights等。对于绑定到humanoid GameObject的动画轨迹,禁用Record按钮。
当轨道处于录制模式时,轨道的剪辑区域将以红色绘制并显示"Recording…"消息且Record按钮闪烁。
在Record模式下,对GameObject的可动画属性的任何修改都会在Timeline Playhead的位置设置一个键。动画属性包括transform和添加到GameObject的所有组件的动画属性。
要开始创建动画,请将Timeline Playhead移动到第一个key的位置,然后执行以下操作之一:
·在Inspector窗口中,右键单击属性的名称,然后选择Add key.这会为属性添加animation key而不改变其值。白色菱形出现在 Infinite clip中以显示key的位置。
·在Inspector窗口中,更改GameObject要制作动画的属性的值。这会为属性添加一个animation key,其值已更改。白色菱形出现在 Infinite clip中。
·在Scene view,移动、旋转或缩放GameObject以添加key。这会自动为你更改的属性添加key.白色菱形出现在 Infinite clip中。
将playhead移动到timeline的其他位置,并更改GameObject的可动画属性。在每个位置,Timeline Editor窗口为 Infinite clip添加白色菱形以用于任何已更改的属性,并为其关联的动画曲线添加关键点。
在Record模式下,可以右键单击可设置动画的属性名称,以对key进行操作。例如:设置key而不改变其值,跳转到下一个或上一个key,删除key等等。例如:要设置GameObject位置的key而不更改其值,可右键单击positon,然后从上下文菜单中选择Add Key。
完成动画后,单击闪烁的Record按钮以禁用Record模式。
Infinite clip在Timeline Editor窗口中显示为dopesheet,但你无法在此视图中编辑key.使用Curves view来编辑Key。也可以单击 Infinite clip并使用Animation窗口编辑key。
保存场景或项目以保存Timeline Asset和 Infinite clip.Timeline Editor窗口将 Infinite clip中的关键帧动画保存为source asset。source asset名为Recorded,并保存为项目中Timeline Asset的子项。
对于每个附加recorded的Infinite clip,每个clip从(1)开始按顺序编号。例如:具有3个Record的Infinite clip的Timeline Asset被命名为:Record,Record(1)和Record(2)。如果删除timeline asset,则还会删除其子clip。
(3)、将Converting an Infinite clip to an Animation clip转换为Animation Clip
Infinite clip显示为dopesheet。Infinite clip无法定位,修剪或拆分,因为它没有定义大小。要在Infinite clip上定位,修剪,分割或执行其他clip操作,必须先将其转换为Aniamtion clip。
要将Infinite clip转换为Animation clip,单击Track菜单图标,然后选择"Convert to Clip Track"。你也可以右键单击该轨道,然后从上下文菜单中选择"Convert to Clip Track"。轨道菜单和上下文菜单是一样的。
(4)、创建humanoid animation
此工作流程演示了如何使用Timeline Instance为具有外部motion clips的humanoid character设置动画。此工作流程还演示了如何匹配clip偏移,手动调整clip偏移以及在clip之间创建混合以最小化跳跃和滑动。虽然此工作流使用humanoid,但你可以将此动画方法用于任何GameObject.
此工作流假定你已创建一个Timeline instance,并且其中一个空动画轨迹绑定到一个humanoid中。
从项目中,将motion clip拖动到Animation track以创建新的Animation clip.例如:将idle姿势拖动为第一个clip以从idle位置启动humanoid。根据需要定位和调整idleclip的大小。
添加第二个motion clip。在此示例中,将向右和向左转动的clip(名为Run_Left)拖动到Animation轨道上。根据需要调整Run_Left clip的大小。在此示例中,Run_Left clip的大小调整为包含一个loop,以便Guard运行并旋转180度。
播放时间轴实例。注意humanoid会在每个Animation clip之间跳转。发生这种情况是因为第一个Animation clip(Idle)结尾处的humanoid角色的位置与下一个Animaition Clip(Run_Left)开头的位置不匹配。
要修复clip之间的跳转,可以匹配每个Animation clip的偏移量。Timeline Editor窗口提供了一些匹配偏移的不同方法。在此示例中,第二个Animation clip与前一个clip匹配。为此,可以选择Run_Left clip,右键单击并选择"Match Offsets to Previous Clip"。
匹配偏移后,第一个Animation Clip(第29帧,红色箭头)末尾的humanoid与第二个Animation Clip开头的humanoid的位置和旋转相匹配(第30帧,带有绿色箭头的鬼影).
再次播放Timeline instance。尽管humanoid的位置和旋转匹配,但两个Animation Clip之间仍然存在跳跃,因为humanoid处于不同的姿势。在第一个Animation clip的末尾,humanoid直立,双脚并拢。在第二个Animation Clip的开头,humanoid向前弯曲,双脚分开。
创建一个blend以消除两个姿势之间的跳转和过渡。调整clip的大小,Blend Area,Clip In和每个Blend Curve的形状,以在两个姿势之间创建过渡。例如:在Idle clip和Run_Left clip之间的过渡中,Idle clip持续时间将更改为36,并且Run_Left将重新定位为从第25帧开始。其余属性保留为其默认值。
当Idle clip过渡到Run_Left clip时,blend会自然地消除姿势和大多数身体部位过渡之间的明显跳跃。然而,在脚的不同位置之间的混合导致脚的不自然滑动。
要固定脚的滑动,你可以手动调整Animation clip的root offset,以便脚的位置变化不大,从而减少脚的滑动。要手动调整root offset,可以在Timeline Editor窗口中选择Animation Clip。在Inspector窗口中,展开Animation Playable Asset和Clip Root Motion Offsets。
Clip的Root Motion Offsets(position和rotation)都不为0,因为对上一clip执行Match Offsets to Previous Clip已经设置这些值以匹配前一Animation Clip结束时前一个humanoid的root(臀部)。
在clip的Root Motion Offsets,启用Move工具。Move Gizmo出现在Scene视图中,位于Animation clip的root。使用以下方法之一手动调整Animation Clip的root偏移位置:
·在Scene视图中,拖动Move Gizmo
·在Inspector窗口中,更改相应Position属性的值
(5)使用Animation Override Tracks和Avatar Masking
此工作流程演示了如何使用Animation Override轨道和Avatar Mask来替换动画轨道的上半身动画。使用此技术可以为humanoid角色设置动画,例如跑步和携带物体。
此工作流程未显示如何创建Avatar mask。此工作流程仅演示如何在创建Timeline instance时使用Avatar Mask。此工作流还假定你已在绑定humanoid的动画轨道上创建了一个带有简单动画片段的Timeline instance,例如走路或跑步。
右键单击Animation轨道,然后从上下文菜单中选择"Add Override Track"。名为Override 0的Animation Override轨道将链接到选定的Animation轨道。注意:Animation Override轨道未绑定到GameObject。由于Override轨道链接到上面的Animation轨道,因此Override轨道同Animation轨道绑定到相同的GameObject:Guard humanoid。
从项目中,将具有上半身动画的Animation clip拖动到Override轨道中。例如:拖动静止不动的humanoid动画并挥动他们的手臂。根据需要定位和调整Waving_Arms clip的大小。
播放Timeline instance。Waving_Arms clip完全覆盖Run_Forward clip。要将Run_Forward clip中的下半身动画与Waving_Arms clips中的上半身动画组合,可以为Animation Override轨道指定Avatar Mask。
从项目中,将Avatar Mask拖动到Inspector窗口中的Avatar Mask属性中。激活Apply Avatar Mask复选框。则Avatar Mask图标将出现在轨道名称旁边。
播放Timeline instance.在Guard humanoid上,上半身动画取自Waving_Arms clip,下半身动画取自Run_Forward clip。要暂时禁用Avatar Mask,可单击Avatar Mask图标。
三、Timeline Editor窗口
要访问Timeline Editor窗口,请从Window菜单中选择Timeline Editor.Timeline Editor窗口显示的内容取决于你在Project窗口或Scene视图中选择的内容。
例如:如果选择与Timeline Asset关联的GameObject,则Timeline Asset将显示Timeline Asset中的轨道和clip以及与Timeline instance绑定的GameObject。
如果你尚未选择GameObject,则Timeline Editor窗口会通知你创建Timeline Asset和Timeline instance的第一步是选择GameObject。
如果选择了GameObject且它未与Timeline Asset相关联,则Timeline Editor窗口会提供用于创建新Timeline Asset,向所选GameObject添加必要组件以及创建Timeline instance的选项。
要使用Timeline Editor窗口查看以前创建的Timeline Asset,可在Project窗口中选择Timeline Asset,然后打开Timeline Editor窗口。Timeline Editor窗口显示与Timeline Asset关联的轨道和clip,但没有轨道绑定到场景中的游戏对象。此外Timeline播放控件已禁用,并且没有Timeline Playhead。
场景中绑定GameObject的轨道不会与Timeline Asset一起保存。绑定的轨道与Timeline instance一起保存。
(1)、Timeline Preview和Timeline Selector
使用Timeline Selector选择要在Timeline Editor窗口中查看,修改或预览的Timeline instance。Timeline Preview按钮启用或禁用预览所选时间轴instance在场景中的效果。
要选择Timeline instance,可单击Timeline Selector以显示当前场景中的Timeline instance 列表。
每个菜单项显示当前场景中Timeline Asset的名称及其关联的GameObject。例如,与Ground GameObject关联的名为GroundTimeline的Timeline Asset显示为GroudTimeline(Ground)。