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: DC3313, 2:30pm-3:50pm Monday/Wednesday, starting January 4, 2016.
Instructor: Christopher Batty
Office: DC 3605
Office hours: By appointment
Course web page: http://www.cs.uwaterloo.ca/~c2batty/courses/CS888_2016/
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).
Course ProjectIn 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 DiscussionsOver 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 ReviewsYou 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!)
PrerequisitesEnthusiasm 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 ListI 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.)
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 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 MaterialThere is no formal textbook for the course. The library has a few relevant books you may find it useful to consult for your project: