|CRA Distributed Mentor Program (Summer '02)|
The Project : Automatic Detection
of Kinematic Constraints
This project will help to contribute to graduate student Alla Safonova's project regarding scaling human motion capture data to animate characters of significantly different shape from the original motion capture actor.
There are specific points of contact that need to be preserved when scaling mocap (short for "motion capture") data. The anatomic structure of the source geometry to the target geometry is quite different. Thus, I need to apply collision detection to the scaled model. However, this results in new behavior that is inconsistent with the original mocap data. Specifically, I would like to identify the instances when the end effectors (i.e. the tip of the hand or the foot) needs to remain in contact with a specific body part. For example, when a man is scratching his head with his hand, we need to make sure that the hand is actually scratching in a plane such that it makes contact with the head. Our previous model made a scratching motion at some displacement away from the head. We were able to manually correct the error, but we would like to come up with an algorithm to do this automatically.
I started with a mocap data visualization program created by a couple grad students in the lab. It uses cylinders as body parts for the skeleton.
Skeleton with cylinders
Mocap actor geometric mesh model
Skeleton with human geometric mesh
I want to find frames when the end effector is in contact with a body part, such as the hip. I use the SWIFT++ collision detection package to detect frames when the end effector is within a specified tolerance from a specified body part. For example, these are some of the types of poses I want to pick up on:
Now that I have identified the kinematic constraints on the original