CPSC 4190/6190: Introduction to Physically Based Modeling and Animation

Spring 2023
When: MWF 1:30-2:15
Where: McAdams 110E and online
Instructor: Jerry Tessendorf
Contact: jtessen@clemson.edu
Office:McAdams 302
Office Hours: MWF 10 AM - 12 PM both in-person and on zoom (see canvas for zoom link)
... and whenever I am in my office. Drop by. Or make an appointment.
TA:
TA Office Hours:
TA Email:
Website:https://people.cs.clemson.edu/~jtessen/cpsc4190+6190
Textbook:Donald House and John Keyser, Foundations of Physically Based Modeling & Animation, CRC Press
VideosThere is no plan to systematically record the lectures.
Syllabuspdf

OBJECTIVES

At the completion of the course, students will be able to:

OUTLINE

Below is the planned set of topics, and references to locations in the textbook. However this course will be flexible, based on student feedback and performance. More topics may be included, or fewer, as needed.
Topic Textbook Reference
Introduction Ch 1
Foundations Ch 2.1-2.6
Vector Math Appendix A
3D motion with air resistance Ch 2.7-2.8
Collisions with infinite planes Ch 3.1-3.3
Collisions with Polygons Ch 3.4=3.5
Barycentric Coordinates & Collisions with Triangles Ch 3.6-3.7
Particle Systems Ch 4
Choreography Ch 5
State Vectors Ch 6.1-6.2
Flocking Systems Ch 6.5
Numerical Integration Ch 7.1, 7.3-7.5
Springy Objects Ch 8.1-8.2
Springy Collision Detection & Response Ch 8.5
Lattice deformers & cloth Ch 8.6-8.7
Rigid Body State Ch 9.1
Moment of Inertia Ch 9.2
Quaternions & rotations App E
Rigid Body State Update/Implementation Ch 9.3-9.4
Rigid Body Collision Response Ch 10.1-10.2
Rigid Body Collison Detection Ch 11.1-11.2
Mathematical Foundations of Constraints reading material
Constrained Dynamics reading material
Position Based Dynamics reading material
Smoothed Particle Hydrodynamics reading material
Geodesic Motion reading material

RESOURCES


SCHEDULE

Week #Dates Monday WednesdayFriday
Week 1 Jan 9-13 No class Introduction
Vector math
Foundations
Basic exact cases
Week 2 an 16-20 No Class - MLK Holiday Numerical implementation of exact cases Basic solvers
Week 3Jan 23-27 Higher order solvers 3D collisions with boxes C++ code representation
Week 4Jan 30-Feb 3 Barycentric coordinates & collisions with trianglesCollision handling C++ code representation
Week 5Feb 6-10 particle systems
particle-particle collision
State space C++ code representation
Project 1 Due
Week 6Feb 13-17 Collision acceleration via Kd-tree Collision acceleration via Kd-tree C++ code representation
Week 7 Feb 20-24 Forces A collection of forces Exam 1
Week 8Feb 27 - Mar 3 Smoothed Particle Hydrodynamics Occupancy Grids Spring meshes
Week 9Mar 6-10 More spring mesh forces More spring mesh forces Tradeoff forces and solvers
Week 10Mar 13-17 Rigid Bodies, rotations, moment of inertia Rigid body state RBD solvers
Project 2 Due
Week 11Mar 20-24 SPRING BREAK SPRING BREAK SPRING BREAK
Week 12Mar 27-31 Rigid Body collisions with geometry Constrained motion Constrained dynamics
C++ code representation
Week 13Apr 3-7 Position Based Dynamics PBD solvers
C++ code representation
Exam 2
Week 14 Apr 10-14 Geodesic Motion Brute force Geodesic motion Fancy geodesic motion
Week 15Apr 17-21 Fancy geodesic motion implementation Flocking Electrostatic & magnetostatic forcing
Week 16Apr 24-28 Collisions with moving geometry sphere collisions Lagrangian & Hamiltonian Formulations
Project 3 Due
FINAL EXAM ??? ????

GRADING

There are 3 projects in this class. Each is worth 10 points. There are two in-class written exams, each worth 15 points. There is a final exam, worth 20 points. There are also 20 points possible for class participation. There is a total of 100 possible points. The grade is relative to the percentage of 100 points achieved.

Grades: A > 90%; B > 80%; C > 70%; D > 60%; F < 60%

For the projects, the point assignment will be based on the following considerations:

  1. Does it work and the motion look good? (6)
  2. Is the code clean, organized, demonstrate pride of craftsmanship, and easy to build? (4)

PROJECTS

All of the projects involve programming in C++. Work may be done on any computer supporting C++, but the grade will be based on my ability to compile and run your code on a School of Computing linux computer. For reference purposes, students are provided with a "starter kit" with a basic implementation of particle motion and display, which students may use as the basis of their own projects, if they choose.

