SummaryComputational 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:
Administrative DetailsTime/Location: Tues/Thurs at 10am in DC 3313, starting January 7, 2014
Instructor: Christopher Batty
Office: DC 3605
Office hours: By appointment
Course web page: http://www.cs.uwaterloo.ca/~c2batty/courses/CS888_2014/
Course ProjectIn 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 PresentationsOver 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 ReviewsYou 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.
PrerequisitesEnthusiasm 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 ListI 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.)
ResourcesYou 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 MaterialThere 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.