Track View Editor

Overview

The Track View is the embedded Sandbox cut scene editing tool for making interactive movie sequences with time-dependent control over objects and events in the CryENGINE.

Creating cinematic cut scenes and scripted events are both possible, allowing you to sequence objects, animations, and sounds in a scene that can be triggered in the game, and played either as a detached cut scene from the third person perspective, or from the first person perspective of the player as he plays the game. Sequences created with Track View can be triggered in game with a specific Flow Graph node. Different properties enable sequences to range from passive in game scenarios up to fully uncoupled cut scenes.

This system will be familiar to anyone who has used animation software like 3ds Max, but this guide will also help those unfamiliar with cut scene editors to start creating simple scenes for your levels.

Introduction - Key Concepts

The cut scene editor is a little different to what you will have become accustomed to while learning to use the Sandbox Editor, and there are a few key concepts that you need to understand, especially if you have never used a sequence editor before.

These key concepts are:

  • Sequence
  • Node
  • Track
  • Key
  • Timer Indicator Bar

The sequence is the cut scene itself, and for each sequence you can add a number of nodes for each object that you use, including the top-level node of the scene itself, which is created with the camera icon on the tool bar.

For each node that you have, you can have a number of tracks, depending on what kind of node it is. A camera node can have only the default tracks of FOV, Position and Rotation, plus an events track, but an animated object like a Korean soldier, can have many more.

Each track is measured in seconds, and has points marked on it to indicate where a sound starts, or where an object will be at that particular time.

Each section of a track's time is marked off by a Timer Indicator Bar, which moves across the track from left to right as the sequence is played.

Any key that falls under the Timer Indicator Bar as it moves across the track, becomes active.

Creation of a sequence

To create a movie sequence open a level you designed in the editor and make the Track View panel show up by selecting menu option "View -> Open View Pane -> Track View".

You can Click on Sequence -> New Sequence option:

Or click on the Add Sequence icon to create a new sequence:

You will get an empty sequence to which you can add your Camera nodes, entities, etc.


New sequence

Before creating your Track View sequence, make sure you have added a new layer. This allows you to export your layer and re-import only your Track View Sequence without modifying any other objects in your level.

The Track View is stored in a container object of same name (which is always created at 0,0,0). You can move this Sequence Object as it's transformation does not affect the sequence.


In the example pictures above, the Track View Sequence Object is created on the CutScene layer

You can also edit your sequence properties.

How to attach and modify objects

Any object in a level may be modified in a sequence in terms of position, rotation, event handling and special properties. For example if an animated character is added to the sequence, one is able to set markers to play facial animations or play sounds at a given time.

That way, the system allows a designer to have full control over the world he places a movie in. As an example of how to attach and modify objects, a camera is being added to and moved through the terrain in a sequence:

  • First of all drag a new camera in to your level from the RollupBar and keep it selected.
  • Add the camera to your sequence by right clicking "Add Selected Entity Node" on the sequence main node.


Adding a camera entity.

To construct a movement of the camera:

  • Move the time tracker to any time position
  • Press the record icon in order to signal the Track View that positioning and rotating the camera are meant to be stored in the track instead of the level.

  • Move and rotate the camera in your level and Track View will automatically generate corresponding markers on the track at a given time.
  • You can also navigate your camera in the viewport and record your keys. Please refer to Animating the Camera by Moving the Viewport document for detailed steps.
  • Press the Play icon or move the time track bar back and forth in order to see the result of moving the camera.

All cameras added to a track can be set to be used as viewpoint in order to show a sequence from different perspectives.

To set the viewpoint to a camera at a specific time, a Director(scene) node has to be added from the context menu of the sequence.

The new Director node will already have a camera track, which is meant to contain viewpoint settings. Double clicking on the camera track at a specific time will add a new key frame.


Setting up a camera to be use as viewpoint in a sequence.

This key frame offers an option to select a camera from the sequence to be used as viewpoint. You can add more of this key frames in the camera track if you want to switch among different cameras in the sequence.

Triggering Sequences

The easiest way to trigger a sequence is to attach it to a trigger object such as a ProximityTrigger which can be positioned in the level.

By building a Flow Graph that connects the trigger output of the ProximityTrigger to the start trigger of a PlaySequence flow graph node, one can easily activate a sequence by having a player entering the ProximityTrigger in game.


FlowGraph starting a sequence after a ProximityTrigger has been activated.

