Current Thesis Results


Holding, Pausing, and Layering, Any Reach, Any Throw, November results, Changing Styles, Other changes, Basic Layering

Latest Results: A Scary Jump!

scary-jump.mpg (2.8M)

   This is the first animation in which I'm actually trying to convey something, and it (coincidentally) makes use of most of the major elements in the thesis.  It consists of seven primitive actions (i.e. Motion Models) sequenced together, utilizing holds for some of the transitions.  Factoring out the time to fix the bugs I discovered along the way, this animation took well under ten minutes to create, and that's including a couple of variations that I ultimately abandoned.

Hold vs. Pause+Layering

look-segue.mpg (1.5M)

look-hold.mpg (1.5M)

look-pause.mpg (1.5M)

   This is a demonstration of several ways in which we can combine motions. All three animations above consist of the same three actions: a sequence of two jumps, with a "look over the shoulder" in-between when George hears a noise behind him. On the left is the default segue we get from simply chaining the three motions together. In the middle, we have specified that the look action should try to hold the pose it began in, subject to achieving its own goals (i.e. gazing at the specified target). On the right, we have instead paused the first jump just before it segues into the second jump, and layered the look on top of it during the pause. The motion here is less muted than that of the hold, and we have more combinatorial freedom, since we can pause the underlying motion at any time (whereas with the hold we must terminate it), and we can layer ad infinitum. However, layered motions must compete for resources with the underlying motion, whereas the hold does not, since it is segueing from the "underlying" motion.

Any Reach, Any Throw

   The latest actions I have implemented are a "reach" that can acquire a target object and a "throw" that can throw it at any target.  Since I am not modeling articulated hands, the grasp is rather simplistic.  Nevertheless, from ten base motions I can synthesize a plausible reach for practically any target a human could reach,  and from just four base motions (per Style) I can plausibly throw at any target (with control over the ballistic trajectory, if desired) out to 15 meters or so. All three variations shown here use the same two Motion Models (reach and throw).  Things to note: he tracks his target with his eyes - this behavior is selectable (on by default);  the green fellow throws sidearm while the other two throw overhand (just a Style change).

reach-throw.mpg (900K)

November 1999

The default animation (1.5M)

   This sequence is the default animation you get from my system if you sequentially compose the actions Jump, Foot-Shuffle, Jump, Fist-Shake, Fist-Shake.   Use your imagaination and imagine he has a fist.

A more interesting animation (1.8M)

  This is the result of six simple editing operations, each equivalent to dragging an object in 3-space from one place to another.  The six things changed are starting and landing positions for the first jump, direction in which to shuffle the feet, landing position for the second jump, and the target of his rage for each fist-shake.  The fist-shake demonstrates the Aim-At constraint, used on both the fist and the gaze direction.

   Note the timing on some of the transitions is still off, as I haven't yet done the timing measurements.

Changing Styles

   This is a simple sequence of jumps to traverse the three pillars.  Inbetween the jumps, George must turn to the right to more naturally execute the second jump.  This is accomplished by inserting a Foot-Shuffle motion inbetween them.  Foot-Shuffle can generate both turns and small steps in any direction.

jumping in the default Style (1M)

   Here is the same animation, but by performing two menu-selections, we've changed the Style of both jumps from my hand-animated style to "Spiff-Jump", which is more or less me motion captured (some of the data was not usable, so I rotoscoped it with some fill in the blanks).  This causes the animation to change in several subtle ways, including its duration; however, the goals are still satisfied, and all the motions automatically adjust to the changes.

jumping a la Spiff Style (1.3M)

Other Changes We Can Easily Make

Heavy jumping (1.3M)

   I added a "gravity" parameter to the Jump Motion Model.  It's not even close to physically accurate, as it only adjusts the timing and speed of the jump, not the geometry.  But it's still somewhat cool, and any value entered for a particular Motion Model propagates forward in time until changed by another Motion Model that cares about it.  Here I've set gravity to two G's for the first jump, and it propagates to the second.

A different jump sequence (2.3M)

   Here we've substantially changed the animation, with only a few operations.  The pillars have shifted position and height, and we need to adapt George's motion to compensate.  Basically, we just changed the landing spot of both jumps, and the starting spot of the first, plus told the Foot-Shuffle that he no longer needs to pivot for the second jump, but rather needs to step to the edge of the pillar.   Finally, that first jump is a doozy, so we quickly inserted a Catch-Breath after the first jump.

Simple Layering

   Here is a simple animation consisting of three actions segued together: a pivot to the right, followed by a shuffle forward, ending with a fist-shake at the camera.

The baseline animation (1.5M)

  On top of this baseline animation, we've now layered a second stream of actions: "check the watch" followed by an "ah-ha!" gesture which, when completed, resumes into the baseline animation.   This is possible because these actions need to use only joints/bodyparts that the baseline actions don't consider crucial. If we had tried to layer a jump on top of the pivot, the system would complain because both actions require use of the feet. Note that, in my system, layering an action instead of segueing it is merely a matter of pushing a button.

Baseline plus layered motions (1.5M)