Latest news

  • Posted a minimal example code for 3D points bouncing around in a box under gravity, using OpenGL and GLUT (see Resources below). (Jan 27, 2014)
  • Posted a latex template for paper reviews. First review due Jan 19, 10pm as a PDF via email. (Jan 15, 2014)
  • Lecture 3 notes posted. (Jan 14, 2014).
  • Lecture 2 notes posted, and updated schedule posted. Added link to the SIGGRAPH review form below. (Jan 9, 2014) - Please email with your paper choice preferences, from among the corresponding topic.
  • Lecture 1 notes posted (Jan 7, 2014) - Please email your top 3 choices for first round presentation slots, choosing from Jan 16, 21, 23, 28, or 30.

Summary

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 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 require implementing a simulation technique for the physical phenomena of your choice. There may also be a small number of lectures to supplement the paper presentations/discussions.

Course Goals:

  • Develop familiarity with a range of techniques in physics-based animation, sufficient to begin pursuing research in the area.
  • Implement a new or existing technique for physics-based animation of some phenomenon.
  • Build experience reading and evaluating papers and giving technical presentations.

Administrative Details

Time/Location: Tues/Thurs at 10am in DC 3313, starting January 7, 2014
Instructor: Christopher Batty
Office: DC 3605
E-mail: christopher.batty@uwaterloo.ca
Office hours: By appointment
Course web page: http://www.cs.uwaterloo.ca/~c2batty/courses/CS888_2014/

Grade Breakdown:

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

Course Project

In order to delve further into one aspect of physics-based animation, a core component of the course will be a term project that examines a simulation method for a particular physical problem. The project could be an implementation of an existing technique/paper, 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) extensions to an existing piece of software (e.g., Bullet [rigid bodies, deformables], VegaFEM [deformables], ArcSIM [cloth], MantaFlow [smoke,water], etc.) Either a fast, interactive technique or a more expensive, off-line technique are reasonable choices. 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, summarizing project goals and scope, and outlining relevant references. 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: Wed, April 16

Paper Presentations

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 analyzing 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.

Paper Reviews

You should choose one paper from each week's schedule to submit a review for. Reviews will be due Sunday at 10pm prior to the week in which the paper will discussed.
Reviews will be done approximately SIGGRAPH review format. For consistency, please prepare your review in PDF form using the follow LaTeX review template. Waterloo's Keshav offers some useful strategies for paper reading here.

Prerequisites

Enthusiasm for simulation and computer graphics is paramount, but linear algebra and 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 would also be helpful (e.g. CS770/CS778). I provide some additional resource materials below.

Schedule and Papers List

I will provide 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.)

Resources

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 Visual Studio 2012 Express with 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 slow / 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 library for math and linear algebra that is quite popular in the graphics community is Eigen.

Extra Reading Material

There is no textbook for the course, however listed below are a few freely available online resources related to simulation in graphics, which may provide useful background.
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.