Assignment 1: Motion Editing
Release Date: Thursday, January 24, 2013
Due Date: Thursday, February 7, 2013, 11:59pm
Grade Value: 15%


Timing of a motion is one of the most important elements in animation. It affects both physical and emotional meaning of the movement. Timing can give the illusion of weight and size of an object, as well as the emotional state of a character. For example, if a character pushes forward a heavy object, he should do it much slower than pushing a light object. Animators must figure out a good timing for the anticipation of an action, the action itself, and the reaction to the action.

Walking is an interesting motion; no two people in the world walk the same. By watching a person's walk, you can interpret a massive amount of information right away. Is he old or young? Is he happy or sad? What is his financial position?

In this assignment, your goal is to make a basic walk cycle animation more expressive in two different ways:
1. Using the Motion Capture code base
2. Using Maya

You need to think about how to add characteristics or emotions to the character by editing its motion. At the same time, it is very important to familiarize yourself with ASF/AMC files as well as the viewer code base for next project.


Your handin directory is at /afs/ You should provide:

*You may choose to work in a group of two. If you do, your group needs to submit two videos using edited motion capture data, and two videos using Maya. Each of them should edit different aspects of the motion. For example, one edit could focus primarily on timing, and the other edit should explore changes to the arm swing or general upper body style.

You should be prepared to give a 10 minute presentation of your project, as you will be randomly selected to demo/discuss at least 1 of your 3 projects in class during the semester.
Implementation :

1. Motion Capture:

Load .asf/.amc files into your program and try to manipulate the timing and the movement of the character.
Use this ASF file as the skeleton file.
Use this AMC file as the motion file.

(You can also explore and pick your own from the database, but you are required to submit at least one video using this basic walk cycle)
You can choose how you want to edit the motion:

2. Maya:

We will give you a rigged character with a basic walk cycle. You need to figure out how to make the motion more expressive by changing the key frames of the animation. You can work on changing the timing of it or just tweak the motion of the character. We will also provide you an animation guide which you can refer to.

Use this maya file.

Before you open the file, please set Maya to Z-up. (Window->Settings/Preferences->Preferences->Settings, set the up axis to z.)

If you are not familiar with Maya, here is a basic tutorial. You can also click "Help"->"Maya Help" for more thorough documentation.

You can also look at the Lynda tutorials that CMU provides for free. Maya Essentials 1: Interface and Organization and Maya Essentials 5: Animation Tools should be useful for this assignment.


This project will be graded on the visual output of your animation, your report slides/website, as well as your presentation if you are selected to demo your project. You want to spend appropriate amount of time adjusting your animation to get a good result.


You might want to observe how people walk by watching them. You can also pay attention to how your own body moves while you are walking.

There are 4 important areas you might want to tweak first: the arms, the hip sway, the knees and the feet.

You may want to think about the following questions:

Using the Motion Capture Code Base:

Compiling the code:

If you want to use the amc viewer code as your starter code, you can get it here:


Use the Visual Studio 2010 solution file provided in the ide/VS2010 directory. All the dependencies should be provided with the project zip file.


You need to have the SDL library installed. There are two ways to install SDL if you don't have it.
1. Install homebrew by following directions on and type "brew install sdl" in the terminal.
2. Download it from and install it manually.

Then the code can be compiled using ftjam, which can also be done in two ways:
1. If you installed homebrew, "brew install ftjam". You do not need to copy anything in this case.
2. Download the source code from Extract it, run "make" from the terminal inside the directory, then copy bin.unix/jam into the project's top-level directory.

Finally, run "jam" or "./jam" inside the top-level project directory to compile the code.


This code can be compiled using ftjam, which is available from:
Extract it and put it in your project's top-level directory, then run "./jam" to compile the code.

If you are running the code from afs, and it does not link the first time, you may need to change your ld path variable:
"% export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64".

Running the code:

By default, the the viewer expects a "Skeleton.ASF" file with the AMC file in the "dist/data" directory, but you can specify a different path if you like.
A simple camera control is provided. Use the left mouse button to rotate, middle mouse button to zoom in/out, and the right mouse button to pan the camera.
Space bar can be used to Play/Play in slow motion/Pause. Tab key can be used to toggle the camera movement.

Using the code:

Motion Capture File Format:

The code base will read and display motion-captured data for you, but understanding the file format (.asf and .amc) is still very useful. The world coordinate system is Y up. The skeleton file (.asf) describes how the bones are connected, their degrees of freedom, their local coordinate system, etc. while the motion file (.amc) describes each bone's rotation angles relative to the bone's local coordinate system at each time step.

In an ASF file, each bone is described as following:

The parent-child relationship of the skeleton is defined in the ":hierarchy" section of the ASF file. Each line lists the parent, and then its children. For example:
"root lhipjoint rhipjoint lowerback"
Root is a parent and lhipjoint, rhipjoint, lowerback are root's children.
The following picture shows the skeleton hierarchy defined in ASF file.

Video Recording:

Videos can be implemented in several ways. You can use the frame dumper (FrameDumper.hpp, FrameDumper.cpp in "Graphics" directory) in the code base by adding a hotkey to your program. These frames can be coalesced into a movie using software packages (ImageMagick and ffmpeg on Linux, Quicktime Pro on Mac, and VirtualDub on Windows). You can also use screen capture programs to record your videos.

Last Modified: 02/11/13