Latest news

  • Future news items will be posted to Piazza, so be sure to sign up.
  • Tentative schedule and papers list is available. (Jan 4, 2016).
  • Created the 2016 edition of the website. (Nov 12, 2015)
  • Set up the Piazza page - sign up link (Dec 7, 2015).


Computational modeling and simulation of physical systems has become an indispensable tool in the generation of both realistic and fantastic animations for modern visual effects films and computer games, from Angry Birds to Avatar, from Ratatouille to World of Goo. This seminar-style course will consist primarily of paper presentations and discussions, and will consider key papers encompassing a variety of topics, potentially including:
  • Particle systems
  • Rigid objects
  • Hair and flexible rods
  • Cloth and thin shells
  • Flesh and general deformable materials
  • Fracture and tearing
  • Smoke and fire
  • Liquids
  • Collision processing
Along the way, we will encounter and make use of a variety of numerical, computational, and geometric techniques and tools, such as time integration, finite difference/volume/element methods, constrained optimization, continuum mechanics, level set methods, triangle meshes, and so on. The course will be structured in the style of a seminar: students will take turns presenting papers, followed by a group discussion of the relative merits of the paper in question. Students are expected to read each paper, and submit a short summary/review of one paper per week. There will also be a course project, which will give you the opportunity to dive in and implement a simulation technique for the physical phenomena of your choice. There will also be a small number of traditional lectures to supplement the paper presentations/discussions.

Course Goals:

  • Develop familiarity with a range of techniques and tools in physics-based animation sufficient to begin pursuing research in this area.
  • Implement a technique for physics-based animation of some phenomenon, based on published research.
  • Build experience reading and evaluating papers and giving technical presentations.
  • Have fun!

Administrative Details

Time/Location: DC3313, 2:30pm-3:50pm Monday/Wednesday, starting January 4, 2016.
Instructor: Christopher Batty
Office: DC 3605
Office hours: By appointment
Course web page:
Piazza forum: Sign-up link, Course forum link

Course-related news and discussions will be communicated/managed via Piazza, so please sign up and follow along.
LEARN will be used just for marks and submission of assignments (i.e., paper reviews and project materials).

Grade Breakdown:

  • Course project: 40%
  • Paper Presentations: 25%
  • Paper Reviews: 20%
  • Participation/Discussion: 15%

Course Project

In order to delve deeply into one aspect of physics-based animation, a core component of the course will be a term project that involves developing a simulation method for a particular physical problem. The project could be an implementation of one or more existing techniques/papers, or it could be a novel technique or extension proposed by the student(s). You may develop a stand-alone code, or a (non-trivial) extension to an existing piece of software (e.g., Bullet [rigid bodies, deformables], VegaFEM [deformables], ArcSIM [cloth], MantaFlow [smoke,water], etc.) Either a high-quality off-line technique or a fast interactive technique are reasonable choices. Depending on the complexity of the topic, you may choose to do only a 2D or a 3D implementation (sometimes doing both is useful for learning/debugging).

Projects may be done individually or in pairs; an exception for larger groups may be made if there is a compelling reason. A short written proposal will be due fairly early in the semester, broadly summarizing project goals and scope, and outlining relevant references. You should also consider making an appointment with me to discuss your intended project before submitting the proposal. A final report describing the outcomes of the project will be due at the end of the term (maximum ten pages). The writeup should be prepared with LaTeX using the ACM SIGGRAPH style. The report should be accompanied by a video or animation demonstrating the results of the project. The final class or two will be dedicated to short presentations and demonstrations of the projects.
Final due date for writeup, demo video, and code: April 15, 2016.

If you are particularly keen and pursue a project with sufficient novelty, you should discuss with me and consider submitting it to the Symposium on Computer Animation (Zurich in July, deadline March 31) or SIGGRAPH Asia (Macau in December, deadline likely in late May).

Paper Presentations and Discussions

Over the course of the term, students will give a few (1-3) technical presentations (depending on enrolment), clearly describing the proposed technique and the novel contributions of the paper, and discussing the paper's strengths and weakness. The presenter should carry out sufficient background reading to understand the method in reasonable detail, answer questions, and be able to lead the group discussion. If you need help with any elements of the paper, please contact me (sufficiently in advance of your presentation!) and we can arrange to talk about it.
On days when it is not your turn to present, you are still expected to read the paper, and to participate in a discussion about it after the presentation.

Paper Reviews

You should choose one paper from each week's schedule to submit a review for. Reviews will be due Sunday at 5pm prior to the week in which the paper will discussed.
Reviews will be done roughly following the SIGGRAPH review format that is used to evaluate actual SIGGRAPH submissions. For consistency, please prepare your review in PDF form using the follow LaTeX review template. You should particularly focus on the "Explanation of Rating" section, wherein you will analyze the pros/cons of the paper. Waterloo's own Keshav offers some useful strategies for paper reading here. As you read the paper, you should aim to be thorough and critical, but not necessarily negative; it can be just as important to properly recognize the merits of a paper as to identify its shortcomings. Also, bear in mind that papers can be evaluated from many points of view, and with different goals in mind (for example, the graphics seminar at Columbia explicitly asks students to take on different roles. We won't do this, but it is useful to consider!)


Enthusiasm for computer graphics and simulation is paramount, but linear algebra and vector calculus are also required. Experience with both numerical computing (e.g. CS370/371, CS475) and computer graphics (e.g., CS488) are strongly recommended. Familiarity with numerical methods for ODE/PDE can also be helpful (e.g. CS770/CS778). I provide some additional resource materials below.

Schedule and Papers List

I have provided a rough schedule and list of papers, and we will decide in the first session or so who will be presenting what and when. (If there is a relevant paper that you are keen on but which is absent from the list, we can discuss whether presenting it makes sense.)


You are welcome to build your project using any graphics and/or user interface libraries you would prefer. Since the focus of the course is on simulation, as opposed to rendering or UI design, and some of you may be less familiar with such tools, I've provided some barebones starter code that may be useful. This zip file contains C++ code for a simple animation scenario of spheres bouncing around inside a box, relying on OpenGL and GLUT for rendering. It allows for simple camera manipulation using the mouse (pan, zoom, rotation), by holding shift, pressing one of the three mouse buttons, and dragging. It also supports dumping of numbered screenshots to disk, which can then be assembled into a movie via ffmpeg, mencoder, or QuickTime Pro (the last is non-free). I have tested the code with a previous version of Visual Studio using the FreeGlut library, but barring minor glitches it should be fairly platform independent.
Of course, you will still need to possess or develop a basic understanding of OpenGL in order to extend this code for your project, if you choose to do so. For / off-line simulations you may want to have one command-line executable that runs the simulation and writes out data (meshes, point positions, etc.) to disk, and a separate interactive application to load, view, and manipulate this data after the simulation has completed.

A useful library for math and numerical linear algebra that is quite popular in the graphics community is Eigen.

Extra Reading Material

There is no formal textbook for the course. The library has a few relevant books you may find it useful to consult for your project:
  • "Game Physics", Davis library.
  • "Fluid Simulation for Computer Graphics", Davis library. (I also have a copy or two that I may be able to lend.)
  • "Real-time collision detection", online through the library. (I also have one copy.)
Listed below are several freely available online resources related to simulation in graphics, which may also provide useful information.
Acknowledgements: The images in the title are drawn from published work by Guendelman et al. 2005, Thuerey et al. 2010, Bergou et al. 2010, Narain et al. 2013, Hong et al. 2007, and Irving et al. 2007.