CSCI 520 Computer Animation and Simulation
Spring 2024

Spring 2024, Monday and Wednesday, 2:00-3:50, SSL 202

Instructor: Jernej Barbic
Office: SAL 240
Office hours: Wednesday 4:00 - 5:00   

TA: Mianlun Zheng
Office hours: Tue 3-5pm, TBA
Grader: Yuxin Zhou,

Introduction and Purposes

This course introduces students to computer animation and related simulation techniques, as applicable to computer games, virtual reality systems, and film special effects. Efficient numerical methods for simulating a variety of visually interesting physical phenomena will be discussed in the context of both interactive and offline simulation. Topics include deformable objects (solids, cloth), fluids, character rigging, quaternions, inverse kinematics, motion capture, sound simulation, collision detection, haptics, rigid body dynamics, and GPU programming.

Schedule | Prerequisites | Readings | Assignments | Grading | Class participation | Academic Integrity

Date Topic Reading, slides, and other material Notes
Mon Jan 8 2024

Overview of computer animation and simulation

Course slides
Wed Jan 10

Overview of computer animation and simulation

Mon Jan 15 No class (Martin Luther King Day)
Wed Jan 17 Primer on numerical simulation and linear algebra for graphics D. Baraff and A. Witkin:

Physically Based Modeling, course notes, SIGGRAPH 2001

Mon Jan 22

Helper slides for hw1 (jello cube) | 6X-BW

OpenGL "Hello world" application (with GLUT)    Makefile (Mac OS X)

The official guide to learning OpenGL | CMU slides on OpenGL | CMU slides on OpenGL shading | CMU slides on texture mapping

Wed Jan 24

Structured deformable objects: cloth

Slides (thanks to Andy Pierce, USC REU)

D. Baraff and A. Witkin: Large steps in cloth simulation, SIGGRAPH 1998

Assignment 1 out
Mon Jan 29

Structured deformable objects: FEM

M. Mueller and M. Gros: Interactive virtual materials, Graphics Interface 2004

J. Barbic: Real-time Reduced Large-Deformation Models and Distributed Contact for Computer Graphics and Haptics , PhD thesis, 2007 (pages 33-42)

M. Mueller and co-organizers: Real-time physics, course notes, SIGGRAPH 2008 (pages 43-51)

Theodore Kim, David Eberle: Dynamic Deformables, Implementation and Production Practicalities, course notes, SIGGRAPH 2020

Wed Jan 31

Rigid body dynamics

D. Baraff and A. Witkin: Physically Based Modeling, course notes (the chapter on Rigid Body Dynamics), SIGGRAPH 2001
Mon Feb 5 Keyframe Animation

Lecture slides

Wed Feb 7

Motion capture

Motion capture slides

Jessica Hodgins's slides on motion capture

J. Lee, J. Chai, P. Reitsma, J. Hodgins, N. Pollard: Interactive Control of Avatars Animated with Human Motion Data, SIGGRAPH 2002

J. Barbic, A. Safonova, J. Pan, C. Faloutsos, J. Hodgins, N. Pollard: Segmenting Motion Capture Data into Distinct Behaviors, Graphics Interface, 2004

Mon Feb 12 Quaternions

Course slides | version for printing

Ken Shoemake: Animating rotation with quaternion curves, SIGGRAPH 1985

Alan H. Barr, Bena Currin, Steven Gabriel, John F. Hughes: Smooth interpolation of orientations with angular velocity constraints using quaternions, SIGGRAPH 1992

Wed Feb 14 Inverse Kinematics

Rick Parent's slides on Inverse Kinematics

Chris Welman: Inverse Kinematics and Geometric Constraints for Articulated Figure Manipulation, M.S. Thesis, Simon Fraser University, 1993

