CSE 169: Computer Animation

Winter 2005



Steve Rotenberg (steve@graphics.ucsd.edu)

Office: Tuesday & Thursday, 5:00 pm – 6:00 pm, (AP&M 2337)


Nick Gebbie (ventare@redtoast.net)

Lab Hours: Monday & Tuesday, 2:00 pm – 6:00 pm (AP&M 2444)

Section: Wednesday, 11:00 am – 12:20 pm (WLH 2204)


Cameron Chrisman (cchrisman@cs.ucsd.edu)

Lab Hours: Tuesday & Thursday, 12:00 pm – 2:30 pm (AP&M 2444)


Time: Tues & Thurs, 6:30 pm – 7:50 pm

Location: Warren Lecture Hall 2204


Lab: AP&M 2444


            The final will be Friday, March 18, 7:00pm-10:00pm in WLH 2204

Required Reading

Chapter 2: Skeletons

Chapter 3: Skin


Pose Space Deformation            (download the .pdf version at the upper right)

Surface Oriented Free Form Deformations

A Survey of Facial Modeling and Animation Techniques

Inverse Kinematics


There are no required textbooks. Several papers will be required reading and will be added to this list throughout the quarter.

Optional Reading     

For an introduction to both computer graphics and OpenGL, I suggest:

“3D Computer Graphics: A Mathematical Introduction with OpenGL”, S. Buss


For a non-mathematical introduction to OpenGL:

            “OpenGL Programming Guide”, Woo


For a good book on C++ software architecture:

            “Large Scale C++ Software Design”, Lakos


An older computer graphics book, but one of very few that talks about animation:

            “Advanced Animation and Rendering Techniques”, Watt & Watt

Course Objective

This advanced graphics class focuses on the programming techniques involved in computer animation. Algorithms and approaches for both character animation and physically based animation will be covered. Particular subjects may include skeletons, skinning, keyframing, facial animation, inverse kinematics, locomotion, motion capture, video game animation, particle systems, rigid bodies, clothing, hair, and other techniques. A good understanding of linear algebra and computer graphics is essential and CSE167 or approval from the instructor is required.

Lecture Schedule

Here is a rough outline of the course. This will be updated throughout the quarter with any changes.


  1. Introduction
  2. Linear Algebra Review
  3. Skeletons
  4. Quaternions
  5. Skinning
  6. Facial Expressions & Rigging
  7. Advanced Skinning
  8. Cubic Curves
  9. Channels & Keyframes
  10. Midterm
  11. Animation State Machines & Blending
  12. Inverse Kinematics 1
  13. Inverse Kinematics 2
  14. Locomotion
  15. Particle Systems
  16. Cloth Simulation
  17. Collision Detection
  18. Rigid Body Physics
  19. Special Topic
  20. Review

Programming Projects

There will be four programming projects, due at the beginnings of week 3, 5, 7and 10.


Some (very) basic C++/OpenGL graphics code will be provided to get some of the simple stuff out of the way, but students are allowed to use a different graphics API and/or object oriented programming language if they prefer.


Project 1: Due Beginning of Week 3 (6:00 pm on Thursday, 1/20/04)

- Skeleton Hierarchy: Load a .skel file and display a 3D pose-able skeleton.


Project 2: Due Beginning of Week 5 (6:00 pm on Tuesday, 2/1/04)

- Skin: Load .skin file and attach to the skeleton from project 1.


Project 3: Due Beginning of Week 7 (6:00 pm on Tuesday, 2/15/04)

- Animation: Load an .anim file and play back a key-framed animation on a skinned character


Project 4: Due Beginning of Week 10 (6:00 pm on Tuesday, 3/8/04)

Choose one of the following:

- Cloth: Implement a cloth simulation

- Fancy Particle System: Implement a particle system with collision detection and some fancy forces

- Inverse Kinematics: Implement Jacobian IK algorithm on a chain of bones in the skeleton

- Locomotion: Implement multi-legged locomotion using the simple analytical IK scheme

- Rigid Bodies: Implement a simple rigid body system with collisions

- Choose your own project (please discuss it with me first!)

Turning in Projects

Projects must be shown to the professor or the TA’s either on one of the lab computers or on a student laptop.


This class is for 4 units and grading will be based on programming projects plus a midterm and a final.


Project 1:            15%

Project 2:            15%

Project 3:            15%

Project 4:            20%

Midterm:             15%

Final:                   20%

Sample Code

Some basic C++/OpenGL code is provided to get you started. The example is a simple object oriented spinning cube.