For more information on how to use Flow Graph, please read the Flow Graph Editor tutorials.

Sequence Toolbar - Icons, Properties Window and Their Functionality


Sequence Properties Window

Click here for more information on Sequence properties, Track View Buttons and their functionality.

Track View Navigation

Action

Description and How-to

Scrubbing the timeline

Click the time bar to make the time slider jump to that position; clicking and holding will allow the scrubbing of the time slider.

Adjusting Key Frames

Click a key frame to select it. A yellow line will be displayed; click and hold the key frame to slide it back and forth, to adjust the timing.

Adjusting Multiple Key Frames

Click and drag in the empty space to group select key frames, for adjusting multiple keys at a time.

Zooming the Timeline

For zooming the timeline in and out, make sure that the Track View is active and use the middle mouse button wheel, along with scrolling.

Duplicating Keys on a Track

Position the mouse pointer over the key that needs to be duplicated, and then hold down Shift and click the key. The new key will be positioned directly on top of the old one. Continue to hold down and drag the key to the desired time.

Copy and Paste Between Two Entities

First, select the keys that are to be copied. Hold down Ctrl and press C. Then, move the mouse pointer over the track of the entity that you wish to paste the key frames into. Hold down Ctrl and press V.
Note
: Keys can be copied and pasted only between similar tracks (between the positional tracks of two entities).

Tracks and Properties

Each entity supports multiple tracks. A track is where keys are edited to create the animated sequence. By adding multiple entities with the desired tracks, complex scenes can be constructed.

The first node that is generally always required is the Scene Node. It contains the tracks for the high-level components of the scene.

There are many tracks; certain tracks will be available only if the entity supports them.

  • Position: Animates the entity's position in the world space.
  • Rotation: Animates the entity's rotation in the world space.
  • Event: Contains a list of event options that relate to the entity; for example, unhide and hide on specific frames.

The following tracks need to be manually added:

  • Scale: Animates the entity's scale in the world space.
  • Visibility: Animates whether or the entity is visible or not.
  • Sound: Plays a sound at the specific times; it can be an effect or a dialog.
  • Animation: Plays an animation on the entity; animations need to be in the .cal or in the .cga format.
  • Facial Sequence: Plays a facial sequence that has been created in the Facial Editor.
  • Look At: Procedurally controls the character entity to look at a specific entity by using head and/or eye movement.
  • Camera: The camera also has its own, special FOV track for adjusting the camera's Field Of View during a scene.

The Director(Scene) track is slightly different from the other entities that are added to the Track View.

  • Camera: The camera track is used to select which camera the scene will be using at a particular time; multiple camera keys can be added to achieve camera cuts.
  • Sound: Sounds can be added like other entities. However, the sound track plays sounds relative to the camera view. This is useful for fp dialogue as it will be non-directional, as the camera moves around.
  • Sequence: The sequence track is used for embedding other Track View sequences within the scene.
  • Console: The console track enables various console variables (CVars) to be set and adjusted over time; for example, r_gamma.
  • Music: This enables a music mood to be set.
  • GoTo: This enables you to skip directly to a specific time in the sequence.
  • Timewarp: The slow motion effect can be achieved using the Timewarp track in Trackview.
  • FixedTimeStep: Allows you to set a fixed time step. This is used to lower the game speed, to achieve a constant frame rate.
    • fixed_time_step 0.0 for default game play speed
    • fixed_time_step 0.03333 for a frame rate of 30 fps
    • fixed_time_step 0.04 for a frame rate of 25 fps

Adding and Removing Tracks

Additional tracks can be added to entities for additional functions. By default, the basic tracks are added only when an entity is added to the Track View.

Also, tracks can be removed from an entity. This is useful for keeping the Track View clean from unnecessary visual clutter.

Note: Only entities can be added, brushes cannot be added to the Track View.

Adding an Additional Track

Right-click the entity in the hierarchy section to display the options. On the Add Track menu, select the track that needs to be added.

Different entity types have different parameters and certain tracks can be added only for certain entities.

To remove a track, right-click the entity and select Remove Track.

Note: You can also double-click an entity in the tree view to select it.

Curve Editor

The new Curve Editor functionality enables precise animation control for entities within the Track View.

Animation curves are standard in professional animation packages and are great visual representations of animation data.


Example of how the curve editor should be used in tandem with the trackview

