This commit is contained in:
2025-01-17 13:10:42 +01:00
commit 4536213c91
15115 changed files with 1442174 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
system: jira
server: jira.unity3d.com
issuetype: Bug
package: Timeline
project: TB

View File

@@ -0,0 +1,5 @@
{
"timestamp": 1716827088,
"signature": "KCj9ZraD/htFNdVzUTVOM2A2n91Ts+Nx3KTZ29SwMZEjcLUEW9RD+AkT935/G4JWxrnuCaVwipx2fFLdSArD1IdGttp2QUeYiMhwCObEgXa9g45HPO2RbUYxLgtw4C32YsL+Eo/eVkymxO5/7EUxXtasfJXzq5FpPkesZH1xcheJX7Mivp7+/uJMdu4j3MGIbqlGWRhIyp0j7KlCfXrmRbbGoCpN5YMvvdjQXNOxt03U0DT+Yh4AAoM5pEjrM1CEKc5tarXUJS7L4OrhyMet6UlrcQcze4WZ52KncogcD9Vw01F+ADcMrDmOK15r3xzzCG67RQ6VWtcrZSOFigqVQx4Ga7QlNs1D064mZVb1Wc+fD2LG56jzZuniSma00etA7dWrd6Y1gqWFQWacqH3+/EL69gUfq1loW/Yp/szjrsPqmYzF/Z/4slMotUpGV0k3z2BRGfboD6WHMolibWuIUypkZfhAtdk34L4WckE3EEej37K7PlYBNXyVx69CnlB0",
"publicKey": "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQm9qQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FZOEFNSUlCaWdLQ0FZRUFzdUhXYUhsZ0I1cVF4ZEJjTlJKSAordHR4SmoxcVY1NTdvMlZaRE1XaXhYRVBkRTBEMVFkT1JIRXNSS1RscmplUXlERU83ZlNQS0ZwZ1A3MU5TTnJCCkFHM2NFSU45aHNQVDhOVmllZmdWem5QTkVMenFkVmdEbFhpb2VpUnV6OERKWFgvblpmU1JWKytwbk9ySTRibG4KS0twelJlNW14OTc1SjhxZ1FvRktKT0NNRlpHdkJMR2MxSzZZaEIzOHJFODZCZzgzbUovWjBEYkVmQjBxZm13cgo2ZDVFUXFsd0E5Y3JZT1YyV1VpWXprSnBLNmJZNzRZNmM1TmpBcEFKeGNiaTFOaDlRVEhUcU44N0ZtMDF0R1ZwCjVNd1pXSWZuYVRUemEvTGZLelR5U0pka0tldEZMVGdkYXpMYlpzUEE2aHBSK0FJRTJhc0tLTi84UUk1N3UzU2cKL2xyMnZKS1IvU2l5eEN1Q20vQWJkYnJMbXk0WjlSdm1jMGdpclA4T0lLQWxBRWZ2TzV5Z2hSKy8vd1RpTFlzUQp1SllDM0V2UE16ZGdKUzdGR2FscnFLZzlPTCsxVzROY05yNWdveVdSUUJ0cktKaWlTZEJVWmVxb0RvSUY5NHpCCndGbzJJT1JFdXFqcU51M3diMWZIM3p1dGdtalFra3IxVjJhd3hmcExLWlROQWdNQkFBRT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4a0757ee0236f39489520769ae710288
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5486badfefef3eb47b45d071d232469d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,112 @@
using System;
using System.Collections.Generic;
using UnityEditor.ShortcutManagement;
using UnityEditor.Timeline.Actions;
using UnityEngine;
using UnityEngine.Timeline;
namespace DocCodeExamples
{
class ActionExamples_HideAPI
{
#region declare-sampleClipAction
[MenuEntry("Custom Actions/Sample clip Action")]
public class SampleClipAction : ClipAction
{
public override ActionValidity Validate(IEnumerable<TimelineClip> clip)
{
return ActionValidity.Valid;
}
public override bool Execute(IEnumerable<TimelineClip> items)
{
Debug.Log("Test Action");
return true;
}
[TimelineShortcut("SampleClipAction", KeyCode.K)]
public static void HandleShortCut(ShortcutArguments args)
{
Invoker.InvokeWithSelectedClips<SampleClipAction>();
}
}
#endregion
#region declare-sampleMarkerAction
[MenuEntry("Custom Actions/Sample marker Action")]
public class SampleMarkerAction : MarkerAction
{
public override ActionValidity Validate(IEnumerable<IMarker> markers)
{
return ActionValidity.Valid;
}
public override bool Execute(IEnumerable<IMarker> items)
{
Debug.Log("Test Action");
return true;
}
[TimelineShortcut("SampleMarkerAction", KeyCode.L)]
public static void HandleShortCut(ShortcutArguments args)
{
Invoker.InvokeWithSelectedMarkers<SampleMarkerAction>();
}
}
#endregion
#region declare-sampleTrackAction
[MenuEntry("Custom Actions/Sample track Action")]
public class SampleTrackAction : TrackAction
{
public override ActionValidity Validate(IEnumerable<TrackAsset> tracks)
{
return ActionValidity.Valid;
}
public override bool Execute(IEnumerable<TrackAsset> tracks)
{
Debug.Log("Test Action");
return true;
}
[TimelineShortcut("SampleTrackAction", KeyCode.H)]
public static void HandleShortCut(ShortcutArguments args)
{
Invoker.InvokeWithSelectedTracks<SampleTrackAction>();
}
}
#endregion
#region declare-sampleTimelineAction
[MenuEntry("Custom Actions/Sample Timeline Action")]
public class SampleTimelineAction : TimelineAction
{
public override ActionValidity Validate(ActionContext context)
{
return ActionValidity.Valid;
}
public override bool Execute(ActionContext context)
{
Debug.Log("Test Action");
return true;
}
[TimelineShortcut("SampleTimelineAction", KeyCode.Q)]
public static void HandleShortCut(ShortcutArguments args)
{
Invoker.InvokeWithSelected<SampleTimelineAction>();
}
}
#endregion
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 617e6579183b7cc488aae748fe3f88bd
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,21 @@
{
"name": "DocCodeExamples",
"rootNamespace": "",
"references": [
"GUID:f06555f75b070af458a003d92f9efb00",
"GUID:02f771204943f4a40949438e873e3eff"
],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": false,
"defineConstraints": [
"UNITY_INCLUDE_TESTS"
],
"versionDefines": [],
"noEngineReferences": false
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9550f6b9c1ac87345a996c43f204fb30
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
using UnityEditor;
using UnityEditor.Timeline;
using UnityEngine;
namespace DocCodeExamples
{
class MarkerEditorExamples
{
void MarkerRegionExample(MarkerOverlayRegion region)
{
#region declare-trackRegion
GUI.BeginClip(region.trackRegion, -region.trackRegion.min, Vector2.zero, false);
EditorGUI.DrawRect(region.markerRegion, Color.blue);
GUI.EndClip();
#endregion
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ebaa79c245e369449a3565c4b9c3e703
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,132 @@
using System.Collections.Generic;
using UnityEditor.ShortcutManagement;
using UnityEditor.Timeline;
using UnityEditor.Timeline.Actions;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;
namespace DocCodeExamples
{
class TimelineAttributesExamples_HideAPI
{
#region declare-sampleTrackBindingAttr
[TrackBindingType(typeof(Light), TrackBindingFlags.AllowCreateComponent)]
public class LightTrack : TrackAsset { }
#endregion
#region declare-menuEntryAttribute
[MenuEntry("Simple Menu Action")]
class SimpleMenuAction : TimelineAction
{
public override ActionValidity Validate(ActionContext actionContext)
{
return ActionValidity.Valid;
}
public override bool Execute(ActionContext actionContext)
{
return true;
}
}
[MenuEntry("Menu Action with priority", 9999)]
class MenuActionWithPriority : TimelineAction
{
public override ActionValidity Validate(ActionContext actionContext)
{
return ActionValidity.Valid;
}
public override bool Execute(ActionContext actionContext)
{
return true;
}
}
[MenuEntry("My Menu/Menu Action inside submenu")]
class MenuActionInsideSubMenu : TimelineAction
{
public override ActionValidity Validate(ActionContext actionContext)
{
return ActionValidity.Valid;
}
public override bool Execute(ActionContext actionContext)
{
return true;
}
}
#endregion
#region declare-timelineShortcutAttr
public class ShortcutAction : TimelineAction
{
public override ActionValidity Validate(ActionContext _)
{
return ActionValidity.Valid;
}
public override bool Execute(ActionContext _)
{
Debug.Log("Action executed.");
return true;
}
[TimelineShortcut("Test Action", KeyCode.K, ShortcutModifiers.Shift | ShortcutModifiers.Alt)]
public static void HandleShortCut(ShortcutArguments args)
{
Invoker.InvokeWithSelected<ShortcutAction>();
}
}
#endregion
#region declare-applyDefaultUndoAttr
[ApplyDefaultUndo]
public class SetNameToTypeAction : TrackAction
{
public override ActionValidity Validate(IEnumerable<TrackAsset> items)
{
return ActionValidity.Valid;
}
public override bool Execute(IEnumerable<TrackAsset> items)
{
foreach (TrackAsset track in items)
track.name = track.GetType().Name;
return true;
}
}
#endregion
#region declare-customStyleMarkerAttr
[CustomStyle("MyStyle")]
public class MyMarker : UnityEngine.Timeline.Marker { }
#endregion
#region declare-customTimelineEditorAttr
[CustomTimelineEditor(typeof(MyCustomClip))]
class MyCustomClipEditor : ClipEditor { }
#endregion
class MyCustomClip : PlayableAsset
{
public override Playable CreatePlayable(PlayableGraph graph, GameObject owner)
{
return Playable.Null;
}
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 5724bf63aa724f5586275b3153a02a01
timeCreated: 1600894640

View File

@@ -0,0 +1,16 @@
using UnityEditor.Timeline;
namespace DocCodeExamples
{
class TimelineEditorExamples_HideAPI
{
void RefreshReasonExample()
{
#region declare-refreshReason
TimelineEditor.Refresh(RefreshReason.ContentsModified | RefreshReason.SceneNeedsUpdate);
#endregion
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 6cd9f16fc29247c8af731c6b3b0a990f
timeCreated: 1600965115

View File

@@ -0,0 +1,17 @@
using UnityEngine;
using UnityEngine.Timeline;
namespace DocCodeExamples
{
class TrackAssetExamples_HideAPI
{
#region declare-trackAssetExample
[TrackColor(1, 0, 0)]
[TrackBindingType(typeof(Animator))]
[TrackClipType(typeof(AnimationClip))]
public class CustomAnimationTrack : TrackAsset { }
#endregion
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c9f0489deaf04d0fbcbe45fd50a018f6
timeCreated: 1600894170

View File

@@ -0,0 +1,63 @@
* [Unity's Timeline](index.md)
* [Install Timeline](install.md)
* [Timeline Samples](samp-overview.md)
* [Customization Samples](samp-custom-samples.md)
* [Gameplay Sequence Demo](samp-gameplay-demo.md)
* [Timeline Workflows](wf-overview.md)
* [Create a Timeline asset and Timeline instance](wf-create-instance.md)
* [Record basic animation](wf-record-anim.md)
* [Convert an Infinite clip to an Animation clip](wf-convert-infinite.md)
* [Animate a humanoid](wf-anim-human.md)
* [Override upper-body animation](wf-anim-override.md)
* [Create a Sub-Timeline instance](wf-subtimeline.md)
* [Use markers and signals for footsteps](wf-signals.md)
* [Create a custom Notes marker](wf-custom-marker.md)
* [Timeline assets and instances](tl-overview.md)
* [Timeline window](tl-window.md)
* [Timeline Preview](tl-preview.md)
* [Timeline Playback Controls](tl-play-ctrls.md)
* [Timeline Selector](tl-selector-instance.md)
* [Timeline Options](tl-options.md)
* [Track List](trk-list-overview.md)
* [Track Header](trk-header.md)
* [Add tracks](trk-add.md)
* [Select tracks](trk-select.md)
* [Duplicate tracks](trk-duplicate.md)
* [Reorder tracks and Animation Priority](trk-reorder.md)
* [Group Tracks](trk-groups.md)
* [Delete Tracks](trk-delete.md)
* [Lock and Mute Tracks](trk-lock-mute.md)
* [Content view and Edit modes](clip-overview.md)
* [Pan and Zoom the Content view](clip-pan-zoom.md)
* [Add clips](clip-add.md)
* [Insert clips](clip-insert.md)
* [Select clips](clip-select.md)
* [Position clips](clip-position.md)
* [Tile clips](clip-tile.md)
* [Duplicate clips](clip-duplicate.md)
* [Trim clips](clip-trim.md)
* [Split clips](clip-split.md)
* [Reset clips](clip-reset.md)
* [Change clip play speed](clip-speed.md)
* [Set Gap Extrapolation](clip-gap-extrap.md)
* [Ease-in and ease-out clips](clip-ease.md)
* [Blend clips](clip-blend.md)
* [Match clip offsets](clip-match.md)
* [Curves View](curves-overview.md)
* [Use the Curves View](curves-using.md)
* [Manipulate keyframes](curves-keyframes.md)
* [Tangent modes and types](curves-tangents.md)
* [Timeline properties in the Inspector window](insp-overview.md)
* [Timeline asset properties](insp-tl-asset.md)
* [Track properties](insp-trk.md)
* [Activation track properties](insp-trk-act.md)
* [Animation track properties](insp-trk-anim.md)
* [Audio track properties](insp-trk-audio.md)
* [Clip properties](insp-clip.md)
* [Activation clip properties](insp-clip-act.md)
* [Animation clip properties](insp-clip-anim.md)
* [Audio clip properties](insp-clip-audio.md)
* [Control clip properties](insp-clip-control.md)
* [Timeline Preferences](tl-preferences.md)
* [Playable Director Component](playable-director.md)
* [Timeline Glossary](tl-glossary.md)

View File

@@ -0,0 +1,21 @@
# Add clips
The Timeline window supports different methods of adding clips to tracks, depending on the type of track, where you click, where you drag, and whether a clip or track is already selected.
The quickest method to add a clip is to right-click on an empty area within a track and choose the appropriate Add option from the context menu. Depending on the track, the options for adding a clip change.
![](images/tl-context-adding-act-clip.png)
_Context menu for adding an Activation clip._
There are other ways to add clips:
* Select a clip option from the More (⋮) menu in the Track Header to add a clip at the location of the Timeline Playhead.
* Drag an animation source asset from the Project window to an empty area in the Timeline window to automatically create an Animation track and add an Animation clip.
* Drag an animation source asset from the Project window to an existing track in the Timeline window to add an Animation clip to the same track.
* Drag an audio source asset from the Project window to an empty area in the Timeline window to automatically create an Audio track and add an Audio clip.
* Drag a GameObject with a PlayableDirector component to create a Sub-Timeline instance. This automatically creates a Control track and adds a Control clip for the Sub-Timeline instance.
* Drag a Prefab from the Project window to an empty area in the Timeline window to add a Prefab instance to your Timeline instance. This automatically creates a Control track and adds a Control clip for the Prefab instance.
* Drag a GameObject with a Particle component to add a particle effect to your Timeline instance. This automatically creates a Control track and adds a Control clip for the duration of the Particle effect.
When you add a clip, the [selected Edit mode](clip-overview.md) determines how the added clip interacts with surrounding and intersecting clips. For example, if you add an Animation clip at the location of the Timeline Playhead, the added clip could blend, ripple, or replace clips on the same track.

View File

@@ -0,0 +1,35 @@
# Blend clips
Blend two clips on the same track to create a smooth transition between two Animation clips, two Audio clips, or two Playable clips. To blend two clips, select the Mix Edit mode and position or trim one clip until it overlaps an adjacent clip.
![](images/tl-clip-blend-area.png)
**(A)** The Mix Edit mode.<br/>
**(B)** The blend area displays the transition between the outgoing clip and incoming clip.<br/>
In a blend, the first clip is referred to as the **outgoing clip** and the second clip is referred to as the **incoming clip**. The area where the outgoing clip transitions to the incoming clip is referred to as the **blend area**. The blend area sets the duration of the transition.
Although the Content view represents a blend area as a single linear curve, the transition between clips is actually comprised of two blend curves. The blend curve for the outgoing clip is referred to as the **Blend Out** curve. The blend curve for the incoming clip is referred to as the **Blend In** curve. By default, each blend curve is automatically set to an ease-in and ease-out curve.
In the Inspector window, the label for the **Ease In Duration** or **Ease Out Duration** property changes to **Blend In Duration** or **Blend Out Duration** if either affects a blend. The blend duration properties cannot be edited when labelled **Blend In Duration** or **Blend Out Duration** because the duration of the blend area is only editable in the Content view.
![](images/insp-blend-curves.png)
**(A)** The **Ease Out Duration** property changes to **Blend Out Duration** because there is a blend between this clip and the next clip.<br/>
**(B)** Use Blend Curves to customize the transition between clips.<br/>
Use the **Blend Curves** in the Inspector window to change the shape for either the Blend In curve, labelled **In**, or Blend Out curve, labelled **Out**. The Inspector window only lets you edit the properties of one clip at a time. You cannot simultaneously customize both blend curves used in the same blend area.
To customize either the Blend Out curve or Blend In curve, use the drop-down menu to switch from **Auto** to **Manual**. With **Manual** selected, the Inspector window displays a preview of the blend curve. Click the Curve Preview to open the Curve Editor in the Inspector window.
![](images/insp-blend-curve-editor.png)
**(A)** Curve Preview.<br/>
**(B)** Click the Curve Editor header to expand or minimize the Curve Editor.<br/>
**(C)** Use the Curve Editor menu to minimize, maximize, or open the Curve Editor in its own Preview window.<br/>
Use the Curve Editor to customize the shape of the blend curve. By default, the blend curve includes a keyframe at the beginning of the curve and a keyframe at the end of the curve. The Curve Editor provides the following different methods of modifying the blend curve:
* Select a shape template from the bottom of the Curve Editor. The available shape templates differ depending on whether you are modifying the Blend In curve or the Blend Out curve.
* Double-click a location on the blend curve to add a new keyframe.
* Select a keyframe and use its tangent handles to adjust the interpolation between keyframes.

View File

@@ -0,0 +1,23 @@
# Duplicate clips
There are many ways to duplicate clips in the Content view:
* Select a clip or multiple clips. Right-click in the Content view and choose **Duplicate** from the context menu.
* Select a clip or multiple clips. Hold Control (MacOS: Command) and press D.
* Right-click an unselected clip and choose **Duplicate** from the context menu.
Duplicating clips copies each selected clip and places the duplicates after the last clip on the same track. If you duplicate clips used in a blend or clips separated by a gap, the blend or gap is also duplicated.
If you duplicate an Animation clip that uses a recorded clip as its source asset, the recorded clip is also duplicated. This duplicate only appears in your Project window after you save the Scene or Project. For example, the following images demonstrates what happens if you duplicate an Animation clip named `Clip 2B` that uses the recorded clip named `Recorded (3)`.
![](images/tl-dup-clip-before.png)
_Select the `Clip 2B`, hold Control (MacOS: Command) and press D to duplicate_
![](images/tl-dup-clip-after.png)
_A duplicate Animation clip is placed at the end of the same track. The recorded clip associated with `Clip 2B` is also duplicated._
![](images/prog-dup-recorded-clip.png)
_The new `Recorded (6)` recorded clip appears in the Project window after you save the Scene or Project_

View File

@@ -0,0 +1,39 @@
# Ease-in and ease-out clips
Ease-in and ease-out a clip to create a smooth transition between a clip and its surrounding gaps. To create an ease-in or ease-out transition, select a clip and, in the Inspector window, set either the **Ease In Duration** or the **Ease Out Duration**.
![](images/insp-ease-in-out.png)
_Use Ease In Duration and Ease Out Duration to smoothly transition into and out of the selected clip._
Ease-in and ease-out transitions create different effects, depending on the track:
* On an Animation track or an Animation Override track, ease-in to an Animation clip to create a smooth transition between the animation in the gap before the clip and the Animation clip. Ease-out of an Animation clip to create a smooth transition between the Animation clip and the animation in the gap after the clip. To understand which animation occurs in the gap before or after an Animation clip, consult [Setting gap extrapolation](clip-gap-extrap.md).
* On an Audio track, ease-in to an Audio clip to fade in the volume of the audio waveform. Ease-out of an Audio clip to fade out the volume of the audio waveform specified by the Audio clip.
* On a Playable track, ease-in to a Playable clip to fade in its custom asset. Ease-out of a Playable clip to fade out its custom asset.
![](images/tl-clip-ease-in-out.png)
_Ease-in and ease-out an Animation clip to transition between its animation and its gaps_
Although the Content view represents each ease-in or ease-out transition as a linear curve, every transition is actually set to a gradual ease-in or ease-out curve by default. To change the shape of either the ease-in curve (labelled **In**) or the ease-out curve (labelled **Out**), use the **Blend Curves** in the Inspector window.
![](images/insp-ease-blend-curves.png)
_Use the Blend Curves to customize ease-in or ease-out transitions_
To customize either the ease-in or ease-out transition, use the drop-down menu to switch from **Auto** to **Manual**. With **Manual** selected, the Inspector window displays a preview of the blend curve. Click the curve preview to open the Curve Editor below the Inspector window.
![](images/insp-curve-editor.png)
_Select Manual and click the preview to open the Curve Editor_
The Curve Editor is the same editor that is used to customize the shape of the blend curves when [blending between clips](clip-blend.md).
Note that the **Blend Curves** could affect the blend area used for blending between two clips. The label for the **Ease In Duration** or **Ease Out Duration** properties changes to **Blend In Duration** or **Blend Out Duration** if either effects a blend. In addition, the blend duration properties cannot be edited when they are labelled **Blend In Duration** or **Blend Out Duration** because the duration of the blend area is only editable in the Clips area.
When creating an ease-in or an ease-out transition with Animation clips, the Animation clip blends between its gaps and the Animation clip. The following factors affect the values of animated properties in the gaps surrounding an Animation clip:
* The [pre-extrapolate and post-extrapolate settings](clip-gap-extrap.md) for the Animation clip and for other Animation clips on the same track.
* Animation clips on other Animation tracks that are bound to the same GameObject.
* The position or animation of the GameObject in the Scene, outside the Timeline asset.

View File

@@ -0,0 +1,53 @@
# Set gap extrapolation
Gap extrapolation refers to how an Animation track approximates animation data in the gaps before and after an Animation clip.
The main purpose for extrapolating animation data in the gaps between Animation clips is to avoid animation anomalies. Depending on the GameObject bound to the Animation track, these anomalies could be a GameObject jumping between two transformations, or a humanoid jumping between different poses.
Each Animation clip has two gap extrapolation properties:
* **Pre-Extrapolate**, which controls how animation data is approximated in the gap before an Animation clip.
* **Post-Extrapolate**, which controls how animation data extends in the gap after an Animation clip.
By default, Timeline sets both extrapolation properties to **Hold**. This sets the gap before the Animation clip to the animation on the first frame, and the gap after the Animation clip to the animation on the last frame. Each gap holds the animation at a certain frame. Icons before and after an Animation clip indicate the selected extrapolation modes.
![](images/tl-extrap-pre-post-hold.png)
_Icons indicate the pre-extrapolate and post-extrapolate modes_
When an Animation track contains a gap between two Animation clips, the **Post-Extrapolate** property of the left clip sets the gap extrapolation by default. If the **Post-Extrapolate** property of the clip to the left of a gap is set to **None**, the **Pre-Extrapolate** property of the right clip sets the gap extrapolation. Icons before and after Animation clips indicate whether the extrapolation for a gap is taken from the **Post-Extrapolate** property of the clip to the left or from the **Pre-Extrapolate** property of the clip to the right.
![](images/tl-extrap-two-tracks.png)
**(A)** The gap extrapolation is taken from the the Post-Extrapolate property of the left clip.<br/>
**(B)** The gap extrapolation is taken from the Pre-Extrapolate property of the right clip.
To change the Pre-Extrapolate and Post-Extrapolate properties, select the Animation clip and use the Animation Extrapolation properties in the Inspector window.
![](images/insp-pre-post-extrap.png)
_Use Pre-Extrapolate and Post-Extrapolate to set the extrapolation modes for the selected Animation clip_
The Pre-Extrapolate property is hidden when one of the following is true:
* The gap before the Animation clip is set by the Post-Extrapolation mode of the previous clip.
* There is no gap before the Animation clip.
Use the Pre-Extrapolation property to set the gap extrapolation of the gap before the selected Animation clip. The following table describes each pre-extrapolation mode.
|**Icon/Name** |**Description** |
|:---|:---|
|**None**<br/>(no icon)|Turns off pre-extrapolation. In the gap before the selected Animation clip, the GameObject uses its transform, pose, or state from the Scene. Select **None** if, for example, you want to create an ease-in between the motion of a GameObject in the Scene and an Animation clip. Consult [Easing-in and Easing-out Clips](clip-ease.md).|
|![](images/icon-gap-hold.png)<br/>**Hold**<br/>(default)|In the gap before the selected Animation clip, the GameObject bound to the Animation track uses the values assigned at the start of the Animation clip.|
|![](images/icon-gap-loop.png)<br/>**Loop**|Turns off pre-extrapolation. In the gap before the selected Animation clip, the GameObject uses its transform, pose, or state from the Scene. Select **None** if, for example, you want to create an ease-in between the motion of a GameObject in the Scene and an Animation clip. Consult [Easing-in and Easing-out Clips](clip-ease.md) for details.|
|![](images/icon-gap-pingpong.png)<br/>**Ping Pong**|In the gap before the selected Animation clip, the GameObject bound to the Animation track repeats the entire animation forwards, then backwards. Use the **Clip In** property to offset the start of the loop. Changing the **Clip In** property affects the start of the loop when looping forward, and the end of the loop when looping backwards.|
|![](images/icon-gap-continue.png)<br/>**Continue**|In the gap before the selected Animation clip, the GameObject bound to the Animation track either holds or loops the animation based on the settings of its source asset. For example, if the selected Animation clip uses the motion file `Recorded(2)` as its source asset and `Recorded(2)` is set to **Loop**, then selecting **Continue** loops the animation according to the `Recorded(2)` Loop Time settings.|
Use the Post-Extrapolate property to set the gap extrapolation of the gap after the selected Animation clip. The following table describes each post-extrapolation mode.
|**Icon/Name** |**Description** |
|:---|:---|
|**None**<br/>(no icon)|Turns off post-extrapolation. In the gap after the selected Animation clip, the GameObject uses its transform, pose, or state from the Scene. Selecting **None** is useful if, for example, you want to create an ease-out between an Animation clip and the motion of a GameObject in the Scene. Consult [Easing-in and Easing-out Clips](clip-ease.md) for details.|
|![](images/icon-gap-hold.png)<br/>**Hold**<br/>(default)|In the gap after the selected Animation clip, the GameObject bound to the Animation track uses the values assigned at the end of the Animation clip.|
|![](images/icon-gap-loop.png)<br/>**Loop**|In the gap after the selected Animation clip, the GameObject bound to the Animation track repeats the entire animation as a forward loop: from start to end. To offset the start of the loop, use the **Clip In** property..|
|![](images/icon-gap-pingpong.png)<br/>**Ping Pong**|In the gap after the selected Animation clip, the GameObject bound to the Animation track repeats the entire animation forwards, then backwards. Use the **Clip In** property to offset the start of the loop. Changing the **Clip In** property affects the start of the loop when looping forward, and the end of the loop when looping backwards.|
|![](images/icon-gap-continue.png)<br/>**Continue**|In the gap after the selected Animation clip, the GameObject bound to the Animation track either holds or loops the animation based on the settings of its source asset. For example, if the selected Animation clip uses the motion file `Recorded(2)` as its source asset and `Recorded(2)` is set to **Loop**, then selecting **Continue** loops the animation according to the `Recorded(2)` Loop Time settings.|

View File

@@ -0,0 +1,24 @@
# Insert clips
The Timeline window supports different methods of inserting clips depending on the type of track, where you click, and whether a clip or track is already selected. In the Timeline window, inserting clips refers to adding and making space for a clip without blending or replacing intersecting clips.
To accurately insert a clip, select Ripple mode as the Edit mode, and position the Timeline Playhead to set the insertion point. Select **Add From Animation Clip** from the More (⋮) menu for the track where you want to insert the clip.
![](images/spec-tl-insert-clip-before.png)
_Accurately insert a clip with the Ripple mode (A), the Timeline Playhead (B), and Add From Animation Clip in the More (⋮) menu (C)_
In the above example, the Timeline Playhead is the insertion point. You can specify the insertion point using these other methods:
* Right-click within a gap and add a clip with the context menu. The insertion point is where you right-click.
* Drag a source asset (animation or audio) to a track in the Content view. The insertion point is where you release dragging.
The location of the insertion point determines where the clip is inserted and how it affects the other clips and gaps on the same track:
* If the insertion point intersects a clip, the inserted clip is added at the insertion point. The intersected clip, and all subsequent clips and gaps, are rippled after the inserted clip.
* If the insertion point is within a gap and there is enough space between the insertion point and the next clip, then the inserted clip is added to the gap. The other clips on the track are not affected.
* If the insertion point is within a gap and the inserted clip overlaps the next clip, the inserted clips is added at the insertion point. The next clip, and all subsequent clips and gaps, are rippled to accommodate the inserted clip.
![](images/tl-insert-clip-after.png)
_For example, inserting a clip at the Timeline Playhead, in the gap between Clip 1A and Clip 1B, ripples Clip 1B to accommodate the 72 frame Walk clip_

View File

@@ -0,0 +1,46 @@
# Match clip offsets
Every Animation clip contains keyframe animation, or motion, that animates a GameObject, or character, bound to the Animation track.
When you add an Animation clip to an Animation track, its animation or motion does not automatically begin where the previous clip ends. By default, each Animation clip begins at the position and rotation of the GameObject, or character, at the start of the Timeline instance.
For example, three Animation clips create an animation sequence where a character walks (`Walk`), turns around and stops (`TurnLeft`), then walks to a jog (`Wk-Jog`).
![](images/tl-match-clips-before.png)
_An animation sequence of three Animation clips: `Walk`, `TurnLeft`, `Wk-Jog`._
When first added, each Animation clip starts at the position and rotation of the character at the start of the Timeline instance. The following illustration shows the end of each Animation clip.
![](images/scene-prematch-clips.png)
**(A)** The start of the Timeline instance.</br>
**(B)** The end of the `Walk` Animation clip.</br>
**(C)** The end of the `TurnLeft` Animation clip.</br>
**(D)** The end of the `Wk-Jog` Animation clip.</br>
For an animation sequence to flow seamlessly, the start position and rotation of each Animation clip must match the end position and rotation of the previous Animation clip.
These position and rotation offsets are named **Clip Transform Offsets** and they [can be set manually in the Inspector window](insp-clip-anim.md) or automatically. The following sections describe how to automatically set clip offsets by matching two or more Animation clips.
## Match two clips
To match the clip offsets between two clips, right-click the Animation clip that you want to match. From the context menu, select either **Match Offsets to Previous Clip** or **Match Offsets to Next Clip**.
![](images/spec-tl-match-next.png)
_Matching an Animation clip with the next clip_
For example, right-click the middle Animation clip, named `TurnLeft`, and choose **Match Offsets To Next Clip** to match its offsets to the next clip. This selects the clip, then matches the end of the middle clip with the start of next clip.
The context menu only displays the match options available for the selected Animation clip. For example, if the first clip, `Walk` is selected, only the **Match Offsets to Next Clip** menu item is available.
## Match many clips
To match the clip offsets of many clips, select the adjacent Animation clips that you want to match and right-click one of the selected clips. From the context menu, select either **Match Offsets to Previous Clip** or **Match Offsets to Next Clip**.
![](images/spec-tl-match-many.png)
_Matching many clips with previous clips_
For example, select the `TurnLeft` and `Wk-Jog` clips. Right-click one of the selected clips and choose **Match Offsets to Previous Clip**. This matches the `TurnLeft` clip with the previous `Walk` clip and matches the `Wk-Jog` clip with the previous `RunLeft` clip.

View File

@@ -0,0 +1,108 @@
# Content view and Edit modes
Use the Content view to add, position, and manage the clips and markers on each track in the Timeline asset or Timeline instance. The selected Edit mode determines how clips and markers interact with each other when you add, position, trim, resize, or delete them.
![](images/tl-edit-mode-clips-view.png)
**(A)** Edit modes<br/>
**(B)** Content view<br/>
## Clips and the Content view
In the Content view, each clip has a colored accent line that identifies the type of clip:
* Activation clips are green.
* Animation clips are blue.
* Audio clips are orange.
* Control clips are turquoise.
* Playable clips are white.
A clip with a source asset, such as an Animation clip or an Audio clip, displays arrows that indicate when the clip excludes part of its source animation, audio waveform, or other source content.
For example, if an Animation clip uses only part of its full animation, white arrows indicate that keyframes exists before the start or after the end of the clip.
![](images/tl-clip-arrows.png)
_Small arrows (red) indicate that data exists before the start or after the end of the area defined by the clip_
There are many ways to resize a clip and view its hidden source data:
* Drag the start or end of the clip to [trim its start or end](clip-trim.md).
* Select the clip and modify its clip timing properties in the Inspector window.
* Right-click the clip and choose **Match Content** from the context menu.
When you resize a clip, the selected Edit mode determines how the surrounding clips are affected.
## Clips and Edit modes
Select an Edit mode to choose how clips are added, positioned, and trimmed in the Content view. The Edit mode is also used when you modify clip timing properties in the Inspector window. There are three Edit modes that affect most clip editing features.
![](images/anno-clip-modes-all.png)
_Edit modes are [Mix mode](#mixmode) (default and selected), [Ripple mode](#ripplemode), and [Replace mode](#replacemode)_
You can temporarily switch between Edit modes. This is useful if, for example, you want to temporarily use Ripple mode to offset the content of a track while you position clips. To temporarily switch between Edit modes, hold down the following keyboard keys:
* Hold down 1 to temporarily switch to Mix mode.
* Hold down 2 to temporarily switch to Ripple mode.
* Hold down 3 to temporarily switch to Replace mode.
<a name="mixmode"></a>
### Mix mode
Use Mix mode to add, position, and trim clips without moving or replacing adjacent clips. Mix mode creates blends between intersecting clips. Mix mode is the default Edit mode.
![](images/anno-clip-modes-mix.png)
_Timeline window with Mix mode as the selected Edit mode._
In Mix mode, when you hover over a clip in the Content view, the cursor changes to indicate the action that you can perform. The action depends on the part of the clip that you hover over:
* When you hover over the start of a clip, the cursor changes to a trim cursor. The trim cursor indicates the area to drag to trim the start of the clip.
* When you hover over the middle of a clip, the cursor changes to a position cursor. The position cursor indicates the area to drag to position the clip.
* When you hover over the end of a selected clip, the cursor changes to a trim cursor. The trim cursor indicates the area to drag to trim the end of the clip.
In Mix mode, if you drag to trim or position a clip and it intersects another clip, the cursor changes to a white arrow that points towards the blend being created. There are three possible cursors depending on whether the blend is created at the beginning of the clip, at the end of the clip, or at both the beginning and end of the clip. The clip and the blend are also outlined in white.
![](images/tl-drag-create-blend.png)
_For example, the white arrow cursor and white outline indicates that dragging Clip `2A` to the right creates a blend, at the end of the clip, between Clip `2A` and Clip `2B`._
<a name="ripplemode"></a>
### Ripple mode
Use Ripple mode to add, position, and trim a clip while affecting the subsequent clips on the same track. Positioning or trimming clips in Ripple mode preserves the gaps between subsequent clips.
![](images/anno-clip-modes-ripple.png)
_Timeline window with Ripple mode as the selected Edit mode._
In Ripple mode, when you hover over a clip in the Content view, the cursor changes to indicate the action that you can perform. The actions and areas are similar to Mix mode:
* When you hover over the start of a clip, the cursor changes to a trim cursor. The trim cursor indicates the area to drag to trim the clip relative to its start.
* When you hover over the middle of a clip, the cursor changes to a position cursor. The position cursor indicates the area to drag to position the clip.
* When you hover over the end of a clip, the cursor changes to a trim cursor. The trim cursor indicates the area to drag to trim the clip relative to its end.
In Ripple mode, when you drag to trim or position a clip, the cursor switches to a yellow arrow that points towards the affected clips and gaps. A yellow line indicates the ripple point. When you drag to trim a clip, dragging left and right changes the duration of the selected clip and repositions subsequent clips and gaps after the ripple point.
![](images/tl-drag-start-ripple.png)
_For example, the yellow arrow cursor indicates that dragging Clip `2A` affects the clips and gaps to the right, after the ripple point._
<a name="replacemode"></a>
### Replace mode
Use Replace mode to add, position, and trim a clip while cutting or replacing intersecting clips.
![](images/anno-clip-modes-replace.png)
_Timeline window with Replace mode as the selected Edit mode._
In Replace mode, when you hover over a clip in the Content view, the cursor changes to indicate the action that you can perform. The actions and areas are similar to Mix mode:
* When you hover over the start of a selected clip, the cursor changes to a trim cursor. The trim cursor indicates the area to drag to trim the clip relative to its start.
* When you hover over the middle of a clip, the cursor changes to a position cursor. The position cursor indicates the area to drag to position the clip.
* When you hover over the end of a clip, the cursor changes to a trim cursor. The trim cursor indicates the area to drag to trim the clip relative to its end.
In Replace mode, when you drag to position a clip, the clip becomes transparent so that you can view overlapping clips. If the clip being positioned overlaps other clips, releasing the clip cuts the underlying clip at each overlap.
In Replace mode, when you drag to trim a clip and it intersects another clip, the cursor changes to a red arrow and a red replacement line indicates where clips overlap. Releasing the trim cuts the overlapping clip at the red replacement line.

View File

@@ -0,0 +1,26 @@
# Pan and zoom the Content view
Use either the keyboard or the zoombar to pan and zoom the Content view. There are many ways to pan, zoom, or frame clips and markers in the Content view:
* To pan, either middle-click and drag, or hold Alt (MacOS: Option) and drag.
* To frame selected clips and markers, [select clips](clip-select.md) then press F.
* To frame all clips and markers, press A. Or, press F with no clips or markers selected.
* To zoom horizontally, move the scroll-wheel. Or, press = to zoom-in and - to zoom-out.
* To zoom vertically, hold Control (MacOS: Command) and move the scroll-wheel.
When you horizontally zoom the Content view, the zoombar indicates the level of zoom. The zoombar is the horizontal bar at the bottom of the Content view that zooms and pans the section of the Timeline instance or Timeline asset displayed in the Content view.
![](images/anno-zoombar.png)
_The Timeline zoombar_
**(A)** Left zoombar handle<br/>
**(B)** The zoombar thumb is the area between the two zoombar handles<br/>
**(C)** Right zoombar handle<br/>
**(D)** The white line indicates the location of the Timeline Playhead. Use this line to view the location of the Timeline Playhead relative to the zoom level and the part of the Timeline instance displayed in the Content view. The Timeline Playhead, and the white line, only appears for Timeline instances.<br/>
There are many ways to pan and zoom with the Timeline zoombar:
* To pan, drag the zoombar thumb left or right.
* To jump to a section of the Timeline instance or Timeline asset, click an empty area of the scrollbar, on either side of the zoombar.
* To zoom-in or zoom-out, drag either zoombar handle. Dragging a zoombar handle also resizes the zoombar thumb.

View File

@@ -0,0 +1,59 @@
# Position clips
To position a clip, select Mix mode as the Edit mode. Select a clip and hover over it. When the cursor is a standard arrow cursor, click and drag the clip to its new position.
While dragging, black lines indicate the selection of clips being positioned. The Timeline ruler displays the start time and end time of the selected clips being positioned.
![](images/tl-clip-mix-positioning.png)
_Select Mix mode (A). Select and drag to position a clip (B)._
By default, when you drag to position clips, both Snap to Frame and Edge Snap are enabled in the Content view. You can change these snap settings in the [Timeline Options](tl-options.md) menu.
You can also move a clip to another track of the same type. Drag the clip off of its current track and a white ghost indicates where the clip will be moved. If you drag a clip to an area where the clip cannot be placed, the ghost changes to red indicating that you cannot release the clip in that area. For example, you cannot drag a clip where there is no track.
![](images/tl-clip-position-invalid.png)
_The ghost of the selection being moved is drawn in red if you attempt to move a clip to an invalid area_
You can position a selection of clips on the same track, or on different tracks. You are not limited to positioning one clip at a time. The same edge snapping rules and invalid area restrictions apply when positioning a selection of clips on many tracks.
## Position clips with the Inspector window
Use the [Inspector window to accurately position clips](insp-clip.md). To position a clip with the Inspector window, select a clip and use the Clip Timing properties to change its **Start** property.
![](images/insp-clip-anim-timing.png)
_Clip Timing properties for an Animation clip_
The impact that changing the Start value has on adjacent clips depends on the selected Edit mode.
## Position clips in different Edit modes
You are not restricted to positioning clips with Mix mode as the selected Edit mode. You can also position clips in Ripple mode and in Replace mode. The difference is the impact each Edit mode has on adjacent clips on the tracks where clips are being moved:
* Position clips in Mix mode to create blends between intersecting clips.
* Position clips in Ripple mode to ripple subsequent clips, respecting the gaps between clips.
* Position clips in Replace mode to cut or replace intersecting clips.
## Position clips with the Timeline Playhead
You can position clips by inserting frames at the position of the Timeline Playhead. To do this, follow these steps:
1. move the Timeline Playhead to where you want to insert frames.
![](images/tl-playhead-insert-before.png)
_For example, to insert frames starting at frame 40, move the Timeline Playhead to frame 40_
2. Right-click the Timeline Playhead on the Timeline ruler above the Content view, select **Insert** &gt; **Frame**, and a number of frames.
![](images/tl-playhead-insert-menu.png)
_To insert 25 frames, right-click the Timeline Playhead and choose **Insert** &gt; **Frame** &gt; **25 Frames**_
This inserts frames in the Timeline instance at the position of the Timeline Playhead. Inserting frames only repositions the clips that start after the position of the Timeline Playhead.
![](images/tl-playhead-insert-25-after.png)
_In this example, inserting 25 frames at frame 40 affects Clip `1B`, Clip `2B`, and Clip `2C`._

View File

@@ -0,0 +1,18 @@
# Reset clips
You can reset the duration and speed of a clip. Resetting a clip does not reset the following properties:
* Start
* Ease In Duration and Ease Out Duration
* Animation Extrapolation settings
* Blend Curves
To reset a clip, right-click the clip and choose **Editing** from the context menu. Then, select **Reset Duration**, **Reset Speed**, or **Reset All**. Depending on the reset option you select, resetting a clip does the following:
|**Option:** |**Description:** |
|:---|:---|
|**Reset Duration**|Resets the Duration and the Clip In.|
|**Reset Speed**|Resets the Speed Multiplier.|
|**Reset All**|Resets the Duration, Clip In, and Speed Multiplier.|
If resetting a clip results in two clips overlapping each other, Timeline creates a blend for the overlap, regardless of the selected Edit mode.

View File

@@ -0,0 +1,53 @@
# Select clips
The Timeline window supports many different methods of selecting clips depending on where you click, where you drag, and whether a clip or track is already selected.
The easiest method is to click a clip to select it. The Content view displays the selected clip with a white border, including its blends. Selecting a clip deselects all other tracks or clips.
Selecting a clip also displays its properties in the Inspector window. The clip properties change depending on the type of clip and whether multiple clips are selected. Consult [Setting Clip properties](insp-clip.md) for details.
## Select many clips
Hold Shift and click to select contiguous clips vertically on different tracks or horizontally on the same track. For example, to select three contiguous clips on the same track, select the first clip, then hold Shift and click the third clip. All three clips are selected.
![](images/tl-clip-select-first.png)
_Click to select the first clip, `2A`_
![](images/tl-clip-select-last.png)
_Shift-click the third clip, `2C`, to select contiguous clips (`2A`, `2B`, and `2C`) on the same track_
Hold Control (MacOS: Command) and click to select discontiguous clips. Hold Control (MacOS: Command) and click a selected clip to deselect it.
## Select clips with a selection rectangle
Click and drag on an empty area in the Content view to draw a selection rectangle. This selects all clips inside or that intersect the rectangle. Hold Shift and draw a selection rectangle to add clips to the current selection.
## Select clips with the Tab key
You can also press the Tab key to select clips. The behavior of the Tab key changes depending on the current selection:
* If a track is selected, press Tab to select the first clip on the selected track.
* If many discontiguous tracks are selected, press Tab to select the first clip on the last selected track.
* If a clip is selected, press Tab to [select its track](trk-select.md).
* If there are no clips or tracks selected, press Tab to select the first clip on the first track.
## Select clips with arrow keys
Use the arrow keys to change the selected clips. The behavior and results depend on the current selection and which modifier keys you press:
* If nothing is selected in the Timeline window, press the Tab, Up arrow, or Down arrow key to select the first clip on the first track.
* If a clip is selected, press the Left arrow key to select the previous clip. If the selected clip is the first clip on the track, the Left arrow key selects the track.
* If a clip is selected, press the Right arrow key to select the next clip. Press the Up arrow key to select the closest clip on the previous track. Press the Down arrow key to select the closest clip on the next track.
* Hold Shift and press either the Left arrow key or Right arrow key to add or remove clips from the selection of clips. Whether a clip is added to or removed from the selection of clips is relative to the first selected clip. This selection method only selects or unselects clips on the same track.
When using arrow keys to change selected clips, the Content view pans to display the most recently selected clip if it outside the Content view. For example, if the selected clip is framed in the Content view and you press the Right arrow key to select the next clip that is outside the Content view, the Content view pans to display the start of the selected clip.
## Select clips with the Timeline Playhead
You can also select clips with the Timeline Playhead. Right-click the Timeline Playhead and choose a selection option. This selects clips that either start after, start before, end after, end before, or intersect the Timeline Playhead. Clips are selected on all tracks.
![](images/tl-playhead-select-menu.png)
_Right-click the Timeline Playhead and choose **Select** for more clip selection options_

View File

@@ -0,0 +1,30 @@
# Change clip play speed
Change the clip play speed to accelerate or decelerate its audio, animation, or particle effect. Changing the clip play speed affects the duration of the clip. You can only change the play speed for Animation clips, Audio clips, and Control clips.
To change the clip play speed, first, select the Edit mode to determine how other clips on the same track are affected:
* If the change in duration results in two clips that overlap each other:
* Select Mix mode to create a blend.
* Select Replace mode to cut or remove intersecting clips.
* Select Ripple mode to reposition the clips that start after the clip being sped up or slowed down. Ripple mode also preserves the gaps between clips.
Select the clip and set the **Speed Multiplier** property in the Inspector window. The **Speed Multiplier** property displays the play speed as a multiplier of the original clip speed.
![](images/insp-speed-multipler.png)
_Speed Multiplier in the Inspector window_
When the **Speed Multiplier** is set to 1, the clip plays at its original speed. To double the play speed, change the **Speed Multiplier** to 2. This changes the duration of the clip. For example, doubling the play speed of a 180 frame Animation clip changes its duration to 90 frames.
![](images/tl-victory-double-speed.png)
_A short-dashed line and multiplication factor of 2.00x indicates a clip playing at double its original speed_
There are other ways to change the play speed of a clip:
* Right-click the clip and choose **Editing** &gt; **Double Speed** to halve the clip duration. The clip plays at twice its current speed. A short-dashed line and a multiplication factor indicates an accelerated clip. Doubling the clip speed sets the **Speed Multiplier** property to double its current value.
* Right-click the clip and choose **Editing** &gt; **Half Speed** to double the clip duration. The clip plays at half its current speed. A long-dashed line and multiplication factor indicates a decelerated clip. Halving the clip speed sets the **Speed Multiplier** property to half its current value.
* Right-click the clip and choose **Editing** &gt; **Reset Speed** to reset the clip to its original speed. This is the original duration of the clip. Resetting the clip speed sets the **Speed Multiplier** property to 1.
**Note:** The clip play speed only recognizes positive values 0.001 and greater. You cannot set the clip play speed to a negative value. This does not, for example, play an Animation clip in reverse.

View File

@@ -0,0 +1,22 @@
# Split clips
You can split a clip into two identical clips that have different start points, end points, and durations.
To split a clip:
1. Select the clip.
1. Position the playhead where you want to split the clip.
1. Either right-click the clip and choose **Editing** &gt; **Split**, or press S.
Selected clips that intersect the playhead are split into separate clips. You can position, trim, and edit split clips independently.
![](images/tl-split-before.png)
_Select the clips to be split, position the playhead where you want the split to occur, and press S_
![](images/tl-split-after.png)
_Selected clips are split where each clip intersects the playhead_
If a split clip is part of a blend, or if the split is performed within a blend, Timeline copies the blend settings to the split clips.
If you split an Animation clip that uses a recorded clip as its source asset, the recorded clip is also copied. This copied recorded clip only appears in your Project window after you save the Scene or Project.

View File

@@ -0,0 +1,15 @@
# Tile clips
Tile clips to remove gaps and blends between clips on the same track. Tiling clips is useful if you want each clip to begin exactly where the previous clip ends. If you select multiple clips on multiple tracks, you must select at least two clips on the same track for tiling to have an affect.
To tile clips, select at least two clips on the same track.
![](images/tl-tile-clip-selection.png)
_Three clips with gaps and blends are selected_
Right-click on one of the selected clips and choose Tile from the context menu. Timeline positions the selected clips based on the position of the first selected clip. The first selected clip does not move, and the duration of each clip remains the same.
![](images/tl-tile-clip-result.png)
_Tiling removes gaps and blends between the selected clips_

View File

@@ -0,0 +1,79 @@
# Trim clips
Trimming a clip cuts off a portion of the clip at its start or end. To trim a clip, select the Mix Edit mode, hover over the start or end of the clip until the trim cursor appears, then drag the trim cursor to modify the start or end of the clip.
If you trim an Animation clip, an Audio clip, or a Control clip, this selects the portion of the source asset that the clip uses.
For example, trim the start of an Animation clip to modify its start and offset. This selects the section of the source asset to use. Trim the end of an Animation clip to modify its duration. If an Animation clip's source asset is keyframe animation, use the Curves view to display the unused section of the source asset.
![](images/tl-clip-trim-start.png)
**(A)** Curves view.<br/>
**(B)** If the area defined by an Animation clip, Audio clip, or Control clip only uses part of its source asset, the clip displays a white arrow to indicate that unused content exists before the start or after the end of the clip.<br/>
**(C)** The trimmed keyframe animation displays outside of the Animation clip.<br/>
Trimming a clip is non-destructive. Trim the clip again to modify its start or end to include the animation, audio waveform, or other source content cut during a previous trim. You can also [reset a clip](clip-reset.md) to undo trims and other edits.
## Trim with the Inspector window
You can select a clip to display its [Clip properties](insp-clip.md) in the Inspector window. Use the **Start**, **End**, **Duration**, and **Clip In** (offset) properties to modify a clip to exact values.
![](images/insp-clip-timing.png)
_Position and trim a clip by adjusting its Start, End, Duration, and Clip In properties in the Inspector window_
## Trim with the Timeline Playhead
You can trim a clip based on the location of the Timeline Playhead. To trim using the playhead, do the following:
1. Position the playhead within the clip to be trimmed.
2. Right-click the clip and choose either **Editing** &gt; **Trim Start** or **Editing** &gt; **Trim End**.
**Trim Start** trims the start of the clip to the playhead. **Trim End** trims the end of the clip to the playhead.
![](images/tl-playhead-trim-before.png)
_For example, move the Timeline Playhead within the clip_
![](images/tl-playhead-trim-after.png)
_Right-click the clip and choose **Editing** &gt; **Trim Start** to trim the start of the clip to the playhead_
If you select clips on multiple tracks, Timeline only trims the selected clips that intersect the playhead.
<a name="trimloop"></a>
## Trim to hold or loop clips
If you trim the end of an Animation clip, Audio clip, or Control clip past the end of its source asset, the extra clip area either holds or loops its content.
When the extra clip area loops, the entire source asset loops. Each full loop is labelled sequentially as L1, L2, L3, and so on. If the source asset is recorded keyframe animation, you can also view the looping animation curves in the Curves view.
For example, an Animation clip named `EndRotation` is set to loop. Trimming the end of the `EndRotation` clip past the end of the `Recorded(2)` source asset loops its content.
![](images/tl-clip-trim-loop.png)
_The `EndRotation` clip loops once, indicated by L1. Its animation curve loops and is drawn in white._
Whether the extra clip area holds or loops depends on the **Loop** property in the [Animation Clip Properties](insp-clip-anim.md) or the [Audio Clip Properties](insp-clip-audio.md).
For [Control clips](insp-clip-control.md), the properties that determine whether the extra clip area holds or loops depends on whether the clip controls a Sub-Timeline instance, Particle System, Prefab instance, or an ITimeControl Script.
<a name="trimspecial"></a>
## Special trim options for looping clips
The Timeline window provides special trimming options for clips with loops. These special trim options either remove or complete the last partial loop.
For example, an Animation clip is set to loop and its duration is just over twice longer than its source asset. This results in the Walk clip with one full loop and one partial loop.
![](images/tl-walk-loop-before.png)
_L1 indicates a complete loop. The clip ends in the middle of the second partial loop, L2._
To extend the end of the clip and complete the partial loop, right-click the clip and choose **Editing** &gt; **Complete Last Loop**. To trim the clip at the last complete loop, right-click the clip and choose **Editing** &gt; **Trim Last Loop**.
![](images/tl-walk-loop-complete.png)
_The result of **Complete Last Loop**_
![](images/tl-walk-loop-trim.png)
_The result of **Trim Last Loop**_

View File

@@ -0,0 +1,59 @@
# Manage keyframes
This topic summarizes how to use the Curves view to add, select, step between, edit, and delete keyframes on an animation curve. The functionality described in this topic is similar to [manipulating keyframes in Curves mode](https://docs.unity3d.com/Manual/animeditor-KeyManipulationInCurvesMode.html) in the Animation window.
## Add keyframes
The Curves view provides the following ways to add keyframes:
* Right-click on an animation curve and choose **Add Key**. This method adds a keyframe at the location of the right-click.
* Double-click on an animation curve. This method adds a keyframe at the location of the Double-click.
## Select keyframes
Click to select a single keyframe. Selecting a keyframe deselects all other selected keyframes.
When you select a keyframe, the Curves view displays the keyframe with its tangents. Each keyframe has either one or two tangents that you can use to change the shape of the animation curve. For more information, consult [Tangent modes and types](curves-tangents.md).
To select contiguous keyframes along the same animation curve, click the first keyframe, then hold Shift and click the last keyframe.
![](images/tl-curves-select-key.png)
_Click to select a single keyframe. A selected keyframe displays its tangents._
![](images/tl-curves-select-contiguous.png)
_Hold Shift and click a keyframe to select contiguous keyframes_
There are others ways to select and deselect keyframes:
* Hold Control (MacOS: Command) and click to select discontiguous keyframes. Hold Control (MacOS: Command) and click a selected keyframe to deselect it.
* Click and drag on an empty area in the Curves view to draw a selection rectangle. This selects all keyframes within the rectangle.
* Hold Shift while drawing a selection rectangle to add keyframes to the current selection.
* Hold Control (MacOS: Command) and double-click a keyframe to select all keyframes on the same animation curve.
* Click in an empty area in the Curves view to deselect all selected keyframes. This empty area cannot be within a selection of keyframes.
## Move the Timeline Playhead between keyframes
After you select at least one animation curve in the Curves view, use one of the following methods to move the Timeline Playhead between keyframes:
* Hold Shift and Control (MacOS: Command), and press Period (.) to move the Timeline Playhead to the next keyframe.
* Hold Shift and Control (MacOS: Command), and press Comma (,) to move the Timeline Playhead to the previous keyframe.
## Edit keyframes
Edit a keyframe to change its time, value, or both. The Curves view provides the following different ways to edit a keyframe:
* Right-click a keyframe and choose **Edit** from the context menu to enter specific values for time and value.
* Select a keyframe and press Enter to enter specific values for time and value.
* Select and drag a keyframe to change its time and value.
* Drag a keyframe vertically, then press Shift while dragging to snap the keyframe on the vertical axis. This changes the value but not the time of the keyframe.
* Drag a keyframe horizontally, then press Shift while dragging to snap the keyframe on the horizontal axis. This changes the time of the keyframe, but not its value.
In addition to the methods described above, you can also scale, ripple, and edit the time and value of a selection of keyframes using the same methods as found in the Animation window. Consult [Key manipulation in Curves mode](https://docs.unity3d.com/Manual/animeditor-KeyManipulationInCurvesMode.html) for details.
## Delete keyframes
The Curves view provides the following ways to delete a keyframe:
* Right-click a keyframe and choose **Delete Key** from the context menu.
* Select a keyframe and press Delete.

View File

@@ -0,0 +1,51 @@
# Curves view
Use the Curves view to view and edit animation curves for audio tracks, infinite clips, and animation clips. The Curves view is similar to [Curves mode](https://docs.unity3d.com/Manual/animeditor-AnimationCurves.html) in the Animation window.
![](images/anno-curves-view.png)
**(A)** Curves View toggle.<br/>
**(B)** List of properties with Animation curves, referred to as the Animation Properties list.<br/>
**(C)** Curves view.<br/>
**(D)** Use the double-line at the bottom of the Animated Properties list to resize the Curves view vertically.<br/>
## Curves view with Animation clips
Use the Curves view to view and perform basic edits to animation curves in Infinite clips and Animation clips. These edits include adding keyframes, modifying keyframes, adjusting tangents, and changing the interpolation between keyframes.
To view animation curves for an Infinite clip or Animation clip, enable the Curves View toggle in the Track Header.
If you enable the Curves View toggle for an Animation track without selecting an Animation clip, the Curves view displays the animation curves for the first Animation clip.
![](images/tl-curves-anim-clip.png)
_The Curves View toggle (A) displays or hides the Curves view for the selected Animation clip (B)_
<a name="animwindow"></a>
## View and edit in the Animation window
The Curves View toggle does not appear for Animation tracks with imported animation. To view and edit keyframe animation for imported Animation clips, right-click an Animation clip and choose **Edit in Animation Window** from the context menu. You can also double-click the Animation clip.
When the Animation window appears, it is linked to the Timeline window. When in linked mode, the Animation window displays the Linked button and the name of the Animation clip being viewed or edited.
![](images/anim-window-locked.png)
_Animation window linked to the Timeline window, indicated by the Linked button and Animation clip name. The clip in this example is `(Read-Only)` which means that it can be viewed but not edited._
Click the Linked button to stop viewing or editing the Animation clip, and to release the Animation window from linked mode. You can also close the Animation window to release it from linked mode.
<a name="curvesviewaudiotrack"></a>
## Curves view with Audio tracks
For Audio tracks, the Curves view displays the animation curves for the animatable properties of an Audio track. You can animate the following Audio track properties:
* Spatial Blend
* Stereo Pan
* Volume
Each animatable property is calculated based on its keyframe values, the values for each Audio clip, the values for each Audio source, or a combination of each. Consult [Audio track properties](insp-trk-audio.md) for more information on each animatable property.
![](images/tl-curves-audio-track.png)
_The Curves View toggle (A) displays or hides the animatable properties of an Audio track (B)_
When you animate the properties for an Audio track, it is recommended that you select the Audio track, lock the Timeline window, and lock the Inspector window. With both the Timeline window and Inspector window locked, you can add and edit keyframe values with the Audio Track properties in the Inspector window. Use the Timeline Playhead, Playhead Controls, or keyboard shortcuts to navigate between keyframes.

View File

@@ -0,0 +1,72 @@
# Tangent modes and types
This topic describes [keyframe tangents](#keytangents), [tangent modes](#tangentmodes), [tangent types](#tangenttypes), and [weighted tangents](#weighted). Many of the features described in this topic are similar to [editing tangents in the Editing Curves topic](https://docs.unity3d.com/Manual/animeditor-AnimationCurves.html) in the Animation window.
<a name="keytangents"></a>
## Keyframe tangents
Use keyframe tangents to modify the shape of the animation curve between keyframes. Each keyframe has one or two tangents depending on the location of the keyframe on its animation curve.
![](images/spec-tangents.png)
**(A)** The first keyframe has a single right tangent that controls the shape of the animation curve after the keyframe.<br/>
**(B)** Most keyframes have two tangents where the left tangent controls the shape of the animation curve before the keyframe, and the right tangent controls the shape after the keyframe.<br/>
**(C)** The last keyframe has a single left tangent that controls the shape of the animation curve before the last keyframe.<br/>
By default, left and right tangents are joined. Rotating a joined tangent handle rotates both tangents which changes the shape of the animation curve both before and after the keyframe.
You can break joined tangents to modify the left and right tangent handles independently. In addition, each keyframe has a [tangent mode](#tangentmodes) and a [tangent type](#tangenttypes) that controls tangents and the shape of the animation curve.
<a name="tangentmodes"></a>
## Tangent modes
The term **tangent mode** refers to the algorithm that automatically adjusts tangent handles when you modify the time or value of a keyframe.
To display the tangent mode for a keyframe, right-click the keyframe. A context menu displays the selected tangent mode with a checkmark. In some cases, a keyframe can have more than one tangent mode. For example, keyframe tangents can be both **Free Smooth** and **Flat**.
|**Tangent mode** |**Description** |
|:---|:---|
|**Clamped Auto**|This is the default tangent mode. In this mode, the Curves view automatically adjusts the rotation of each tangent handle to ensure that the animation curve smoothly passes through the keyframe.<br/><br/>For example, if you drag a keyframe to modify its time or value, the **Clamped Auto** tangent mode automatically adjusts the rotation of each tangent handle.<br/><br/>When in **Clamped Auto** mode, if you rotate a keyframe tangent handle, its tangent mode changes to **Free Smooth**.|
|**Auto**|Do not select this tangent mode. This is a legacy tangent mode that is only included for backward compatibility with projects prior to Unity 5.5. If you have a keyframe set to this tangent mode, you should change it to another tangent mode.|
|**Free Smooth**|Joins broken tangent handles. Selecting this tangent mode may rotate the tangent handles as they are joined.<br/><br/>This tangent mode does not use an algorithm to automatically adjust tangent handles. For example, if you drag a keyframe set to the **Free Smooth** tangent mode, the rotation of the each tangent handles are not adjusted.|
|**Flat**|Use this tangent mode to join tangent handles and flatten them horizontally. This tangent mode is linked to the **Free Smooth** tangent mode.<br/><br/>For example, if you change the tangent mode from **Clamped Auto** to **Flat**, the keyframe is set to both the **Free Smooth** and **Flat** tangent modes.|
|**Broken**|Select this mode to break joined tangent handles. When tangent handles are broken, you can control the left and right tangent handles independently. In some cases, both the **Free Smooth** and **Broken** tangent modes may be selected.|
The tangent mode is automatically selected in the following cases:
* If you [select the tangent type](#tangenttypes) for the **Left Tangent**, **Right Tangent**, or **Both Tangents** of a keyframe, the tangent mode changes to either **Free Smooth** or **Broken**.
* If you rotate the left or right tangent handle of a keyframe, the tangents are broken and the tangent mode changes to **Broken**.
<a name="tangenttypes"></a>
## Tangent types
Select a tangent type to have greater control over the shape and slope of the animation curve before and after a keyframe.
The term **tangent type** refers to the interpolation algorithm that determines the shape of an animation curve between keyframes. The term **interpolation** refers to the estimation of values between two known points.
To set the tangent type of a keyframe tangent, do the following:
1. Right-click a keyframe. A context menu appears.
1. Select a tangent type from the **Left Tangent**, **Right Tangent**, or **Both Tangents** sub-menu.
|**Tangent type** |**Description** |
|:---|:---|
|**Free**|Select this tangent type to freely rotate the left tangent handle (Left Tangent), right tangent handle (Right Tangent), or both tangent handles (Both Tangents).<br/><br/>When you select **Free** this breaks joined tangent handles and sets the tangent mode to **Broken**.|
|**Linear**|Select this tangent type to draw a straight line to the keyframe (Left Tangent), away from the keyframe (Right Tangent), or both to and away from the keyframe (Both Tangents).<br/><br/>When you select this tangent type, the tangent is hidden. Selecting this tangent type also breaks joined tangent handles and sets the tangent mode to **Broken**.|
|**Constant**|Select this tangent type to keep a constant value from the last keyframe to this keyframe (Left Tangent), from this keyframe to the next keyframe (Right Tangent), or both (Both Tangents).<br/><br/>When you select this tangent type, the tangent is hidden. Selecting this tangent type also breaks joined tangent handles and sets the tangent mode to **Broken**.|
|**Weighted**|Select this tangent type to use a weighted tangent to modify the shape and slope of the animation curve before the keyframe (Left Tangent), after the keyframe (Right Tangent), or both before and after the keyframe (Both Tangents). Consult [weighted tangents](#weighted) for more information.|
<a name="weighted"></a>
## Weighted tangents
Use weighted tangents to modify the shape and slope of an animation curve. You can modify the length of a weighted tangent which modifies the slope of its animation curve. This provides greater control over the animation when compared to the default tangent.
By default, tangents are non-weighted: you can only rotate a non-weighted tangent to modify the shape of its animation curve. You cannot modify the slope of the animation curve because the tangent is set to a fixed length.
![](images/spec-tangents-weighted.png)
**(A)** Keyframe with default non-weighted tangents. The length of the tangent cannot be changed.<br/>
**(B)** Keyframe with weighted tangents. Its tangent handles are drawn as outlines. In this example, the left and right tangents are set to different lengths.<br/>
To change a non-weighted tangent to a weighted tangent, do the following:
1. Right-click a keyframe. A context menu appears.
1. Select **Weighted** as the tangent type for the **Left Tangent**, **Right Tangent**, or **Both Tangents** sub-menu.

View File

@@ -0,0 +1,36 @@
# Use the Curves view
This topic summarizes how to use the Curves view to navigate, display, and hide animation curves. The functionality described in this topic is similar to [Curves mode](https://docs.unity3d.com/Manual/animeditor-AnimationCurves.html) in the Animation window.
## Navigate the Curves view
Use one of the following methods to pan, zoom, resize, or frame the animation curves and keyframes in the Curves view:
* To pan, middle-click and drag, or hold Alt (MacOS: Option) and drag.
* To zoom vertically, move the scroll-wheel, or hold Alt (MacOS: Option), right-click and drag.
* To zoom horizontally, hold Control (MacOS: Command) and zoom vertically.
* To resize the Curves view, drag the double line separating the Curves view from the next track in the Track list.
* To frame only selected animation curves or selected keyframes, press F.
* To frame all animation curves or keyframes, press A.
You can also [use the Zoombar](clip-pan-zoom.md) to pan, zoom, and resize the Content view.
## Display and hide animation curves
For the selected Animation clip, the Curves view includes a hierarchical list of the properties with animation curves. Expand, collapse, select, and deselect the properties in this list to filter which animation curves appear in the Curves view.
For example, to display only the X-axis animation curves for the position of a GameObject, do the following:
1. Click the Triangle beside the **Position** parent property to display its child properties.
2. Select the **Position.x** property.
3. Press F to frame the animation curve for the **Position.x** property.
![](images/tl-curves-position-x.png)
_Curves view that displays the animation curve of the Position.x property_
There are many ways to expand, collapse, select, and deselect animation curves:
* Click the foldout (triangle) of a parent property to expand and collapse its list of child properties.
* Hold Shift and click to select contiguous properties.
* Hold Control (MacOS: Command) and click to select discontiguous properties.
* Hold Control (MacOS: Command) and click a selected property to deselect it.

View File

@@ -0,0 +1,16 @@
apiRules:
- exclude:
uidRegex: ^EditorTests
type: Namespace
- exclude:
uidRegex: ^Tests
type: Namespace
- exclude:
uidRegex: ^Common
type: Namespace
- exclude:
uidRegex: ^Timeline\.Tests
type: Namespace
- exclude:
uidRegex: ^DocCodeExamples
type: Namespace

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Some files were not shown because too many files have changed in this diff Show More