Gesture Manipulation

From Valve Developer Community
Jump to: navigation, search

Suggested Reads for this Article

Introduction

FacePoser has the ability to modify the playback of model animations within Source. By using the Gesture tool, scene designers can modify certain aspects of a model’s animation sequence(s) without having to use a 3D modeling application.

In this article, the gesture named "A_g_fingptfwd" in the Alyx model will be modified.

Overview

  • Create a scene with (null) gesture events
  • Alter the timing tags of a gesture
  • Change the Ramp of a gesture (optional)
  • Play back and tweak the choreography
  • Conclusion and Tips

Creating the Scene

Load the Alyx model and create a new scene. Name the actor and create two channels: one named "Original" and one named "Manipulated." In the Original channel, create a sequence event named "Before", select the A_g_fingptfwd animation, set the start time at 0 seconds, uncheck the end time box, and push OK (The blank end time field lets the event occupy the same time span of the intended animation, instead of stretching or compressing it.) In the Manipulated channel, create a null gesture. Enter in values for the start and end time fields that would have the event occur somewhere within the timespan of "Before" (This will prevent the sequence and gesture from crossfading into each other.) In the same channel, create a gesture event named "After", select the A_g_fingptfwd gesture, enter in a value in the start time field that would have After occur after Before, uncheck the end time box, and push OK. The scene should look somewhat like this:

The layout of the current scene.

The scene has now been created. The A_g_fingptfwd animation consists of the character raising its right arm to form a pointing pose. This pointing pose is extended for about a second, and then is gradually faded out. This article will change the animation into the right arm sluggishly being raised into the pointing pose. The pointing pose will then be held for about half of a second. Another half second will be left for the end of the event, resulting in a quick fade out.

Altering Timing Tags

Gestures generally consist of four animator-designated 'Timing Tags':

  • Apex - The start of the animation. Before this, we were simply fading in from the previous position.
  • Accent - The end of the main animation and the beginning of the Accent sequence.
  • Loop - Stop playing the Accent and hold the animation.
  • End - Start fade to null.

The Gesture tool allows these tags to be shifted to a different point in time, thus altering the way the animation is played back in-game.

Select "After" and double click on the Gesture tab to open up the Gesture tool. Enable time sample snapping if needed, and move the tags to modify the animation. The timing tags were altered to this:

Timing tag settings for the gesture event.

This results in the animation looking similar to the intended description.

Changing the Ramp

Optionally, the ramp of the event can be changed. Changing the ramp allows for the strength of the event to be modified, giving even more customization over the playback of the animation. The ramp of the event was changed to this:

Ramp settings for the gesture event.

These Ramp settings changed the event in that the arm raising was made more sluggish, the direction of the index finger was lowered and moved towards the character’s right, and the fade out was "smoothened out".

Playing Back and Tweaking the New Animation

Play back the scene to compare the original animation to the new one. Tweak the timing tag placement and ramp of the events if so desired. Consider playing back the scene in the engine to see what the animation would truly look like.

Conclusion and Tips

With timing tag alteration, scene designers can have more leeway in what animations would look like in the Source engine. This prevents the need to make modifications to a model in a 3D modeling program for suiting minor discrepancies in an intended animation.

Another method of adding animations to a scene is by double clicking on the Animations tab and dragging a thumbnail into a channel. A popup box will show up, asking the user whether the event to be created will be a sequence or gesture event. When choosing a certain animation on the creation of gesture events, one is not restricted to the selection in the drop down menu, as hinted by the box previously mentioned. Any animation for a certain model can be used in the Gesture tool. Usually, "non-intended" gestures lack timing tags, but these tags can be inserted into an event, as well as deleted.


Reference Scene

The scene file used in this article is available here.