Lecture at graduate school of information science and technology in the university of Tokyo, spring semester, 2022
ITC-LMS (for Slack and GitHub Classroom invitations):
Dr. Nobuyuki Umetani
- email: [email protected]
- url: http://www.nobuyuki-umetani.com/
- lab's web page: https://cgenglab.github.io/labpage/en/
Monday 3rd period, 13:00pm - 14:30pm
Computer graphics is a technology to computationally represent objects' geometry, appearance and movement. This course is an introduction to the techniques generally seen in computer graphics. The aim of the course is to get familiar with applied mathematics such as linear algebra, vector analysis, partial differential equations, numerical analysis and optimization through the topics in computer graphics. There are C++ programming assignments to acquire research-oriented graphics programming skills such as OpenGL, Eigen matrix library, Git and cmake.
Topics:
- affine transformation & homography
- character animation (forward & inverse kinematics)
- visualization (rasterization / ray casting)
- optimization ( continuous optimization / dynamic programming )
- parametric curves & surfaces
- variational mesh deformation
- grid-based fluid simulation
Day | Topic | Assignment | Slide |
---|---|---|---|
(1) Apr. 11 |
Introduction graphics pipeline |
[3] | |
(2) Apr. 18 |
Coordinate transfrormation barycentric transformation |
task00 | [4] , [5] |
(3) Apr. 25 |
Coordinate transformation2 | task01 | - |
(5) May 2 |
Rasterization | task02 | [6] |
(4) May 9 |
Ray Casting I | task03 | [7] |
(6) May 16 |
Ray Casting II | task04 | [8] |
(7) May 23 |
Parametric curves / surfaces | task05 | [9] |
(8) June 6 |
Character deformation | task06 | [10], [11] |
(9) June 13 |
Optimization | task07 | [12] |
(10) June 20 |
Laplacian mesh deformation | task08 | [13] |
(11) June 27 |
Guest lecture by Dr. Ryoichi Ando | - | - |
(12) July 4 |
Grid-based Fluid Ⅰ | task09 | [14] |
(13) July 11 |
Grid-based Fluid Ⅱ | - | [15] |
- 20% lecture attendance
- Attendance is counted based on writing a secret keyword on LMS. The keyword is announced for each lecture.
- 80% small assignments
- see below
There are many small programming assignments.
To do the assignments, you need to create your own copy of this repository through GitHub Classroom.
These assignments need to be submitted using pull request functionality of the GitHub.
Look at the following document.
Task ID | Title | Thumbnail |
---|---|---|
task00 | build C++ Program with CMake | |
task01 | 2D Homography Transformation | |
task02 | GLSL Vertex Shader (Fisheye Lens) | |
task03 | GLSL Fragment Shader (Sphere Tracing / SDF) | |
task04 | Importance Sampling (Ambient Occlusion) | |
task05 | Rasterization of Cubic Bézier Curves (Sturm's Method) | |
task06 | Linear Blend Skinning (Articulated Rigid Body, Inverse Binding Matrix) | |
task07 | Inverse Kinematics (Levenberg–Marquardt method) | |
task08 | Laplacian Mesh Deformation (Quadratic Programming, Sparse Matrix) | |
task09 | Poisson Image Editing((Gauss-Seidel method, pybind11)) |
- 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 assignment will not be open soon (instructor needs to adjust weight of the score later)
- [1] C++ programming
- [2] Git+GitHub
- [3] Graphics pipeline
- [4] Barycentric coordinate
- [5] Coordinate transformation
- [6] Rasterization
- [7] Implicit Modeling
- [8] Ray Casting
- [9] Parametric Curve
- [10] Character Deformation
- [11] Jacobian & Hessian
- [12] Optimization
- [13] Mesh Laplacian
- [14] PDE
- [15] Grid-based Fluid