Unity流水账9:Timeline

一、Timeline概述
timeline_splash
  使用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按钮的消息。

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按钮。
timeline_workflow_record_button
  当轨道处于录制模式时,轨道的剪辑区域将以红色绘制并显示"Recording…"消息且Record按钮闪烁。
timeline_workflow_recording
  在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中。

timeline_property_red
timeline_workflow_recording_diamonds
  将playhead移动到timeline的其他位置,并更改GameObject的可动画属性。在每个位置,Timeline Editor窗口为 Infinite clip添加白色菱形以用于任何已更改的属性,并为其关联的动画曲线添加关键点。
  在Record模式下,可以右键单击可设置动画的属性名称,以对key进行操作。例如:设置key而不改变其值,跳转到下一个或上一个key,删除key等等。例如:要设置GameObject位置的key而不更改其值,可右键单击positon,然后从上下文菜单中选择Add Key。
timeline_workflow_keyframing_menu
  完成动画后,单击闪烁的Record按钮以禁用Record模式。
   Infinite clip在Timeline Editor窗口中显示为dopesheet,但你无法在此视图中编辑key.使用Curves view来编辑Key。也可以单击 Infinite clip并使用Animation窗口编辑key。
/timeline_workflow_dopesheet
  保存场景或项目以保存Timeline Asset和 Infinite clip.Timeline Editor窗口将 Infinite clip中的关键帧动画保存为source asset。source asset名为Recorded,并保存为项目中Timeline Asset的子项。
timeline_workflow_clip_in_project
  对于每个附加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。
timeline_workflow_recorded_clip_track_menu
  要将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中。
timeline_humanoid_start
  从项目中,将motion clip拖动到Animation track以创建新的Animation clip.例如:将idle姿势拖动为第一个clip以从idle位置启动humanoid。根据需要定位和调整idleclip的大小。
timeline_humanoid_idle
  添加第二个motion clip。在此示例中,将向右和向左转动的clip(名为Run_Left)拖动到Animation轨道上。根据需要调整Run_Left clip的大小。在此示例中,Run_Left clip的大小调整为包含一个loop,以便Guard运行并旋转180度。
timeline_humanoid_runleft
  播放时间轴实例。注意humanoid会在每个Animation clip之间跳转。发生这种情况是因为第一个Animation clip(Idle)结尾处的humanoid角色的位置与下一个Animaition Clip(Run_Left)开头的位置不匹配。
timeline_humanoid_before_match
  要修复clip之间的跳转,可以匹配每个Animation clip的偏移量。Timeline Editor窗口提供了一些匹配偏移的不同方法。在此示例中,第二个Animation clip与前一个clip匹配。为此,可以选择Run_Left clip,右键单击并选择"Match Offsets to Previous Clip"。
timeline_humanoid_match_menu
timeline_humanoid_after_match
  匹配偏移后,第一个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帧开始。其余属性保留为其默认值。
timeline_humanoid_blend
  当Idle clip过渡到Run_Left clip时,blend会自然地消除姿势和大多数身体部位过渡之间的明显跳跃。然而,在脚的不同位置之间的混合导致脚的不自然滑动。
  要固定脚的滑动,你可以手动调整Animation clip的root offset,以便脚的位置变化不大,从而减少脚的滑动。要手动调整root offset,可以在Timeline Editor窗口中选择Animation Clip。在Inspector窗口中,展开Animation Playable Asset和Clip Root Motion Offsets。
timeline_inspector_animation_clip_playable
  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属性的值

timeline_humanoid_manual
(5)使用Animation Override Tracks和Avatar Masking
  此工作流程演示了如何使用Animation Override轨道和Avatar Mask来替换动画轨道的上半身动画。使用此技术可以为humanoid角色设置动画,例如跑步和携带物体。
  此工作流程未显示如何创建Avatar mask。此工作流程仅演示如何在创建Timeline instance时使用Avatar Mask。此工作流还假定你已在绑定humanoid的动画轨道上创建了一个带有简单动画片段的Timeline instance,例如走路或跑步。
timeline_masking_start
  右键单击Animation轨道,然后从上下文菜单中选择"Add Override Track"。名为Override 0的Animation Override轨道将链接到选定的Animation轨道。注意:Animation Override轨道未绑定到GameObject。由于Override轨道链接到上面的Animation轨道,因此Override轨道同Animation轨道绑定到相同的GameObject:Guard humanoid。
timeline_masking_override
  从项目中,将具有上半身动画的Animation clip拖动到Override轨道中。例如:拖动静止不动的humanoid动画并挥动他们的手臂。根据需要定位和调整Waving_Arms clip的大小。
timeline_masking_waving
  播放Timeline instance。Waving_Arms clip完全覆盖Run_Forward clip。要将Run_Forward clip中的下半身动画与Waving_Arms clips中的上半身动画组合,可以为Animation Override轨道指定Avatar Mask。
timeline_masking_override_selected
  从项目中,将Avatar Mask拖动到Inspector窗口中的Avatar Mask属性中。激活Apply Avatar Mask复选框。则Avatar Mask图标将出现在轨道名称旁边。
timeline_masking_avatar_inspector
timeline_masking_avatar_on
  播放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。
Main/timeline_editor_bindings
  如果你尚未选择GameObject,则Timeline Editor窗口会通知你创建Timeline Asset和Timeline instance的第一步是选择GameObject。
timeline_editor_to_start
  如果选择了GameObject且它未与Timeline Asset相关联,则Timeline Editor窗口会提供用于创建新Timeline Asset,向所选GameObject添加必要组件以及创建Timeline instance的选项。
timeline_editor_create
  要使用Timeline Editor窗口查看以前创建的Timeline Asset,可在Project窗口中选择Timeline Asset,然后打开Timeline Editor窗口。Timeline Editor窗口显示与Timeline Asset关联的轨道和clip,但没有轨道绑定到场景中的游戏对象。此外Timeline播放控件已禁用,并且没有Timeline Playhead。
timeline_editor_project
  场景中绑定GameObject的轨道不会与Timeline Asset一起保存。绑定的轨道与Timeline instance一起保存。
(1)、Timeline Preview和Timeline Selector
  使用Timeline Selector选择要在Timeline Editor窗口中查看,修改或预览的Timeline instance。Timeline Preview按钮启用或禁用预览所选时间轴instance在场景中的效果。
timeline_preview_selector
  要选择Timeline instance,可单击Timeline Selector以显示当前场景中的Timeline instance 列表。
  每个菜单项显示当前场景中Timeline Asset的名称及其关联的GameObject。例如,与Ground GameObject关联的名为GroundTimeline的Timeline Asset显示为GroudTimeline(Ground)。

猜你喜欢

转载自blog.csdn.net/SHIYUEDYX/article/details/88866220