/pba

Primary LanguageC++

Physics-based Animation (物理ベースアニメーション)

BuildTasks

under construction

ITC-LMS (for Slack and GitHub Classroom invitaitons):

Instructor

Dr. Nobuyuki Umetani

Time

Monday 3rd period, 13:00pm - 14:30pm

Course Description

Computer-generated images are everywhere in movies, video games, and VR. This course is an introduction to the techniques to animate objects in computer graphics based on the law of physics. The aim of the course is to get familiar with applied mathematics such as linear algebra, vector analysis, partial differential equations, variational principle, optimization, and numerical analysis through the animation techniques for particle systems, rigid bodies, elastic bodies. There are C++ programming assignments to acquire research-oriented graphics programming skills.

Topics:

  • mass-spring simulation
  • rigid body simulation
  • elastic body simulation
  • cloth and hair modeling & simulation
  • collision-detection using spatial hashing
  • finite boundary method

Lecture Schedule

Day Topic Assignment Scribble Slide
(1)
Apr. 5
Introduction
[1], [2]
(2)
Apr. 19
Data Structure
data structure for simulation
Implicit surface
task0
deadline: Apr.22th
[2]
(3)
Apr. 26
Time Integration
Newtonian-mechanics
backward & forward Euler method,
particle system
task1
deadline: Apr. 29th
[14], [3]
(4)
Mar. 10
Collision Detection
bounding volume hierarchy,
Kd-tree, N-tree
task3 [5]
(5)
Mar. 17
Simple Deformation Energy
mass-spring system,
Lagrangian mechanics
Sparse matrix data structure
task4 [6], [17]
(6)
Mar. 24
Numerical Optimization
Newton-Raphson method,
Levenberg–Marquardt method
Solving Large Linear System
conjugate gradient method
task2, task5 [1], [2], [3] [8]
(7)
Mar. 31
Optimization with Constraint
Lagrange multiplier method
task6 [9]
(8)
Jun. 7
Rigid Body Dynamics
inertia tensor,
angular velocity
task7 [1], [2] [10]
(9)
Jun. 14
Collision and Friction
Coulomb friction,
impulse based method
task8 [11]
(10)
Jun. 21
Continuum Mechanics
tensor, stress and strain
task9 [1], [2] [12]
(11)
Jun. 28
Continuum Mechanics2
Mesh interpolation
Finite elemenet method
task10 [1], [2], [3] [4]
(12)
Jul. 5
Non-physical Deformation
singular value decomposition,
shape matching method,
linear blend skinning,
as-rigid-as possible deformation
task11
(13)
Jul. 12
Boundary Element Method
Green’s functions,
thin-plate spline interpolation,
radial based function
task12 [1], [2]

Grading

  • 20% lecture attendance
    • Counted by attending the lecture, asking question, and making comments ...etc
    • Number of question counts: maximum 1 count for 1 lecture, 5 2 counts for entire course
    • Attendance is counted based on writing a secret keyword on LMS. The keyword is announced for each lecture.
  • 80% small assignemnts
    • see below

Assignemnts

There are many small programming assignments. To do the assignments, you need to create your own copy of this repository through GitHub Classroom. These assignements needs to be submitted using pull request functionality of the GitHub. Look at the following document.

How to Submit the Assignments

Policy

  • Do the assignment by yourself. Don't share the assignments with others.

  • Don't post the answers of the assignment on Slack

  • Late submission of an assignment is subject to grade deduction

  • Score each assignemnt will not be open soon (instructer needs to adjust weight of the score later)

Tasks

  • task0: Make C++ Program with CMake
  • task1: Particle System
  • task2: Optimization
  • task3: Deformation Using Optimization
  • task4 : Bounding Volume Hierachy
  • task5: Solving Large Linear System
  • task6: Optimization with Constraints
  • task7: Princepal Axes of 3D Shape
  • task8: Deformation Gradient Tensor
  • task9: Shape Matching Method
  • task10: Thin Spline Deformation

Slides

Reading Material