
last updated 11/2/95

BACKGROUND
----------

Walker is a program I wrote with Kanishka Agarwal for our final project
in our graphics class while we were at Harvey Mudd College.  I did most
of the viewing, UI, and internals, while Kanishka concentrated on the model.
We both came up with different .cset (curve set) files which make the guy
do various things.  We spent dozens of minutes marching around the graphics
lab trying to figure out just how people walk.  It was not a rigorous effort.

The program is for modeling human(oid) motion with forward kinetics.
Forward kinetics basically means it does nothing cool for you with respect
to how people really move, how articulated linkages move, or how gravity
works.  You must specify the angular displacement of each joint at each
point in time.  Also, our model only has 5 joints.  AND each joint only
has one degree of freedom.

Okay, so enough about why it sucks; it is cool because you can put together
some neat little animation sequences and it is fun to play with the curves
and see immediate feedback.  Plus you can spin the guy around really fast
while he's running: if that's not the sign of a quality graphics program
I don't know what is.  And it illustrates how to do an app in GLUT with
simultaneous 2D and 3D displays/interfaces.

INSTRUCTIONS
------------

Basically you've got two windows.  One shows the guy; one shows the rotation
curves.  You know SGI demos: just click around with all three mouse buttons 
on anything that looks interesting and you'll figure it out.

MORE INSTRUCTIONS
-----------------

All I can think of to add are keyboard commands.  I have not used the program
myself it several months and can't really remember how to use it.  But it
was easy I remember that.  Here are keyboard commands you might have missed:

In 3D window, viewer keys:
        0-9 and +/- to change speed when in FLYING MODE
        (Careful use of flying mode and you can pretend the guy actually
         is moving as he's flailing his legs.  Or, edit the program so it'll
         take another curve which isn't a rotation but a displacement.
         For BONUS POINTS: Have the program compute this based on the 
         rotation curves of the three leg joints.)
In 3D window, walker keys:
        f, F: step forward 1, 5 time step(s)
        b, B: step backward 1, 5 time step(s)
        spacebar: step forward one time step
In 2D (curves) window:
        same as 3D window walker keys plus:
        1-5: edit curve #1-5
        d: stop edit curves

Remember, each of the three buttons in each window does something.  I think.
There are pop-up menus, I know that much.

POINTERS
--------

We researched a number of sources before writing this, but I think our main
reference was this book:
        Advanced Animation and Rendering Techniques - Theory and Practice
        Alan Watt, Mark Watt
        Addison-Wesley (ACM Press) 1992
Whatever else we read we probably got from a citation in that book.

But hey if it's on paper it's probably out of date, right?  No, but 
try these anyway:
        http://www.cc.gatech.edu/gvu/animation/
        http://robotics.stanford.edu/users/kuffner/human.html
        http://market.net/literary/mkp/pages/1554/index.html

DIRECTORY LISTING
-----------------
  483 May 15 04:05 Makefile

  324 May 15 04:03 walker.h
28346 May 15 03:59 walker.c - most everything, callbacks for both windows
                              (except AGV for the model window)

17601 May 15 04:00 models.c - models, wireframe, solid rectangles, and 
                              cylinders/spheres.  Colors could use a little
                              work!  And you could plug in a totally
different
                              model and make that work too.

 3435 May 12 16:19 walkviewer.h
13095 May 12 16:19 walkviewer.c - basically AGV (a GLUT viewer)

  928 May 12 16:19 walking.cset - curves we did...
  809 May 12 16:19 running.cset
  762 May 12 16:19 bound.cset
  978 May 12 16:19 moonwalk.cset
 1177 May 12 16:19 dunk.cset
 1236 May 12 16:19 reverse_dunk.cset
  924 May 12 16:19 kick.cset
  882 May 12 16:19 Impossible.cset
  754 May 12 16:19 MrFlex.cset
  767 May 12 16:19 Ouch.cset

AUTHORS
-------
Kanishka Agarwal - whereabouts unknown
                   (to me anyway, but I could track him down if need be)
Philip Winston - pwinston@hmc.edu
                 http://www.cs.hmc.edu/~pwinston/
                 Email me your .cset files! (unless they're worse than ours)
                 Also email me if you modify the program substantially or
                 play with it as a means of procrastination.  I'm just
                 curious.
Ran Libeskind-Hadas - hadas@cs.hmc.edu
                      http://www.cs.hmc.edu/~hadas/
                      (He didn't write any code, but he taught the class.
                       Plus he's a cool guy.)

