Variability in Walking Cycles

Dana Sharon

dsharon@cs.ubc.ca


Overview

Introduction
Implementation
Results
Future Work
Conclusions
References
 

Introduction

     Keyframing is an animation technique that involves specifying 'key' poses of a model and interpolating between them over time. Although this method provides significant user control over the resulting motions, it is known to be extremely difficult, time consuming, and requires great skill and talent on part of the animator. Many alternatives to keyframing have been proposed, such as algorithmic animation and motion capture. However, since these don't provide the level of user control that many applications require, keyframing is still the leading method in some fields. Many researchers are currently working on making motion capture or algorithmic animation techniques more controllable. Other researchers try to enhance keyframing, allowing for easier and more intuitive ways to create interesting and believable motions, while preserving the main advantage of keyframing, namely, its controllability. 

     Suppose an animator has keyframed a simple walk cycle: left foot contact --> left high position --> right foot contact --> right high position --> and back to the left foot contact pose. One may now want to introduce some variations of this walk cycle. An example might be changing the stride length over time. Another example is noise. People don't walk with the exact same stride, arm or leg swing, head position, etc. With each step, small, natural changes occur. Without these subtle variations, a walking animation may look stiff and unrealistic. In traditional keyframing, there is no intuitive way of introducing such variability. [1] has developed a system that allows the user to parameterize different aspects of a walk. For example, the user may use sliders to tweak the stride length, arm swing, or walking velocity. However, (I think that) this system does not allow the user to introduce changes over time. 

     In this project, I have implemented a method for introducing variability into a 2D walk cycle. Starting with an initial cycle, the animator can create alternative poses for each of the keyframes. While animating, the animator can toggle back and forth between the different pose options. Since animation sequences are created in real time, each animation session may result in a unique and possibly interesting motion. 

[top]


Implementation

     First, I would like to make a distinction between a keyframe and a pose. Usually both words are used to describe a model configuration, defined by joint angles and body position. A keyframe is also associated with time. Here, a keyframe is a variable pose at a given point in time. That is, each keyframe can have several poses corresponding to it. 

     I have implemented a 2D keyframing system that allows the user to introduce variability into motion by providing several alternative poses to keyframes, and toggling between those alternatives in real time. The bulk of the work involved creating a standard 2D keyframing tool. It was virtually impossible to create poses of a walk by strictly modifying joint angles. When creating walk cycles, it is important to be able to lock a foot in place, and move the rest of the body around it. Moreover, the system needed inverse kinematics to ensure that feet did not go through the floor during animation and during the creation of poses.

     The system has the following functionality:

  • Load/Save Animation - An animation file simply contains poses, defined by body position and joint angles. Each pose is associated with a certain keyframe. 
  • Pose Creation - The user can add, delete, or edit poses. Moreover, the user can add a pose corresponding to the mirror of the currently displayed configuration. A mirror is simply an exchange of angles between left and right limb joints. 
  •  Foot Lock - while creating a pose, the user can choose to lock a foot in place. This functionality not only makes keyframing bearable, the lock information is also used during animation to adjust the body position over time. 
  • Animating - Once the user hits the 'Start' button, the walk cycle is animated using the first pose specified for each keyframe. To toggle between pose options, the user can now hit a number key corresponding to a given keyframe (e.g., the '1' key corresponds to the first keyframe.)  

[top]


Results

The system was used to create the following keyframe poses and animation sequence. 

Example Keyframe Poses

 (a)  (c)
  (b)  (d)
(a) and (b) are different poses corresponding to the 'right foot contact' keyframe. The user can toggle between these during an animation session. Similarly, (c) and (d) are alternative 'right high position' poses that the user can choose from.

      

 

Animation Sequence
Click on the image above to view an animation sequence that was created using the system

[top]


Future Work

The system has various limitations. Some are simply features that could have been added given more time, other problems are more inherent: 

  • Currently, only one keyframe can be toggled at a time. In some cases, one might want to modify several keyframes simultaneously.
  • In a walk cycle, there are two phases, one the mirror of the other. The right foot phase involves right foot contact, high position (while standing on the right foot), etc. Similarly, the left foot phase has a left foot contact, left high position, etc. In many types of variations one wants both phases of the walk to change simultaneously. Currently, the user has to press one key for each phase to make such changes. The redundant key presses make the task of introducing variability unnecessarily more difficult. Pose creation could also be made easier by allowing more sophisticated mirroring functionality. One could specify the pose for only one of the phases, and the mirror phase would automatically be created.
  • Switching between alternative poses is done by pressing a number key corresponding to a keyframe. For example, multiple presses of the '3' key will cause the third keyframe to toggle between it's different poses. This method can be quite confusing, as there is no visual feedback to remind the user which pose is currently being used. One way to solve this is by displaying icons for all the poses of the different keyframes. The icons corresponding to the currently used poses could be highlighted. Moreover, instead of using number keys to toggle between possiblities, the user could simply click on a pose icon corresponding to the desired option. However, selecting options with a mouse will mean that only one keyframe will be toggled at a time (See previous problem).
  • After a certain animation session, one should be able to both playback the animation, and save it. How do we intelligently save a long animation sequence, given that we are no longer cycling through a small set of keyframes, in a predetermined sequence. The longer sequence of animation still contains only a small number of poses, but in an unknown sequence. In order to avoid saving redundant data, one could save the different keyframe poses in one file, and in a separate file, save a set of indices into those poses.  
  • In the current system, toggling between keyframe options may cause the animation to be jerky. The reason is that the keyframes may toggle while using the previous pose for interpolation. Toggling poses should be delayed until interpolation has moved on to other keyframes. 
  • Add feet and hands. A walk just doesn't look right if there are no feet. 
  • The GUI could be improved. The system should offer different windows for playing back animation, creating keyframes, animating, etc. A more important GUI problem is the distinction between a keyframe and a pose. Currently, when one adds a keyframe, the first pose is automatically created. From then on, one adds alternates using a different button. This method is very confusing and could be easily remedied.
  • The IK system should extend to other joints, such as wrists. Creating arm positions is currently done only by direct modification of joint angles. This makes arm positioning extremely annoying.
  • Allow for creation and editing of the 2D model.
  • One should be able to add keyframes in between other keyframes, not only at the end.

[top]


Conclusion

In this report I discuss a system that I have developed which allows the user to keyframe a walk cycle in 2D and introduce alternative poses to each keyframe. During an animation session, the user can toggle between the different pose options of each keyframe by pressing number keys. I provide an example animation that was produced using the system, and discuss limitations and future extensions.

[top]


References

[1] Bruderlin, A. and Calvert, T.W. Goal-Directed, Dynamic Animation of Human Walking.  Computer Graphics, SIGGRAPH 1989 Proceedings, volume 22, page 233-242, July 1989.

[top]