ProjectDue DateDescription

Project 1:
Bouncing Particle

Feb 10 23:59:59

Create C++ code to have a particle move subject to one force: gravity. The gravity vector should point in the negative y direction. The initial position of the particle should be a random location inside a box, and the initial direction should be a random vector. Both initial position and velocity should reset each time the 'r' key is pressed. Implement collision detection and handling between the particle and the box.

6190 students must add the following features:

  1. use the keys 'g' and 'G' to decrement/increment the magnitude of the gravity
  2. use the keys 'c' and 'C' keys to decrement/increment the coefficient of restitution.

Project 2:
Soft Bodies

Mar 17 23:59:59

Create C++ code for a mesh of particles with springy forces between them, and gravity force. The mesh is that of the bunny model "bunny_superlo_scaled.obj". Visually display the edges of the mesh. The mesh is to be located inside the collision box we have been showing this semester. Initially, the mesh is located near the top at some random horizontal location. The mesh experiences the following forces:
  • Gravity downward
  • Spring force along the length of each edge
  • Spring friction force along the length of each edge
  • Spring area force for each facet
  • Spring area friction force for each facet
The mesh collides with the box, and the collisions are handled as we have been discussing in class. Use the following keys to control the forces:
  • 'k'/'K' decrease/increase spring strength
  • 'f'/'F' decrease/increase friction strength
  • 'a'/'A' decrease/increase area spring force strength
  • 's'/'S' decrease/increase area spring friction strength
  • use the keys 'g' and 'G' to decrement/increment the magnitude of the gravity
The sixth order solver should be used.

6190 students: In addition to the forces above, also implement the bending force and the bending friction force. Use the following keys to control their strengths:

  • 'b'/'B' decrease/increase the bending force
  • 'n'/'N' decrease/increase the bending friction force

Project 3:
Constrained Motion

Apr 28 23:59:59

Project hand in

Projects will be handed in using the School of Computing handin mechanism. The project needs to be encapulsated in a zip file before it is submitted. The zip file should have the very specific name
username_N.zip
where username is YOUR username, and N is the number of the assignment (1, 2, or 3). For example, if I submit assignment 2, it should be in a zip file named jtessen_2.zip.

IT IS VERY IMPORTANT THAT YOU CAREFULLY FOLLOW THIS REQUIREMENTS. FAILURE TO DO SO WILL COST YOU POINTS. DONT MESS UP ON THE SMALL STUFF.

You have several choices in how you submit the project:

  1. Use a browser to log into the Webhandin website, handin.cs.clemson.edu, and submit the .zip file of the assignment. This can be done from any computer.
  2. Use the linux command, handin, to submit the .zip file.
  3. If you are using the starter kit, the command
    	python ./python/zipper.py 
    	
    will zip up your (modified) starter kit with an appropriate name. It will ask you to provide an assignment number. You can then use the command line tool 'handin', or use the web interface to hand in your assignment.
Remember that you can submit to handin as many times as you like until the expiration date of the assignment. Only the last submitted version will be graded. So it is safe to submit an incomplete assignment early, just to make sure that the submission process functions, then later do it again for the version of the project you actually want a grade on.

It is your responsibility to ensure that your project makes its way to the handin system, regardless of the performance of the tools provided. You can double check with webhandin if you desire.


STARTER KIT

To help launch students into this course, a small "starter kit" is provided here. This can be used to launch into the class projects. Students are free to use this starter kit in any way that helps them, or not use it all. If you use the starter kit, you should be able to accomplish all of the assignments by editing/creating files in the directory 'things', and potentially also editing the make file. We will explore the structure of the starter kit and its use in class.


POLICIES

Conduct Policy

Students are expected to be courteous and respectful in all interactions with fellow class members, TAs, and the instructor (whether this interaction occurs online, during class, or outside of class). Student misconduct will not be tolerated. Student misconduct includes, but not limited to, arguing with an instructor or TA about course policies, being rude or disrespectful towards a fellow class member or an instructor, sleeping in class, disrupting class, using a computer or other device during class without authorization from the instructor, showing up to class late or leaving class early without permission from the instructor, and refusing to follow course policies or instructions stated by an instructor. The instructor and TAs have the right to assign seats or to ask students to move to another seat if they feel it is necessary, and refusing to sit in an assigned seat will also be considered as an act of student misconduct. NO tobacco products or electronic cigarettes are allowed to be used during class or labs, including cigarettes, cigars, chewing tobacco, dip, etc. For the first case of student misconduct, students may have points deducted from their Quiz grades or their final grade might be lowered by one full letter grade (i.e. an A becomes a B, B becomes a C, etc.) at the instructor’s discretion. In extreme cases, or if the misconduct persists, a grade of F will be assigned to the student, and the student will not be allowed to attend class thereafter.

