Course Syllabus

Physical Simulation for Computer Graphics

CS 395T (51250)

Essential Information

 

Instructor:
Contact:
Location:

Time:
Office Hours:

TA Office Hours:

Course Piazza:

Etienne Vouga
evouga@cs.utexas.edu
Zoom link

2:00 — 3:30   T & Th
4:00 — 6:00   M & W
Zoom link
3:30 — 4:30   T & Th
Zoom link
here

 
tangled.png

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: Multivariable differential calculus; linear algebra; comfortable working knowledge of C++. The Computer Graphics graduate class will cover the latter two prerequisites, but knowledge of computer graphics is not itself a requirement. 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. The course notes are available here.

Recommended Textbooks: House and Keyser, Foundations of Physically Based Modeling and Animation.

Assignments and Grading: The course includes one written worksheet, three programming projects, and one final project; the final grade for the course will be computed based on performance on these assignments alone. There will be no final exam. Your final grade will include pluses and minuses. The five projects and final grade breakdowns are:

  • Math Review Worksheet (10%): Physical simulation relies heavily on multivariable differential calculus and linear algebra machinery such as inner product spaces. Since it may have been several years since you've studied these subjects, this worksheet will review that knowledge.
  • Universe of Goo (20%): 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 (20%): You will simulate 3D rigid bodies with collisions and impact, in the context of a 3D application where you hurl objects at high speeds into other stacked objects.
    cloth.png

    Goldenthal et al '07 

  • Cloth Encounters of the Shirt Kind (20%): 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.
  • Final Project (30%): 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.

Each project, except for the final project, will be 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 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 programming assignment is due by 1:59 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.

Sometimes unforeseen events disrupt the best-laid plans: an assignment 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 an interview, etc. Some leniency has therefore been built into the above policy: each student begins the semester with six late days. Six times during the semester when a student would lose 10% per the above policy, one late day can be used instead to avoid the penalty. Please plan ahead: other than the six 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: An assignment is due on Friday, and Alice turns in the assignment at 2:01 PM; Bob turns it in at 9:00 PM; and Charles at 4:00 PM on Saturday. 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.

The instructor/TA will keep track of your late days remaining, and will allocate them to your late assignments in the way most beneficial to you (i.e. to the most highly-weighted assignments first) at the end of the semester. Until the end of the semester, your Canvas grades will reflect the worst-case scenario where no late days are used on any assignments.

Warning: the projects in this class are complex and difficult, and will require multiple days worth of programming effort even for the brightest students. Exercise good time management and plan ahead!!

Some late day FAQs:

  • How are late days handled if I work together with another student on a team? Late days and late penalties are tracked and assessed per-person. If a team submits an assignment late, both team members will be charged late days.
  • Can I use late days for the in-class midterm? No.
  • Can I use late days for the final project? The final project has several components. Code and a write-up is due on the last day of class, and you will present your project on the class final exam day. Late days may be used to turn in your code/write-up late but may not be used on the in-class presentation.
  • Can I use late days for X, where (X != the midterm) && (X != the final exam presentation)? Yes.
  • I turned in an assignment late, but want to save my late days for later. How should I tell you not to apply a late day to the current assignment? You don't need to. We will run a script at the end of the semester that assigns late days in the way that maximizes your final course grade.

Formal Collaboration: You are allowed (but not required) to work on each assignment in self-selected (and self-managed) teams of two. If you work in a team, you must submit, with each assignment, an individual collaboration report stating, from your perspective, how much and which parts of the project each student contributed to. Discrepancies will be investigated by the instructor, and credit for the project will be distributed in proportion to each student's contribution.

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

Grading: All code submitted for class projects should be as cross-platform as possible, and should compile using the CMake build system when invoked in a similar manner as in the starter code. Do not include system header files like windows.h, use compiler language extensions, refer to files using absolute paths on your hard drive, etc. You are strongly encouraged to SSH into a CS lab machine and verify that your code compiles there before turning your code in; however, the TA will make a good-faith effort to fix minor problems with your submission due to differences in platform and compiler toolchain. It is your responsibility to coordinate with the TA and assist them with getting your code to compile and run, and the TA reserves the right to penalize submissions that cannot be compiled cross-platform with reasonable effort.

Piazza: The best way to get in touch with the instructor and TA outside of office hours is via the Piazza page linked at the top of the syllabus. Important announcements and clarifications about the assignments will also be posted to Piazza, so please create an account and check in regularly.

Attendance: Attendance is strongly encouraged, but not required. Understand that lectures might extend, contextualize, or even contradict the course slides. Moreover your attendance is required at the in-class midterm (see schedule below) and the final project presentation, which will take place during this class's final exam period. If you do not attend the midterm or presentation, you will receive a zero on these items, except for medical emergency or other serious extenuating circumstances that you discuss with me in advance. Wanting to start a summer internship early does not count as a serious extenuating circumstance.

Zoom and FERPA: The online lectures will be recorded and posted to Canvas for your convenience. If you connect to the meeting with audio and/or video, your participation will also be recorded. To opt out, you may disable transmission of audio and/or video during the meetings. To protect the privacy of your classmates, please do not distribute the course lectures to anybody who is not currently enrolled in the course.

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.

Inclusion and Diversity: The College of Natural Science is dedicated to ensuring a climate conducive to learning in all of its classrooms. Please be thoughtful and considerate in your interactions with your fellow students, both in person and on the class Piazza; bias, harassment, and discrimination will not be tolerated. You may report any incidents or concerns to me or the Campus Climate Response Team. Note that I am by law a mandatory reporter for issues related to Title IX.

Some Final Advice: Writing working 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. 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 math. 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.

Schedule: A tentative schedule of lecture topics is listed below.

 

Course Summary:

Date Details Due