The postion, rotation, and scale values can now be manipulated by using a powerful curve editor, similar to 3ds Max or Maya.

The position, rotation, and scale are now broken down into there three axes, x, y, and z. This enables direct control over each axis and ensures that the changes made to one axis don't affect another axis.

The new set of Curve Tangent Controls have been added to help in manipulating the curves to get the desired animation curve.

The controls are as follows:

  • 1: Set the in/out tangents to auto.
  • 2: Set the in tanget to zero.
  • 3: Set the in tangent to step.
  • 4: Set the in tangent to linear.
  • 5: Set the out tanget to zero.
  • 6: Set the out tangent to step.
  • 7: Set the out tangent to linear.
  • 8: Fit the splines to the visible width.
  • 9: Fit the splines to the visible height.

A good example to demonstrate the usefulness of the Curve Editor is animating a first-person camera, with a head bob.

With the old system, a position key would have been placed for each rise and drop in the movement. If you needed to increase or decrease the amplitude of the head bob, it would have required the re-adjustment of each individual key, which is tedious and time consuming.


z-axis, showing the head bob


Adjusting the z-axis curve results in a lesser head bob

With the Curve Editor, it is simple to adjust the z-axis curve by selecting the top keys and dragging the whole selection up or down. This affects the amplitude and just takes seconds to do.

LookAt and Animation Key Properties


LookAt Track Key Properties

Option

Description

Entity

Selects the entity that needs to be the LookAt target.

Manipulated Bones

Filters the objects that are affected by the LookAt; Eyes is eyes only.


Animation Track Key Properties

Option

Description

Animation

Selects that animation that needs to be played; this option is available only if the entity supports/has animations (the animations are referenced in the .chrparams file or as a .cga contained within the file).

Loop

Loops the animation.

Unload

Unloads the entity from the memory.

Inplace

Plays the animation, without moving the entity from its origin, even if it is a part of the animation.

Blend Time

Sets the amount of blending that should be used, if there is an earlier animation.

Start Time

