CMSC 491/691: Computer Animation

Fall 2017, M/W 1:00-2:15, Performing Arts and Humanities 132

Instructor: Dr. Adam Bargteil <>
ITE 341; Office Hours: M/W 2:30-3:30

Piazza Discussion Site

Prerequisite: MATH 221 (Linear Algebra), CMSC 341 (Data Structures), C/C++ programming experience
(Yes, we will make heavy use of the prerequisites)


Description: This class focuses on the programming techniques involved in computer animation. Algorithms and approaches for both character animation and physics-based animation will be covered. Particular subjects may include skeletons, skinning, key framing, facial animation, inverse kinematics, locomotion, motion capture, video game animation, particle systems, rigid bodies, clothing, hair, and other techniques.


  1. Understand the foundations of computer animation: keyframing and interpolation, kinematic chains and inverse kinematics, skinning, and physics-based animation.
  2. Implement key components of animation pipelines, including keyframe interpolation, forward and inverse kinematics, skinning, and basic physics-based animation.
  3. Become acquainted with some advanced topics in computer animation; these might include motion capture, motion editiing, physics-based characters and controllers, finite element methods, finite difference methods, numerical integration, etc.

Grades: Grades will be based on programming assignments (75%) and midterm and final exams (25%). More specifically, there will be six (6) programming assignments and two (2) take home exams, all worth 125 points, extra credit options will be provided. Students in 491 will be graded out of 1000 points, students in 691 will be graded out of 1250 points. So, to get an "A" students in 691 will have to do some of the extra credit options.

Assignments: Programming assignments require the use of the C/C++ programming language. These assignments may be time-consuming. START EARLY! A tentative list is given below:

Assignment Description Due Date
Assignment 1 Kinematic Chains Sep 18. 2017
Assignment 2 Inverse Kinematics Oct 02, 2017
Assignment 3 Skinning Oct 16, 2017
MIDTERM EXAM Oct 24, 2017
Assignment 4 Spring Mass Systems Nov 06, 2017
Assignment 5 Fluids I Nov 21, 2017
Assignment 6 Fluids II Dec 12, 2017
FINAL EXAM Dec 20, 2017

Students taking the course for graduate credit (i.e. CMSC 691) will be expected to do extra readings and extra parts on each assignment.

Late Policy

Assignments are to be submitted electronically by 11:59 PM on Sunday the week listed. Late assignments will penalized with a multiplier in the range [0,1) depending on how late they are. Assignments received before the deadline have a multiplier of 1. For each hour late (or portion thereof) in the first 24 hours, the multiplier is decremented by 0.005. For hours 24-48, the multiplier is decremented by .01 for each hour. For hours 48-72, the multiplier is decremented by .02 per hour. After 72 hours, the multiplier is decremented by .04 per hour. After 76 hours, the multiplier reaches 0.

Academic Honesty

By enrolling in this course, each student assumes the responsibilities of an active participant in UMBC's scholarly community in which everyone's academic work and behavior are held to the highest standards of honesty. Cheating, fabrication, plagiarism, and helping others to commit these acts are all forms of academic dishonesty, and they are wrong.

All assignments and exams in the course are expected to be your INDIVIDUAL work. You area allowed to discuss programming assignments, but must do the coding yourself: words and math are OK, code is not. Any help you receive must be documented. At the beginning of the readme.txt submitted with each assignment, you must include a statement indicating the sources you used while working on it (excluding course staff and text) and the type of help you received from each. If you received no help, say so. Failure to include this statement with your assignment will result in your program being returned ungraded. For example, "I discussed the algorithms for this project with my study group, including student X and student Y. I also found some helpful descriptions on"

Tentative Schedule

Required reading from the book should be completed BEFORE the first date listed below for maximum benefit

Date Topic Computer Animation Due
Aug 30 Introduction and Overview; Kinematic Chains  
Sep 6 Kinematic Hierarchies and Forward Kinematics 5  
Sep 11/13 Inverse Kinematics 5 Assignment 1
Sep 18/20 Keyframing and Interpolation
Representing and Interpolating Orientations
Sep 25/27 Kinematic Hierarchies and Forward Kinematics 5 Assignment 2
Oct 2/4 Skinning 5
Oct 9/11 Motion Capture, Simulation, and Optimization 6 Assignment 3
Oct 16/18 Physics-based Animation Midterm Exam
Oct 23/25 Solids  
Oct 30 / Nov 1 Finite Element Methods Assignment 4
Nov 6/8 Fluids
Nov 13/15 Fluids Assignment 5
Nov 20/22 Rigid Bodies
Nov 27/29 Rigid Body Simulation
Dec 4/6  
Dec 11 Assignment 6
Dec 20 FINAL EXAM 1:00-3:00


There is a class web page, (or 691), where you will find this syllabus online, except you can follow all of the links. Important announcements and updates will be made to this class web page throughout the semester. I will announce at the beginning of class if I make a significant change or addition.

There is a class piazza site for this class. Everyone will be added to this site Announcements will be made there, and you can also use it for public communication with your classmates, the TA and instructor. You should either check this site periodically, or make sure it is set to send you messages by email. Please only post messages appropriate for the entire class to see. Be sure to send messages about grades or other private matters directly to the instructor or TA.