Variability
in Walking Cycles
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.
 |
 |
(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]
|