CSCI 520 Computer Animation and Simulation
Spring 2015

Spring 2015, Monday and Wednesday, 2:00-3:20, MHP 105

Instructor: Jernej Barbic
Office: SAL 240
Office hours: Wednesday 3:45 - 4:45   
Email: jnb@usc.edu

TA: Yijing Li
Office: SAL cluster
Office hours: Tue 1-3pm
Email: yijingl@usc.edu

Grader: Bohan Wang, bohanwan@usc.edu

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 12 2015

Overview of computer animation and simulation

Course slides
Wed Jan 14

Overview of computer animation and simulation

Mon Jan 19 No class (Martin Luther King Day)
Wed Jan 21 Primer on numerical simulation and linear algebra for graphics D. Baraff and A. Witkin: Physically Based Modeling, course notes, SIGGRAPH 2001 Assignment 1 out
Mon Jan 26

OpenGL Red Book, Chapters 1-3

CMU slides on OpenGL

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

Wed Jan 28

OpenGL Red Book, Chapters 4 (Color), 5 (Lighting), 9 (Texture Mapping)

CMU slides on OpenGL shading CMU slides on texture mapping
Mon Feb 2

Structured deformable objects: cloth

Slides (thanks to Andy Pierce, USC REU)

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

Wed Feb 4

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)

S. Capell, S. Green, B. Curless, T. Duchamp, Z. Popovic: Interactive Skeleton-Driven Dynamic Deformations, SIGGRAPH 2002

Mon Feb 9

Rigid body dynamics

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

Lecture slides

Assignment 1 due
Mon Feb 16 No class (President's Day)
Wed Feb 18

Motion capture

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

Assignment 2 out

Mon Feb 23 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 25 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

Mon Mar 2 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 Mar 4 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 9 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 11 Maya

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

Autodesk: The Art of Maya

The Maya scene used in class.

Assignment 2 due
Mon Mar 16 No class (spring break)
Wed Mar 18 No class (spring break)
Mon Mar 23 Maya

Wed Mar 25

Constraints and contact

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

Collision detection

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

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

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

Wed Apr 1

Guest Lecture: TBA

Mon Apr 6

Haptics

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

Wed Apr 8

Sound simulation

J. O'Brien, C. Shen, and C. Gatchalian: Synthesizing Sounds from Rigid-Body Simulations, SCA 2002
Mon Apr 13

Fluids (Navier-Stokes)

J. Stam: Stable Fluids, SIGGRAPH 1999

Stable Fluids presentation

Wed Apr 15 Catch-up day

Catch-up day

Assignment 3 due
Mon Apr 20

Simulation on programmable graphics hardware (GPUs)

Slides on shaders and GPUs
C. Everitt: OpenGL ARB Vertex Program, E. Hart: OpenGL ARB Fragment Program, Game Developers Conference 2003
L. Wei: A Crash Course on Programmable Graphics Hardware   GP-GPU Tutorial
OpenGL API OpenGL Shading Language Sample Code & Tutorials   Cg (Nvidia)

Wed Apr 22

Simulation on programmable graphics hardware (CUDA)

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

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

Mon Apr 27

Case study: Havok engine for physics in games

Slides (ppt)

Havok Physics  Open Dynamics Engine (ODE)

Wed Apr 29

Review for exam

Mon May 11 Final exam 2p.m.-4 p.m., MHP 105

Prerequisites

  • A grade of at least B in CS480 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


Readings

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


Assignments

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.


Grading

  • Assignments: 21% each (63% total)

  • Final exam: 37%

All assignments must be completed to pass the course. The assignments will have a small amount of extra credit.

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, https://scampus.usc.edu/1100-behavior-violating-university-standards-and-appropriate-sanctions/. Other forms of academic dishonesty are equally unacceptable. See additional information in SCampus and university policies on scientific misconduct, http://policy.usc.edu/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 http://equity.usc.edu/ or to the Department of Public Safety http://capsnet.usc.edu/department/department-public-safety/online-forms/contact-us. 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 http://www.usc.edu/student-affairs/cwm/ provides 24/7 confidential support, and the sexual assault resource center webpage sarc@usc.edu 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 http://dornsife.usc.edu/ali, which sponsors courses and workshops specifically for international graduate students. The Office of Disability Services and Programs http://sait.usc.edu/academicsupport/centerprograms/dsp/home_index.html 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 http://emergency.usc.edu/will 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.