Assignment #3: Animation with Motion Graphs

  1. Overview:
    Your assignment is to implement motion graphs for human motion synthesis. This is useful for animating and controlling a full-body human character. We provide you with a motion capture data viewer, which can load and visualize human skeleton and motion data (.asf and .amc). You can download motion capture data from an online motion capture database (
  1. Requirements:
    Your task is implement one of the motion graphs paper ( I suggest this paper for its simplicity):

-Load the motion database. (15 points)

-Compute the frame similarity and construct a motion graph. (25 points)

-Prune the graph to reduce the storage space. (10 points).

-Synthesize animation by randomly walking on the graph. You algorithm should be capable to create a smooth animation with an infinite length. (20 points).

-Create an animation that achieves a goal specified by the user. Your algorithm should demonstrate similar results shown in the following figure. We will be testing your code on different sketched paths. (30 points).

Hand in:

  • Your code and documentation of how to run it.
  • Show a demo in the class.
  1. Source code structure and description:

To help you finish your homework, we provide you skeleton code:

The program uses OpenGL library to visualize motion capture data (.asf and .amc files). It also uses the FLTK library ( ) for interface programming. The sample test motion files are put in the “Test Data” sub directory. You can download more mocap data files from the CMU online mocap database:

The “instruction.txt” shows you how to compile the code with Microsoft visual studio. The Class “Explain.doc” shows an overview of every C++ class. To know more details of the code, read the comments in the code.

Extra Credit:
Here are some ideas for extra credit.

  • Demonstrate the effectiveness of motion graphs on difference behaviors.
  • Interactive interfaces for online animation control.
  • Anything else that makes controlling a character more intuitive!