Physical Simulation and Animation for Computer Graphics
CS 395T (53286)
Tangled © The Walt Disney Company
Course Summary: An increasingly important sub-area of computer graphics is physics-based simulation: such simulations are used by movie studios for creating realistic special effects, game engines like Bullet and ODE, interactive design tools for architecture and 3D printing, tools for studying problems in biology and soft-matter physics, etc. This project-oriented course will introduce you to the key concepts and algorithms for simulating physical systems: starting from the ground up with particle systems and mass-spring networks, we will move on to cover topics such as rigid and elastic bodies, collisions, cloth, and fluids.
Prerequisites: Computer graphics (CS 354, or permission of instructor); comfortable working knowledge of C++. The course is intended for CS students curious about combining CS with physics, but does not assume an existing strong physics background.
Required Textbooks: None.
Assignments and Grading: The course includes five programming projects; the final grade for the course will be computed based on performance on these projects alone. There will be no final exam. Your final grade will include pluses and minuses. The five projects and final grade breakdowns are:
- Universe of Goo (25%): You will implement an interactive 2D application similar to the popular indie game World of Goo. In addition to mass-springs system, in this project you will implement rigid bodies, ropes, several different numerical time integrators, and rudimentary collision response.
Furious Birds 3D (25%): In this project, you will write a program that simulates rigid and deformable bodies stacking and colliding in 3D, as in the popular game Angry Birds.
Goldenthal et al '07
- Virtual Catwalk (25%): This project is focused on cloth simulation, and the interaction of cloth with rigid bodies. You will write a program that predicts how various clothing would look when draped on a moving, virtual mannequin.
- Fun with Fluids (15%): Moving back into 2D, you will put knowledge of grid-based fluid simulation algorithms into practice by implementing an interactive application that allows the user to create currents and vortices in a fluid and visualize the resulting motion.
- Final Project (10%): For the final project, you have free reign to show off the skills you have learned in the course: you might implement one of the topics discussed in lectures that's not covered by the projects above, or substantially expand one of your existing applications, or research and implement an algorithm not covered in class at all.
The first three projects are split into two milestones with separate due dates; each milestone will be worth half of the total project grade (12.5% of the course grade). The second milestone will use and expand on the same code you write for the first milestone.
Please see the schedule below for the due dates of the different project milestones.
With the exception of Fun with Fluids and the final project, each milestone will consist of two components: a technical component, worth 100% of the project grade, where you must implement specific features detailed in the project specification, and an optional creative component, worth up to 15% extra credit, for showing off how to use the features and themes of the project in a flashy, aesthetic, creative, and fun way.
Due Dates, Lateness, and Late Days: Each project milestone is due by 12:29 PM (before class) on the dates listed in the schedule below. Each project specification will include details for how to submit that project. For every day that a milestone is turned in late, rounded up to the nearest day, one letter grade (10%) will be deducted from the total milestone grade.
We all know that sometimes unforeseen events disrupt the best-laid plans: a milestone turns out to take a lot more time than you expected, you have to spend a lot of time studying for an exam in a different course, you need to travel to a conference, etc. Some leniency has therefore been built into the above policy: each student begins the semester with three late days. The first three times a letter grade would be deducted per the above policy, that student loses a late day instead. Please plan ahead: other than the three late days, no exceptions will be made to the lateness policy, except in the case of documented medical emergency or as mandated by university policy. Plan ahead!
Examples: A milestone is due on Tuesday, and Alice turns in the assignment at 12:31 PM; Bob turns it in at 9:00 PM; and Charles at 1:00 PM on Wednesday. Alice and Bob will both be charged a late day, or if they have no late days remaining, will lose 10% of the project grade. Charles will lose two late days, or one late day and 10%, or 20%, depending on how many late days he has remaining.
It is courteous, but not required, to inform the instructor if you intend to turn in a project late using late days.
Formal Collaboration: You may work on each project in self-selected (and self-managed) teams of two. Both students in the team will receive the same grade (except as modified by the lateness policy above; late days are per student.) If you work in a team on the first milestone of a project, you may either continue to work together on the second milestone, or work individually (starting from the code you wrote together for the first milestone): you may not form a new team between two milestones of a project. Under no circumstances will the instructor adjudicate on personal disputes that arise due to working together in a team.
Informal Collaboration and Academic Honesty: You are allowed, and encouraged, to discuss the projects with your classmates, to work together on understanding the theory and math involved in the projects, to help each other debug, etc. You may also use Internet resources like Stackoverflow to get help on the math and theory, or to ask generic questions about C++ or Qt. That said, the code submitted by each team must be their own, except for a) "starter code" provided by the instructor, and b) external libraries explicitly approved by the instructor.
If in doubt, please contact the instructor. Violations of this policy will be reported to Student Judicial Services.
Students with Disabilities: The University of Texas at Austin provides upon request appropriate academic adjustments for qualified students with disabilities. For more information, contact the Office of the Dean of Students at 471-6259.
Some Final Advice: Writing working physical simulation code is very rewarding, but also challenging and at times frustrating. To get the most out of this course,
- Start Early: Yes, every professor in every computer science class has told you the same thing. Physical simulation code can be particularly tricky to debug, since it's not always immediately obvious whether or not code is correct, or whether a bug is due to wrong code or wrong theory. By starting early, you have plenty of time to fix things if they go wrong.
- Get Help: Double-check your math formulas with your classmates; take advantage of the opportunity to work in teams; come to office hours for help deriving formulas, finding bugs, or even just to check whether you're on the right track.
- Let me know if you have concerns about the difficulty of the projects, the pace of the lectures, or any other aspect of the course. This is the first year the course has been taught at UT Austin, and nothing is set in stone. If you're not learning effectively, the course is not accomplishing its goals.
Schedule: A tentative schedule of lecture topics is listed below.
The syllabus page shows a table-oriented view of the course schedule, and the basics of course grading. You can add any other comments, notes, or thoughts you have about the course structure, course policies or anything else.
To add some comments, click the "Edit" link at the top.