bio projects contact
computer graphics
computer graphics


_______________ Various Animation Projects______________Physically-Based Walk Cycle_


Project: 2D Robot Arm Simulation

2D Inverse Kinematics: implemented in C++ the behaviour of four different inverse kinematics techniques in an interactive setting on a 10‐link robot "arm":
(1) Cyclic Coordinate Descent IK, base‐to‐tip order

(2) Cyclic Coordinate Descent IK, tip‐to‐base order

(3) Jacobian Transpose IK
(4) Jacobian Pseudoinverse IK

Software: Implemented in Visual Studio C++ using OpenGL API.

Goal: User moves the target square box and the arm moves towards the target as close as possible, user can toggle between the four different techniques to see the difference in behaviour. In my experiment, the Jacobian Transpose IK worked the best, due mostly to its simplicity of updating the joint angles.

robot arm

Jacobian Pseudoinverse IK Code Snippet:PI

Jacobian Transpose IK Code Snippet: Helper functions: computing the jacobian and updating the hierarchy of joints using matrix transformations [ R | t ]


Project: Catmull-Rom Splines

Implemented a basic OpenGL program that demonstrates the use of Catmull‐Rom Splines to control the 3D movement of a ball through a simple scene, control points are read in from a text file. The demonstration alternates between two forms of playback, the first, linearly advances the curve parameter over time, and the second has the ball move at a true constant velocity using Arc‐Length Re-timing.

Software: Implemented in Visual Studio C++ using OpenGL API.

Project: Motion Graph

Created a motion graph sequence that demonstrates various locomotive transitions by using the CMU motion capture library (mocap.cs.cmu.edu) which was then read by a MocapPlayer. Project required browsing the motion capture library and finding appropriate motion files in subject areas and creating a sequence for a provided MocapPlayer to read. Once motion clips were chosen, needed to assemble a play.txt file for the MocapPlayer to read by loading, identifying and parsing the frames of each motion clip within the motion data in order to play an ordered set of these motions.

Challenge: Because the MocapPlayer does not implement motion re-targeting between motion clips, the resulting motion can exhibit artifacts and in order to obtain smooth transitions between clips to keep the appearance of one smooth contiguous sequence, I needed to minimize artifacts between skeletons and achieve as much seamlessness between motion clips as possible. In order to avoid large visual discontinuities by carefully choosing motion clips and controlling which transitions are allowed, such as identifying a subset of motion capture files from the library that contain similar motions for sequencing. This required testing different transitions since some motions from the library exhibited foot-skate or other artifacts due to the different skeleton dimensions between capture subjects, it required to find motions from subjects which were better matched with my chosen skeletons.