Overview:
In this assignment, you'll implement
several interpolation schemes to interpolate human motion data obtained
from an optical mocap system. The human model (skeleton) is represented
using a hierarchy, composed of a root node and several children nodes,
corresponding to the various joints. The optical mocap system generates
two data files: ASF file, which encodes the skeleton kinematics (length
of various links, degrees of freedom, etc.) and AMC files, which stores
the motion (translation, joint angles) over the sequence. We read the joint
angles (for the various joints, in euler angles) and translation (of the
root node) of the hierarchy from these files and store them in a data structure.
We provide a player that draws a skeleton (with parameters specified by
the ASF file) and plays back the motion from an AMC file. You will be given
one ASF file and several AMC files for two different motion sequences (walking
and story telling) of the character. For each type of motion (e.g.: walking),
you will be provided with an AMC file corresponding to the original sequence,
and several smaller AMC files that are sub-sampled from the original sequence.
We're going to consider these sub-sampled sequences to be key frames, which
you will use to create an interpolated sequence of the original length.
We provide you code to perform linear interpolation of the key frames;
your task is to implement Catmull-Rom or Bezier interpolation. We represent
the orientations as Euler angles, you will also be required to represent
the joint angles using quaternions and perform the same interpolations
in quaternion space.
Requirements:
We are providing you with starter
code to read, display and animate skeletons from the ASF and AMC files
(motion capture data files). Our code uses euler angles to represent joint
rotations. You will be given data for two sequences: (1) walking (in the data/walk_turn directory)
and (2) story telling (in the data/tea_pot_small directory).
For each of these sequences, we will give you the original
sequence and sampled sequences (key frames). Some of the sampled sequences
are uniformly sampled from the original, others are sampled at non-uniform
intervals. We also give you information about the sampling rate (for uniform
case) or the spacing between samples (for non-uniform case). Your task
is to do the following for the two sequences: