| Sponsor | Irfan Essa |
| Area | Computational Perception |
Problem
Problem Scope: Motion Capture technology has found wide-spread use in Computer Animation (and the related productions). In this project you will learn to
Here are 2 specific projects that can be done. However, in direct discussions, we decide which direction you want to take and define a very specific scope
(some CODE for this is available from ~spark/work/expl on the the UNIX side)
SKELETON from MOCAP.
Take a look in
/net/cpl/data/mocap/processed/bvh/subject001/walking
and you should see 8 sets of data. Take a look through the file and the web page http://www.biovision.com/bvh.html
The web page explains the BVH format, but essentially you have two parts: the first half describes the skeleton (joint names) and their hierarchy (hip bone's connected to the ... chest bone). The second half contains the actual data - the joint angles of the skeletal hierarchy. Note that the rotations are in ZXY order.
Now take a look in
/net/cpl/data/mocap/processed/c3d/subject005/walking
you should see text file (.txt) equivalents of the data you saw in the "bvh" directory above.
The BVH files are joint angles while the text files are the XYZ positions of the markers over time. So the question becomes, "How do you generate joint angles given just marker data?" Well, that's what we're going to figure out!
The basic approach:
Well, we know that our markers are on our joints. That is, there are markers on the elbows, shoulders, waist, wrists, etc. Let's imagine that we have a marker on our right shoulder, right elbow, and right wrist. If we draw a line from the right shoulder marker to the right elbow marker we can assume that the line represents our upper arm. Likewise, if we draw a line from the elbow marker to the wrist marker we can assume that it represents our lower arm. So given those two lines (think 3D vectors!), can we figure out what the angles are? More importantly, given a single frame of complete marker data, can you write a program that will generate the joint angles over the entire set of marker data?
The next step:
Well, that was all fine and good. Can we do something smarter with our algorithm? What if we average the bone lengths over the entire range of the marker data? That is, instead of looking at just a single frame of marker data, look at the entire range (to compensate for joint compression, skin movement, etc.).
The last step:
Can we generate a BVH file from our joint angles? Build a skeletal hierarchy based on the first two steps, then write out the joint angles. Using a program like Maya, read in your created BVH data. Compare it to the existing BVH data. How does it differ? What can you do differently?
BLENDING:
Take a look in
/net/cpl/data/mocap/processed/bvh/subject005/
and you should see several sets of data in various sub directories. Take a look at the web page http://www.biovision.com/bvh.html
The web page explains the BVH format, but essentially you have two parts: the first half describes the skeleton (joint names) and their hierarchy (hip bone's connected to the ... chest bone). The second half contains the actual data - the joint angles of the skeletal hierarchy. Note that the rotations are in ZXY order.
OK, we've got walking data, we've got running data, and we've got transitional data (walk to run, run to walk). Let's say we wanted to combine them. How can we go from a walk to a run? Or from a straight walk to a turning walk to a run and back to a walk?
Read through the following papers to get some background:
/net/cpl/papers/Rose, Charles/VerbsAdverbs.pdf (Verbs & Adverbs) /net/cpl/papers/Popovich, Zoran/warpage.pdf (Motion Warping)
Basically, you want to find close matches in the two data sets and you want to blend and interpolate between the frames of both sets from some overlap point. Blend between the various motions and check your results in Maya. Maybe make a nice rendering and describe your work.