Academic Honesty

"As members of the Clemson University community, we have inherited Thomas Green Clemson’s vision of this institution as a high seminary of learning. Fundamental to this vision is a mutual commitment to truthfulness, honor, and responsibility, without which we cannot earn the trust and respect of others. Furthermore, we recognize that academic dishonesty detracts from the value of a Clemson degree. Therefore, we shall not tolerate lying, cheating, or stealing in any form."

When, in the opinion of a course instructor, there is evidence that a student has committed an act of academic dishonesty, the instructor must make a formal written charge of academic dishonesty, including a description of the misconduct to Dr. Jeff Appling, Associate Dean of Undergraduate Studies. The reporting instructor may, at his/her discretion, inform each involved student privately of the nature of the alleged charge. In cases of plagiarism (I.B.2.) instructors may use the Plagiarism Resolution Form available from the Office of Undergraduate Studies.

Steps to help prevent academic dishonesty are:

  1. Familiarize yourself with the regulations.
  2. Refuse to assist students who want to cheat.
  3. Protect your work! Do not allow anyone to copy any part of your work, and report anyone who tries to copy from you to the instructor or TA.
  4. Do not copy any code from any unauthorized source. An unauthorized source includes, but not limited to, any webpage, online source, document, book, or person not affiliated with our course.
  5. If you have any doubt about what constitutes academic dishonesty, ask your instructor before you turn in an assignment.

Furthermore, selling, posting, or giving away course content such as slides, notes, or any information about exams, quizzes, assignments, projects, or lectures is considered an act of academic dishonesty (unauthorized assistance) unless you have written permission from the instructor. All work submitted for grades should be your own work, and you cannot copy, paraphrase, or modify any work from any source not explicitly permitted by the instructor. The instructor has the right to run programs to detect evidence of unauthorized assistance (usually in the form of copying from another person or unauthorized source) in any assignment submitted by a student in this semester, previous semesters, or future semesters. Cheating has severe consequences, please do your own work!

Class Accommodation and Accessibility

Clemson University values the diversity of our student body as a strength and a critical component of our dynamic community. Students with disabilities or temporary injuries/conditions may require accommodations due to barriers in the structure of facilities, course design, technology used for curricular purposes, or other campus resources. Students who experience a barrier to full access to a class should let the professor know, and make an appointment to meet with a staff member in Student Accessibility Services as soon as possible. You can make an appointment by calling 864- 656-6848, by emailing studentaccess@lists.clemson.edu, or by visiting Suite 239 in the Academic Success Center building. Appointments are strongly encouraged – drop-ins will be seen if possible, but there could be a significant wait due to scheduled appointments. Students who receive Academic Access Letters are strongly encouraged to request, obtain and present these to their professors as early in the semester as possible so that accommodations can be made in a timely manner. It is the student’s responsibility to follow this process each semester. You can access further information here: http://www.clemson.edu/campus-life/campus-services/sds/.

Inclement Weather Policy

If a class is cancelled due to inclement weather, the instructor will make alternative arrangements for submitting work that was due that day. Usually the work will be due the next class, unless specified otherwise. i

Academic Continuity Plan for this course

Clemson has developed an Academic Continuity Plan for academic operations. Should university administration officially determine that the physical classroom facility is not available to conduct classes in, class will be conducted in a virtual (online) format. The University issues official disruption notifications through email /www /text notification/Social Media. When notified, students will use Clemson Canvas to find important information about the class. Teachers will also provide students with information on what to do in this case.

Late Instructor Policy

If the instructor or a lab instructor is late to class or labs, then students should wait at least 15 minutes and check the course announcements before leaving.

Clemson University Title IX (Sexual Harassment)

Clemson University is committed to a policy of equal opportunity for all persons and does not discriminate on the basis of race, color, religion, sex, sexual orientation, gender, pregnancy, national origin, age, disability, veteran’s status, genetic information or protected activity in employment, educational programs and activities, admissions and financial aid. This includes a prohibition against sexual harassment and sexual violence as mandated by Title IX of the Education Amendments of 1972. This policy is located at http://www.clemson.edu/campus-life/campus-services/access/title-ix/. Ms. Alesia Smith is the Clemson University Title IX Coordinator and the Executive Director of Equity Compliance. Her office is located at 110 Holtzendorff Hall, 864.656.3181 (voice) or 864.656.0899 (TDD).

Syllabus Policy

Students are responsible for learning and following all policies stated in this syllabus. This course syllabus is a general plan for the course; deviations announced to the class by the instructor may be necessary. Tentative course schedule will be frequently updated.