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.
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:
Starter Code Overview