Sets when the animation should start (for example, if the animation is 10 seconds long and you specify 5 seconds in this field, the animation won't play for the first 5 seconds, but will immediately start at the 5th second.

Time Scale

Speeds up or slows down the animation.

Playing the Scene

A basic flow graph needs to be created for playing a Track View sequence. The flow graph node that is responsible for playing a sequence is found under Animations:PlaySequence.


Overview of the Flow Graph Node

Inputs

Description

Sequence

Input field that determines which sequence to play

StartTrigger

When triggered, the scene will start

StopTrigger

When triggered, the scene will stop

BreakOnStop

When the sequence is stopped, by default, the time slider will go to the very last frame and trigger the logic; this can be useful because when a scene is skipped, you can still trigger all the logic and positional info on that last frame, and this option will overwrite that logic

BlendPosSpeed

If a value is stated in the game, the camera will take the value to blend to the Track View camera; this is used for making a smoother transition from the game to the cutscene

BlendRotSpeed

It is similar to BlendPosSpeed, but for rotational values

PerformBlendOut

Blends the end camera position to the player's position, smoothing out the transition from the cutscene to the game

Outputs

Description

Started

Triggers the output when the scene starts

Done

Triggers the output whether the scene has finished by itself or has been skipped by the user

Finished

Triggers the output only if the scene finishes without being interrupted by the user

Aborted

Triggers only if the scene is stopped or skipped by the user

Animating Entities with Key Frame Animation

By using the positional, rotational, and scale tracks, basic object animation can be achieved in the Track View.

To start animating, the entity keys can be manually added in the Track View. Their values can be adjusted in the Key Properties section by adjusting the positional, rotational, and scale values over time.


Track view sequence (manually added multiple keys and the key properties adjusted over time)

However, a more effective method is to work by manually manipulating the entity in the viewports and recording the movements.

First, make sure that the entity you wish to animate has been added to the Track View. Once it has been added, select it and click the Record icon.

With the Record icon selected, any movement that is applied to the selected entity will be recorded in the Track View at the current time. To add more keys, move the Track View time slider to another time and adjust the entity at the desired position. There will now be key frames that the Track View will interpolate between, for animating the entity.

Animating Cameras with Key Frame Animation

Basic camera animation is very similar to object animation, except that instead of manipulating the camera from a third-person perspective, it is possible to look through the camera you are animating to get an exact representation of what the camera will look like in the scene.

By default, new, manually placed cameras are locked; they need to be unlocked before being used.

At the top-left of the viewport, right-click and select Lock Camera Movement. This option will be visible only if you have first added a camera to the scene.

Then, the Record button needs to be selected in the Track View.

Position the camera where desired, at a given time. Then, while the Record button continues to be active, move the time slider to a new time and reposition the camera. Continue this process to get the desired camera movement.

The camera's Field Of View can be animated by adding keys to the FOV track and adjusting the FOV key properties at specific intervals.

Track View - Flow Graph Relation Integration

Certain features required for creating cinematic effects are contained only within the flow graph. To access these effects, a bridge between the flow graph and the Track View needs to be created.

A useful technique for using the Track View and flow graph together is to send events by using trigger entities. Trigger entities send events to the flow graph to trigger flow graph nodes. Time delay nodes can be used, but are more difficult when adjusting the timing. They also pose issues when a scene is skippable because the logic will continue.


The Track View above has the AreaTrigger4, which triggers a Leave event at 11 seconds; when this is triggered, it will fire a port in the Flow Graph.

First, place an AreaTrigger in the scene and add it to the Track View.

Under the Event track, add a key frame where you want to trigger a certain event in the Flow Graph.

Select the key frame and in the Key Properties section, select Leave. Add this same trigger to the Flow Graph.

When the Track View plays over this key, it will send an output from the AreaTrigger's Leave output port; this can be connected to a Flow Graph node to trigger cinematic effects (for example, a camera fade).

For more information on Track Event node, you can refer to this document.

Skippable Scene Logic

When a Track View sequence is skipped in the game, by default, the Track View will still trigger all the logic that has been placed on the final frame in the Track View. This can be very useful if the scene requires heavy, post-scene clean up to hide the entities that are specific to that scene.

For example, on a sound entity, it can be useful to have a stop key frame in the Event track. This means that if the cutscene is half way through playing a sound effect and the user skips the scene, the sound will be stopped. Otherwise, the sound will continue to play, creating an undesired effect.

It is much cleaner to place event keys on the final frame to clean up the end of a scene, than it is to place multiple Flow Graph nodes to achieve the same, after a scene has been completed.

Capturing Scenes to Disk

As a Track View sequence is pre-determined and the camera movement is precise, the ability to record them to a movie format is very useful.

CryENGINE incorporates a system for frame by frame capturing that can later be complied into a movie format. By using a few cvars, frames can be rendered into a local folder.

By default, the captured images are placed in the root directory of the game, inside a folder called CaptureOutput.

The following cvars are useful for frame by frame capturing:

fixed_time_step

This is used to lower the game speed, to achieve a constant frame rate.

fixed_time_step 0.0 for default game play speed.
fixed_time_step 0.03333 for a frame rate of 30 fps.
fixed_time_step 0.04 for a frame rate of 25 fps.

capture_frames

capture_frames 1; enables the capturing of frames.
capture_frames 0; disables the capturing of frames.

capture_file_format

This sets the output format for the images.

capture_file_format jpg
capture_file_format targa

Once the frames have been captured, a third-party application needs to be used to compile the frames into a movie format.

Layers

The layer system within CryENGINE helps in organizing assets into workable groups, and also helps in avoiding the accidental manipulation of unrelated assets.

By using the layer system in a production environment, it's also possible for multiple designers to be working on the same level, as well as for the cinematic team to work on the same level at the same time as the level designers.


The layer panel in the RollUpBar.

For each cinematic scene, first create a new External layer.

Once you have created new External layers for the required number of scenes, ensure that the layer you want to work on is selected. This ensures that the new assets will be placed on only this layer.

Also, by having only the layer that you wish to work on as editable, you can avoid the accidental addition of entities to the incorrect layers. Another useful workflow tip is to rigorously name every asset in the cine layer with a cine_x prefix. This becomes invaluable during debugging, as any problematic asset can then be traced to the specific layer, as well as to the designer responsible for it.

Any entity that is now added to the level will automatically be added to the selected layer. When the level is saved, this layer will also be saved. It will then be possible to work on this layer separately from someone working on the main level.cry file. You can also later re-import it into the main level for a latest version of the level.

Differing appearance through properties

The properties of a sequence may be modified by clicking on the Edit Sequence icon, as shown below. There one can define whether the player will keep control over the scene as well as the appearance, such as screen format and HUD visibility.


A cut scene example from the PacificIsland level defined by editing the properties.