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.
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:
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.
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.
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:
Adding a camera entity.
To construct a movement of 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.
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 Properties Window
Click here for more information on Sequence properties, Track View Buttons and their functionality.
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. |
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.
The following tracks need to be manually added:
The Director(Scene) track is slightly different from the other entities that are added to the Track View.
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.
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.
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:
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 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. |
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 |
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.
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.
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.
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.
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:
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 1; enables the capturing of frames.
capture_frames 0; disables the capturing of frames.
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.
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.
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.