Assignment 1 due
Assignment 2 out
Mon Feb 19 No class (President's Day)
Wed Feb 21

Catch-up day

Mon Feb 26 Character Rigging
Ladislav Kavan, Steven Collins, Jiří Žára, Carol O’Sullivan: Geometric Skinning with Approximate Dual Quaternion Blending, ACM Transaction on Graphics, 27(4), 2008
Wed Feb 28 Facial Animation

Ming Lin's course slides on facial animation    Digital Emily video    Video on paired muscles

Jun-yong Noh, Ulrich Neumann: A Survey of Facial Modeling and Animation Techniques, University of Southern California

E. Sifakis, I. Neverov and R. Fedkiw: Automatic Determination of Facial Muscle Activations from Sparse Motion Capture Marker Data, SIGGRAPH 2005

Mon Mar 4 Crowd Animation

Craig W. Reynolds: Flocks, herds and schools: A distributed behavioral model, SIGGRAPH 1987.
SIGGRAPH 1997 course notes     A pseudocode implementation

Matt Anderson, Eric McDaniel and Stephen Chenney: Constrained Animation of Flocks, Symposium on Computer Animation 2003

Crowd research at UNC

Course slides on crowd animation, Ohio State University

Wed Mar 6 Maya

Maya tutorials at (free of charge access for USC students).

Autodesk: The Art of Maya

The Maya scene used in class.

Assignment 2 due
Mon Mar 18 Maya

Wed Mar 20

Constraints and contact

D. Baraff and A. Witkin: Physically Based Modeling, course notes (the chapters "Constrained Dynamics" and "Collision and Contact"), SIGGRAPH 2001
Mon Mar 25

Inverse Kinematics homework (theory and implementation)

Eigen example 1     Eigen example 2     Eigen example 3 Assignment 3 out
Wed Mar 27

Collision detection

Ming Lin's course slides used in class

Doug James's course slides used in class

Ming Lin's course slides on collision detection     Collision detection at UNC, Chapel Hill

Christer Ericson: Real-Time Collision Detection (The Morgan Kaufmann Series in Interactive 3-D Technology).
Accompagnying website to the book.

The Gilbert-Johnson-Keerthi Algorithm

Ming Lin's course slides on bounding volume hierarchies and spatial partitioning

S. Gottschalk, M. Lin, D. Manocha: OBB-Tree: A Hierarchical Structure for Rapid Interference Detection, SIGGRAPH 1996

S. Quinlan: Efficient Distance Computation between Non-Convex Objects, ICRA 1994

Mon Apr 1

Catch-up day

Optional Assignment 4 out
Wed Apr 3


F. Conti's haptics slides: Introduction to Haptics

K. Salisbury and F. Conti: Haptic Rendering: Introductory Concepts, IEEE Computer Graphics, 2004 (a survey)

M. Lin and M. Otaduy: Recent Advances in Haptic Rendering & Applications, SIGGRAPH 2005 Course Notes

J. Barbic and D. James: Six-DoF Haptic Rendering of Contact between Geometrically Complex Reduced Deformable Models, IEEE Transactions on Haptics 2008

Mon Apr 8

Fluids (Navier-Stokes)

J. Stam: Stable Fluids, SIGGRAPH 1999

Stable Fluids presentation

Wed Apr 10

Sound simulation

J. O'Brien, C. Shen, and C. Gatchalian: Synthesizing Sounds from Rigid-Body Simulations, SCA 2002
Mon Apr 15 Wildcard lecture: Neural Fields Slides     T. Takikawa, J. Litalien, K. Yin, K. Kreis, C. Loop, D. Nowrouzezahrai, A. Jacobson, M. McGuire, S. Fidler: Neural Geometric Level of Detail: Real-time Rendering with Implicit 3D Shapes Assignment 3 due
Wed Apr 17

Simulation on programmable graphics hardware (CUDA)

Nvidia's CUDA
Trefftz and Wolffe: Tutorial on CUDA | (modified version; used in class)

J. Georgii, R. Westermann: Mass-spring systems on the GPU

Mon Apr 22

Computer Animation Middleware Software

Slides |  Unity  Unreal Engine  Havok Physics  Open Dynamics Engine (ODE)  Vega FEM 

Wed Apr 24

Review for exam

Mon May 6 Final exam 2-3:50pm, KAP 146


  • A grade of at least B in CS420 or CS580, or explicit permission of instructor. If you took a similar course at another university, contact the instructor.
  • Familiarity with calculus, linear algebra, and numerical computation
  • C/C++ programming skills


There is no required textbook. Selected articles and course notes will be made available online.

A good reference on computer animation:

  • Rick Parent: Computer Animation, Second Edition: Algorithms and Techniques, Second edition, Publisher: Morgan Kaufmann, ISBN: 9780125320009

A reference book on OpenGL is recommended for help with the homeworks:

  • Dave Shreiner: OpenGL Programming Guide: The Official Guide to Learning OpenGL, Versions 3.0 and 3.1, Seventh edition, Publisher: Addison-Wesley Professional, ISBN: 9780321552624


There will be three programming homework assignments in C/C++ and OpenGL, related to the material covered in class. Please see the schedule for links to assignments and due dates. All assignments must be done individually.


  • Assignments: 21% each (63% total)

  • Final exam: 37%

All assignments must be completed before the final exam to pass the course. The assignments will have a small amount of extra credit. Students must take the final exam to pass the course.

Late policy: Programming assignments should be turned in by midnight on the day they are due. A total of three late days may be taken during the semester on programming assignments. For example, you can use one late day on the second assignment, and two on the third assignment. All days are counted, including any weekends and holidays, as follows:
Less than 24 hours late = 1 late day, 24-48 hours late = 2 late days, 48-72 hours late = 3 late days, and so on.
The flexibility provided by the late days is intended to get you through the time where all your classes just happen to have assignments due on the same day. Beyond the three late days, there will be a penalty of 10% of the value of the assignment / day. Exceptions will be granted only under most dire circumstances and must be discussed with and approved by the instructor at least one week in advance. Assignment and exam grading may be discussed within three weeks of them being returned to the students.

Academic integrity

All students are expected to maintain the utmost level of academic integrity. Do not copy any parts of any of the assignments from anyone. Do not look at other students' code, papers, assignments or exams. The university policies on academic conduct will be applied rigorously, and the USC Office of Student Judicial Affairs and Community Standards will be notified.

Statement on Academic Conduct and Support Systems

Academic Conduct
Plagiarism - presenting someone else's ideas as your own, either verbatim or recast in your own words, is a serious academic offense with serious consequences. Please familiarize yourself with the discussion of plagiarism in SCampus in Section 11, Behavior Violating University Standards, Other forms of academic dishonesty are equally unacceptable. See additional information in SCampus and university policies on scientific misconduct,

Discrimination, sexual assault, and harassment are not tolerated by the university. You are encouraged to report any incidents to the Office of Equity and Diversity or to the Department of Public Safety This is important for the safety whole USC community. Another member of the university community -- such as a friend, classmate, advisor, or faculty member -- can help initiate the report, or can initiate the report on behalf of another person. The Center for Women and Men provides 24/7 confidential support, and the sexual assault resource center webpage describes reporting options and other resources.

Support Systems
A number of USC's schools provide support for students who need help with scholarly writing. Check with your advisor or program staff to find out more. Students whose primary language is not English should check with the American Language Institute, which sponsors courses and workshops specifically for international graduate students. The Office of Disability Services and Programs provides certification for students with disabilities and helps arrange the relevant accommodations. If an officially declared emergency makes travel to campus infeasible, USC Emergency Information provide safety and other updates, including ways in which instruction will be continued by means of blackboard, teleconferencing, and other technology.

Statement for Students with Disabilities

Any student requesting academic accommodations based on a disability is required to register with Disability Services and Programs (DSP) each semester. A letter of verification for approved accommodations c an be obtained from DSP. Please be sure the letter is delivered to me (or to TA) as early in the semester as possible. DSP is located in STU 301 and is open 8:30 a.m.-5:00 p.m., Monday through Friday. The phone number for DSP is (213) 740-0776.