# CSC417-physics-based-animation
**Repository Path**: drcool/CSC417-physics-based-animation
## Basic Information
- **Project Name**: CSC417-physics-based-animation
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2024-06-03
- **Last Updated**: 2024-06-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# CSC417/CSC2549-Physics-based Animation *Fall 2020*

- [CSC417/CSC2549 - Physics-based Animation *Fall 2020*](#csc417csc2549---physics-based-animation-fall-2020)
- [Instructors](#instructors)
- [TA](#ta)
- [Lectures](#lectures)
- [Links](#links)
- [Course Overview](#course-overview)
- [Helpful Resources](#helpful-resources)
- [Lecture Schedule](#lecture-schedule)
- [Final Project](#final-project)
- [Grading](#grading)
- [Lateness Policy](#lateness-policy)
- [Academic Honesty](#academic-honesty)
- [Email & Bulletin Board Traffic](#email--bulletin-board-traffic)
## Instructors
Prof. [David I.W. Levin](http://www.cs.toronto.edu/~diwlevin/)
Email: diwlevin@cs.toronto.edu
[Webpage](http://www.diwlevin.com)
Office Hours: Tuesdays 17:00-18:00 on Zoom **Zoom link will be sent to registered students**
## TA
Vismay Modi
Honglin Chen
Email Instructor and TAs: csc417tas@cs.toronto.edu
## Lectures
Tuesdays 16:00-17:00 on Zoom
Wednesday 14:00-15:00 on Zoom
**Zoom link will be emailed to registered students**
## Links
Discussion board using [Piazza](https://piazza.com/utoronto.ca/fall2020/csc417)
Hand in assignments using [MarkUs](https://markus.teach.cs.toronto.edu/csc417-2020-09).
## Course Overview
This course is designed to introduce students to the field of physics-based animation by exposing them to the underlying mathematical and algorithmic techniques required to understand and develop efficient numerical simulations of physical phenomena such as rigid bodies, deformable bodies and fluids. In Physics-Based Animation we will learn how to develop algorithms that produce visually compelling representations of physical systems. We will learn the underlying continuous mathematics describing the motion of physical objects, explore how to discretize them and how to solve the resulting discrete equations quickly and robustly.
**Prerequisites:** C/C++ Programming, Linear Algebra, Calculus, Numerical
Methods
The student is expected to read background material as necessary and should be comfortable with elementary linear algebra, geometry,
and vector calculus. It is also assumed that the student is comfortable
programming in basic C++.
**_(Strongly)_ Recommended preparation:** Multivariable Calculus
## Helpful Resources
[The Variational Principles of Mechanics (Book)](https://search.library.utoronto.ca/details?1576571&uuid=24e9601f-a561-440e-b4f7-0162225ae73d)
[Calculus of Variations](https://books.google.ca/books/about/Calculus_of_Variations.html?id=YkFLGQeGRw4C&printsec=frontcover&source=kp_read_button&redir_esc=y#v=onepage&q&f=false)
[Numerical Methods for Evolutionary Differential Equations (Book) ](https://search.library.utoronto.ca/details?8723030)
[Fluid Simulation for Graphics (Book)](https://dl.acm.org/citation.cfm?id=1457699)
[Fluid Simulation for Graphics (Notes)](https://www.cs.ubc.ca/~rbridson/fluidsimulation/fluids_notes.pdf)
[Real-time Collision Detection (Book)](https://dl.acm.org/citation.cfm?id=1121584)
[Real Time Physics (Website)](http://matthias-mueller-fischer.ch/realtimephysics/)
[FEM Simulation of 3D Deformable Solids (Website)](http://www.femdefo.org)
[Matrix and Linear Algebra Identities (PDF)](https://www.math.uwaterloo.ca/~hwolkowi/matrixcookbook.pdf)
[Geometric Tools (Website)](https://www.geometrictools.com)
[Material Point Method SIGGRAPH Course (PDF)](https://www.seas.upenn.edu/~cffjiang/research/mpmcourse/mpmcourse.pdf)
[Two-Minute Papers (YouTube not strictly physics, but cool)](https://www.youtube.com/channel/UCbfYPyITQ-7l4upoX8nvctg)
[Prof. Shinjiro Sueda's Rigid Body Mechanics Notes for Joints](https://github.com/sueda/redmax/blob/master/notes.pdf)
## Lecture Schedule (Due dates are day/month)
**NOTE: Video and Assignment links will go live as the course progresses**
| Week | Topic / Event |
| ---- | :------------ |
| 1 | **Reading**
[Academic Policy](#academic-honesty)
[Grading Scheme](#grading)
[Late Policy](#lateness-policy)
**Videos**
[Introduction](https://www.youtube.com/watch?v=5j37DOD8q4U)
[**Slides**](lectures/01-Intro-plain_final.pdf)
**Research Highlight**
[Fast Mass-Spring Systems](https://www.cs.utah.edu/~ladislav/liu13fast/liu13fast.html)
**[Assignment 1 (1D mass-springs)](https://github.com/dilevin/CSC417-a1-mass-spring-1d) due 2/10**
| 2 | **Video**
[Explicit and implicit time integration](https://youtu.be/wpZe1PI7uhQ)
[**Slides**](lectures/02-time-integration_final.pdf)
**Research Highlight**
[Discrete Elastic Rods](http://www.cs.columbia.edu/cg/rods/)
**Working on A1**
| 3 | **Video**
[Mass-spring systems in three dimensions](https://youtu.be/9DcKg77nQBA)
[**Slides**](lectures/03-Mass-Spring-3d-final.pdf)
**Research Highlight**
[Shape Matching](https://matthias-research.github.io/pages/publications/MeshlessDeformations_SIG05.pdf)
**[Assignment 2 (3d mass-springs)](https://github.com/dilevin/CSC417-a2-mass-spring-3d) due 9/10**
| 4 | **Videos**
[Finite Elements for Solids I](https://www.youtube.com/watch?v=ngaYNdNtbec&t=1s)
[Gradients and Hessians with MATLAB’s Symbolic Toolkit](https://www.youtube.com/watch?v=fqGNoUV67lI&t=1s)
[Derivatives!](https://www.youtube.com/watch?v=ny-i8_9NtHA&feature=youtu.be)
[Avengers:Endgame Simulation Breakdown **SPOILER WARNING**](https://www.youtube.com/watch?v=51w4ZB_s528)
[**Slides**](lectures/04-finite-elements-I-final.pdf)
**Research Highlight**
[Position-Based Dynamics](https://www.sciencedirect.com/science/article/abs/pii/S1047320307000065)
**[Assignment 3 (3d FEM)](https://github.com/dilevin/CSC417-a3-finite-elements-3d) due 23/10**
| 5 | **Video**
[Finite Elements for Solids II](https://youtu.be/RsdyeUyWss0)
[**Slides**](lectures/05-finite-elements-II-final.pdf)
**Research Highlight**
[Frame-Based Elastic Models](http://www-ljk.imag.fr/Publications/Basilic/com.lmc.publi.PUBLI_Article@12f67a0f733_19a6a34/FBEM.pdf)
**Working on A3**
| 6 | **Video**
[Finite Elements for Simulating Cloth and Shells](https://www.youtube.com/watch?v=MJj17gpmrI4&feature=youtu.be)
[**Slides**](lectures/06-cloth-simulation-final.pdf)
**Research Highlight**
[Homogenized Yarn-Level Cloth](http://visualcomputing.ist.ac.at/publications/2020/HYLC/)
**[Assignment 4 Finite Elements for Cloth Simulation](https://github.com/dilevin/CSC417-a4-cloth-simulation) due (6/11)**
| 7 | *Tutorial Only (Catch up, last minute questions about Assignments 1-4)*
| 8 | **Videos**
[Rigid body mechanics](https://www.youtube.com/watch?v=X0spyNYoZ1o&feature=youtu.be)
[Rotation Matrix Time Derivatives](https://www.youtube.com/watch?v=1RF7j-Yc21c&t=502s)
[**Slides**](lectures/07-rigid-bodies-final.pdf)
**[Assignment 5 Rigid body simulation due (20/11)](https://github.com/dilevin/CSC417-a5-rigid-bodies)**
| **November 9** | *Drop date (consider if grade so far is <50%)*
| 9 | **Video**
Jointed Rigid Body Systems
**Work on A5**
| 10 | **Video**
[Rigid Body Collision](https://www.youtube.com/watch?v=8fFg7fOAHSA&feature=youtu.be)
[**Slides**](lectures/09-rigid-body-contact-final.pdf)
**Research Highlight**
[Anisotropic Elasticity for Inversion-Safety and Element Rehabilitation](http://www.tkim.graphics/ANISOTROPY/AnisotropyAndRehab.pdf)
[**Assignment 6 (Collision Resolution) due (4/12)**](https://github.com/dilevin/CSC417-a6-rigid-body-contact)
| 11 | **Videos**
[The Material Derivative](https://www.youtube.com/watch?v=ctvHp8YJ3ug&t=9s)
[Fluid Simulation](https://www.youtube.com/watch?v=VddQZH_Ppd0&feature=youtu.be)
[**Slides**](lectures/10-fluid-simulation-final.pdf)
**Research Highlight**
[Variational Stokes](http://poisson.cs.uwaterloo.ca/stokes/)
**Work on A6**
| 12 | *Tutorial Only (Last Minute Questions about A5-6, Final Project)*
**Research Highlight**
[On the accurate large-scale simulation of ferrofluids](http://computationalsciences.org/publications/huang-2019-ferrofluids/huang-2019-ferrofluids.pdf)
[Academic Honesty (required reading)](#academic-honesty)
## Final Project
The final project should involve implementing a physics-simulation of any kind. It can be an algorithm from a paper or a new algorithm altogether. You can write the code from scratch or extend one of the course assignments. Projects can be done individually or in groups of two. The expectation is that the amount of work per-group member is equivalent, thus two person groups should be more ambitious in their project plans.
**Deliverable:** The code for your algorithm (in Python, C++ or MATLAB) along with instructions to compile and run the implementation. A **two (2) page** writeup of the algorithm in the style of a short SIGGRAPH paper. A **5-minute** SIGGRAPH style video showing the results of your method.
**Due Date:** December 21st at 11:59pm.
[**Example Report**](https://www.siggraph.org/wp-content/uploads/2020/02/techbrief-sample.pdf)
[**Example Video**](http://www.nobuyuki-umetani.com/publication/2014_sca_positionbasedelasticrod/2014_sca_PositionBasedElasticRod.html)
**Suggested Structure**
Treat your video like a 5-minute presentation of your work (in lieu of a final presentation). You don't have to show yourself in the video, but a good suggested organization is (1) Introduce the problem (2) Mention the important resources you used (3) Outline the algorithm (4) show some results.
[**Document Templates (use Technical Brief)**](https://www.siggraph.org/learn/instructions-authors/)
## Grading
| % | Item |
| ----: | :-------------- |
| 60% | Assignments (top 5 of 6)
| 40% | Final Project
## Lateness Policy
**Please read, this course has an involved late policy aimed at giving you maximum flexibility in scheduling your semester**
Assignments are **_due by 11:59pm_** on the three due dates below.
0.007% off for every minute late.
Assignments 1,2,3,4 must be handed in by **November 16th at 11:59 pm**.
Assignments 5 and 6 must be handed in by **December 10th at 11:59 pm**.
The final project must be handed in by **December 21st at 11:59 pm**.
~~These dates are not extendable.~~
Extensions to the dates above can only be issued by the instructor.
**THERE ARE NO LATE PENALTIES APPLIED TO ANY OTHER DEADLINES ASIDE FROM THE THREE (3) DEADLINES DIRECTLY ABOVE THIS TEXT**.
~~However, every student will be given **twenty-one (21) days** of late credits which are automatically applied to all other deadlines aside from the ones above.~~
Students who hand in their assignments on the due dates in the [schedule](#lecture-schedule) above will be awarded a **five (5) percent** bonus on the assignment grade up to a maximum score of **one-hundred (100) percent**.
### Academic Honesty
Academic honesty is a very serious matter and can result in very serious
consequences. Note that academic offences may be discovered and handled
retroactively, even after the semester in which the course was taken for credit.
This is a challenging class aimed at teaching you the fundamentals of computer
graphics. You wont learn much if you cheat but you might get a good grade if you
get away with it. If all you want is a good grade take an easier class where you
wont have to cheat!
For purposes of this class, academic dishonesty is defined as:
- Any attempt to pass off work on an assignment that didn't come straight out of your
own head.
- Any collaboration on written or programming assignments (its ok to share ideas
on programming assignments but the code MUST be your own) in which the
collaborating parties don't clearly and prominently explain exactly who did
what, at turn-in time.
- Any activity that has the effect of significantly impairing the ability of
another student to learn. Examples here might include destroying the work of
others, interfering with their access to resources (e.g., digital cameras), or
deliberately providing them with misleading information.
### Email & Bulletin Board Traffic
- Use GitHub issues for answering questions about class subject matter or about the assignments. The TAs and the instructor will monitor the issues pages. Email sent to the instructor or TAs regarding these matters will be ignored.
- Remark requests will be handled through MarkUs.
- Appropriate use of issues page: clarifications on assignment, on lecture
material, general concerns about the course, or other remarks that are
appropriate for all students to see/participate in.
- Do NOT broadcast pieces of your code or answers to written assignments to the
issues page. Specific or general implementation questions whose answer
would benefit all students in the class are appropriate.
- Questions of the form "I cannot find the problem with my code; here it is, can
you help me" are unlikely to be replied, so don't count on it.