Programmed a functioning BVH Player as part of a motion-capture assignment. The BVH player can load in up to two animations at a time, which can be stepped through using a time slider or playback controls. I wrote code to use forward kinematics so that the skeleton is set up properly at each frame based on the BVH file data. Any joint of the skeleton can also be modified at each frame using Inverse Kinematics. The Cyclic Coordinate Descent (CCD) algorithm was used for the IK functionality.
When two animations are loaded into the player, they can be blended together using multiple options. The user can specify the exact frames where the blending should take place in each original animation, and also the number of frames the blend should last for. The user also indicates whether the blending interpolation method should be cubic, SLERP, or SQUAD. After the blend is complete, the result animation will be a smooth composition of the original two animations without any sudden jumps or snapping between frames.