Choreography creation/Creating Events/Skeletal animation

From Valve Developer Community
Jump to: navigation, search

Animating an Actor's body is easily as important as animating his or her lips and face. While somebody's expression can tell you a great deal more than their movements, that does not mean that a choreographer can afford to focus too much on the former and neglect the latter. In particular, body animations are visible from a further distance than facial animations, and become the overriding concern when an actor will be delivering their performance a distance from the player's view or in a crowded environment.

In this tutorial, body animation is placed before facial expressions, generic events and lip synching. This is in order to suggest a productive workflow; however, there is nothing to stop you performing the four stages in any order you choose, or in no order, if you find doing so more helpful.

Source's animation technology

Sequences are used to guarantee precise movement, overriding Source's animation blending system.

As opposed to facial expressions, body animations (Gestures, Blend Gestures or Sequences) are constructed from the pre-existing animations that are compiled into each Actor's model. Any animation can be used in any form—Gesture, Blend Gesture or Sequence—but you will see undesirable results if you stretch that fact too far.

Source provides several animation technologies that will help you produce a more authentic performance:

  • Any animation can be layered above any other, including those played by the Actor's AI system, to combine the two movements (Blending). Among other benefits, the system creates very natural motions and let animators create a modular set of basic movements that provide choreographers great flexibility. The 'Sequence' event type can be used to override this behaviour.
  • Any animation can be sped up or slowed down at any point to alter the progression of its playback (Timing Tag manipulation), including overall lengthening or shortening. This enables precise synchronisation between dialogue and reusable animations.
  • Any animation can have its intensity changed between 100% and 0% at any point (Ramp manipulation). This can be used to reduce the amount of movement in or even hide entirely certain parts of the animation.

Note that for all of this flexibility, animations cannot be created without falling back to dedicated 3D animation tools like XSI.

Types of animation

Gestures are the most common form of animation and support the full range of animation features, including blending with other Gestures. A Gesture will take control of whatever areas of the model it needs to play. They are created with the Gesture Event, usually have either gesture or _g_ somewhere in their names, and can optionally be wrapped to the next Gesture event in the Channel with the Synch Exit tag property to create continuous movement.
Blend Gestures
Blend Gestures are implemented identically to Gestures, with the same event type and all of the same properties. The crucial difference is that they only provide small movements that need the blending context of a full Gesture to make sense; they cannot stand apart. They are invaluable when adding interest to an animation that is to be held for longer than originally intended, and add depth to any situation. Blend Gesture animations can be identified from having _bg_ somewhere in their names.
An example of a Blend Gesture is Dr. Breen's laughing animation from the climax of Half-Life 2, b_bg_laugh. Viewed in HLMV or the Animations tool it can be seen to be no more than the upper body jolting slightly.
Sequences prevent animation blending, guaranteeing precise movement that is most useful when Actors are required to touch other objects in the world. Since a sequence overrides even an actor's basic breathing animations, and since it takes control of EVERY part of the actor's body, only animations created specifically as sequences are really suitable. They are created with their own Event, Sequence.
Warning: Sequences are broken in ep1 mods, and behave like gestures. Use the Orange Box engine to avoid this.

Finding an animation

While you could create a Gesture or Sequence event from the Timeline context menu and choose an animation from the drop-down list, it is far more intuitive to use FacePoser's Animations tool. Open it from the tab tray at the bottom of the screen or the Window menu at the top.

FacePoser's Animations tool.

This tool displays thumbnails of every animation available for the active Actor, split into four tabs:

Provides an unfiltered list of every animation. You will find a very large number of animations in this tab, but they are generally not suited to choreography. Notable exceptions to that rule are one-off sequence animations, most of which do not appear by default in the other tabs.
You should generally avoid using animations that are controlled by the AI - use a Generic(AI) event with the relevant command instead, which will trigger them cleanly.
Emphasis-adding animations, usually of the arms or head/neck. Despite their name, they need not be used in Gesture events. You will spend most of your time in this tab.
Poses that define a character's general stance and convey only subtle meaning. Good for when an Actor must listen to another for a long period.
search results
Used in conjunction with the Search button to filter all animation names for your terms. Remembers the last search.

The Animation tool's primary purpose, however, is to provide these two mouse-driven functions:

View an animation
Hold your mouse down over a thumbnail to play its animation in the 3D View.
Drag an animation to the Timeline
Drag a thumbnail off the dialogue and onto any point on the Timeline. Be aware that the location of your cursor defines the centre of the Event, not the start. You will be asked whether you want to create a Gesture or Sequence, and then passed on to a pre-filled Edit Event dialogue. The resulting Event is identical to one created from the context menu.

Timing Tag manipulation

See Gesture Manipulation for a worked example.

If you have created a Sequence, you are now done save for any Ramp alterations. If you created a Gesture or Blend Gesture however, the option of manipulating the pattern of its playback remains, and is in fact strongly recommended. Moving Timing Tags to ensure synchronisation with speech patterns is a vital component of strong choreography. If you haven't created any Event Tags, now would be an excellent time!

Bug: In the screenshot below, the blue Event Tags above the timeline are mis-labeled as Timing Tags.
Timing Tags in the Gesture Tool

Gesture are manipulated by moving their Timing Tags in the Gesture Tool, seen above. The top set of timing tags are manipulated by dragging, while the bottom cannot be altered and act as a point of reference linked to their manipulated location by a grey line. When a Gesture is first made to sets are synchronised, unless you dragged the left hand edge in which case they will have all shifted to the right. You can reset them at any time through the context menu.

By dragging the Timing Tags, the points at which Source's animation system reaches the animation 'bookmarks' they represent change. If two tags are dragged closer together, the animation will play faster between them, and conversely slower on either side of them. Note that you cannot change the order of the Timing Tags, and also that deleting them does not remove that segment of the animation.

Timing tags are defined by the animator and need not apply to any convention, but the standard set up used by most of Valve's animations is as follows:

Event start
Event starts blending into the Apex frame. Intensity increases from 0% to 100% irrespective of Ramp configuration.
Moving to the first frame of the Accent segment, which is usually a small movement at the animation's peak that gives extra emphasis.
Playing back the Accent segment.
The animation is frozen on the last Accent frame. Should be a suitable position in which to hold the animation. Use Blend Gestures to add interest if you are going to be extending this gap.
The animation is fading out from the last Accent frame to neutral. Intensity decreases also.
Event end

There are many variations on this however; some animations replace Accent with Extreme, in situations where there is no particular accentual movement, and there are many other more complex departures from the norm to be found. Don't worry too much though, as after some Scrubber experimentation the meaning of an unusual tag set should soon become clear.

Animations designed for use as Sequences will often not have any Timing Tags.