Final Project: Human Model Ragdolization

CS 161, Winter 2009
Written by Andrew Ben Hartman

RAGDOLIZATION

What is ragdolization, you might ask?



This, as it turns out, really isn't much of a ragdoll. A ragdoll is a model whose joints/parts lose their internal power and succumb simply to physics.
This means to make a real, proper, ragdoll, you really need to program out a physics engine. I did not do this.



What I did, however, is about the closest thing you can get to having ragdolization outside of a physics engine. Each of the parts of the body know where they SHOULD go, assuming there is something akin to physics going on.
There are advantages and disadvantages of this approach:
  • Positively, it gives the author more control over what's going on, allowing them to create more visually dynamic and impressive animations for the viewer to peruse.
  • Negatively, this means that since the motions are not procedurally generated through physics, most of the animations will end up in exactly the same position as other similar falls, even if the way they get there is slightly different.



    I Guess That Sounds Fine Enough, But How Does It Work?
    The user has control over the rotation of the major joints in the model's body, the shoulders (both a rotation and a bend), the elbows, the thighs, and the knees.
    They can also rotate the entire body around both the X axis and the Z axis.
    Then, the big finale... the DROP! button! One pressed, the model accelerates downwards, and upon reaching the "ground" point, begins to crumple itself up to compensate.



    So, How Do I Run This Awesome Project?

    Glad you asked! The source code is available here in a handy dandy .tar compressed format. This code comes with a makefile for simple compiling on a typical UCSC unix machine. Just type "make", and bam! You have a brand new executable file to try dropping people on your own. Assuming you can simply run the executable as well, is is also available here.
    The project does require FLTK to run, so one cannot optimally posulate on how well it will work on a computer aside from the type on which it was created (the aformentioned UCSC unix machines).