CS475/CS675 - Computer Graphics
Semester 1 (Autumn), 2019-2020
Overview
This is the first course on Computer Graphics - here we will learn to draw images and make animations on the computer. This will be achieved by learning the underlying algorithms and hands-on implementations of those techniques. We will talk about everything, starting from basic drawing on the computer to special effects in movies. The course is very programming intensive and will emphasize a lot on assignments and at least one project. Watch the course teaser video to get an idea about its contents.
Logistics
- Class Timings: Slot 12
- Office Timings: SIC 301, Kanwal Rekhi Building
- Classroom: IIT Bombay Moodle, CS475/CS675 team on MS Teams
- Course Mailing List: cs475 AT cse, cs675 AT cse (BTech and DD subscribe to cs475, MTech and PhD subscribe to cs675)
- Teaching Assistant: Pratik Kalshetti, Sukanya Bhattacharya
- Important: Academic Integrity of Assignment Submissions
Registration Instructions
- If you are a B.Tech. student, register only for CS475
- If you are a DD, M.Tech., or Ph.D. student, register only for CS675.
- Never register for both CS475 and CS675.
- You are not allowed to register for either of these courses if you have done another course that overlaps significantly in content with it. If you have a doubt about this, ask me.
- Any CSE B.Tech. or DD student who is in the 2nd year or above can take the course.
- Any CSE M.Tech. or Ph.D. student can take the course.
- If you are a non-CSE B.Tech. or DD student who has done the data structures course (CS213/CS213M or equivalent), you can register for CS475, provided your Facad or department has no objection.
- If you are a non-CSE B.Tech. or DD student who has not done a data structures course, I strongly recommend that you do not take this course. Registration on ASC will be blocked if you do not have the required pre-requisite and it is not possible to do a paper based exception this semester.
- If you are a non-CSE M.Tech. or Ph.D. student who wants to take this course, you need your thesis supervisor’s approval. Please talk to me after you get that.
- You can tag the course as whatever you want.
- Audits are not allowed.
Eligibility/Prerequisites
If you are curious about computer graphics at all - attend the first lecture.
- Knowledge of C/C++ Programming is desirable.
- Knowledge of basic Linear Algebra is desirable.
- Knowledge of data structures and algorithms is desirable.
- Learn how to use git.
- Make sure you have a GitHub id. You will need it for the course.
Course Content
Date | Topics | Tasks and Resources |
---|---|---|
Jul 29 | Introduction to the Course | Join the mailing list for the course. |
Aug 1 | Setting Up OpenGL | Go through the OpenGL tutorials page, run the triangle drawing tutorial. |
Aug 5 Aug 9 |
Rasterization Basics | Source code of demo shown in class and notes on Bresenham line drawing can be found here. Readings: Bresenham line drawing, Rasterization of Circles, Floodfill. Readings from textbook: Read Chapters 1, 2 and 3. |
Aug 12 | Clipping | Read about Cyrus-Beck Clipping here. |
Aug 19 Aug 23 |
Drawing in OpenGL | Run the Colorcube example from the OpenGL tutorials. |
Aug 26 | 2D Transformations | Assignment 1 is out. Readings from book: Read Chapters 5 (Sections 5.1 - 5.3), 6 and 8 (upto Section 8.2). |
Aug 29 | 3D Transformations | Readings from book: Read Chapter 6. Quiz 1 on Sep 4. |
Sep 4 | Quiz 1 | SIC-301, 8:30am-9:30am |
Sep 5 | Viewing Transformations | Readings from book: Read Chapter 6. |
Sep 6 | Modelling-Viewing Pipeline | Readings from book: Read Chapter 7. |
Sep 9 Sep 12 |
Visibility | Assignment 2 is out. |
Sep 20 | Mid-Semester Exam | SIC-301, 4:00pm-6:00pm |
Sep 23 | Cubic Splines | Readings from book: Read Chapter 15. Online notes on modelling curves are here. |
Sep 26 | Bézier Splines | Readings from book: Read Chapter 15. Online notes on modelling curves are here. |
Sep 30 | B-Splines | Readings from book: Read Chapter 15. Online notes on modelling curves are here. |
Oct 3 | Modelling Surfaces | Online notes on modelling surfaces are here. |
Oct 7 | Hierarchical Surfaces | More reference material is available in the online readings listed here. Assignment 3 is out. |
Oct 10 Oct<14> |
Shading | More reference material is available in the online readings listed here. |
Oct 17 Oct 21 |
Texture | Readings from book: Read Chapter 11. |
Oct 23 | Quiz 2 | SIC-301, 8:30am-9:30am |
Oct 24 | Principles of Animation | Online notes on animation. |
Oct 31 Nov 4 |
Interpolation for Animation | Online notes on animation. |
Nov 4 | Ray Tracing 1 | Online notes on ray tracing. |
Nov 7 | Ray Tracing 2 | Online notes on ray tracing. |
Nov 15 | End-Semester Exam | SIC-301, 5:30pm-8:30pm |
Assignments and Homeworks
- Important: Academic integrity is paramount. Any dishonesty will be severely dealt with.
- Please read my views on academic integrity of assignment submissions before submitting anything to me.
- Assignments will be posted on the assignments page for the course.
Resources
-
Books
- Textbook
a. Fundamentals of Computer Graphics (Fourth Edition), Peter Shirley, Steve Marschner and others, A K Peters/CRC Press (2015)
b. Publisher page is here.
c. Amazon.in page is here.
d. Flipkart.com page is here. - Other Books
a. Interactive Computer Graphics - A Top-Down Approach Using OpenGL (6/e), Edward Angel
b. Computer Graphics using OpenGL (3/e), F. S. Hill Jr. and S. M. Kelley
c. Computer Graphics with OpenGL (3/e), D. D. Hearn and M. P. Baker
- Textbook
-
OpenGL Tutorials
-
OpenGL Documentation
- OpenGL Programmers Guide - The Red Book (for OpenGL v1.1)
- OpenGL.org - The official OpenGL site
- OpenGL Registry. This has links to the various OpenGL Specifications.
- OpenGL Man Pages
-
Associated Library Websites
-
Online Readings
- Rasterization Algorithms
a. The Bresenham Line Drawing Algorithm
b. Optimizing the Bresenham Algorithm (Archived Version from the Wayback Machine)
c. Algorithm for computer control of a digital plotter, J. Bresenham, IBM Systems Journal 4(1):25-30, 1965
d. A Linear Algorithm for Incremental Digital Display of Circular Arcs, J. Bresenham, Communications of the ACM, 20(2):100-106, 1977
e. Rasterizing Circles (Archived version from the Wayback machine)
f. Interactive demo for Scanline fill
g. Floodfill Algorithm for drawing filled polygons
h. Pointillism
i. Color Models - Clipping Algorithms
a. Cohen-Sutherland Line Clipping
b. Cyrus-Beck (Liang-Barsky) Line Clipping
c. Sutherland-Hodgman Clipping - Transformations
a. Homogeneous Coordinates
b. Euler Angles
c. Gimbal Lock
d. Gimbal Lock - Modelling-Viewing Pipeline
a. Coordinate Systems in the Graphics Pipeline
b. Modelling-Viewing Pipeline - Visibility
a. BSP Trees (courtesy the Wayback Machine)
b. BSP FAQ
c. The Art Gallery Problem
d. Quadtrees
e. More Quadtrees
f. Octrees - Modelling Curves and Surfaces
a. Notes on Computing with Geometry
b. Mathematical Elements for Computer Graphics by Rogers and Adams, Google Books - Hierarchical Modelling
a. Hierarchical Trasformations
b. Hierarchical Modelling and Display lists in OpenGL - Shading
a. Phong Illumination Model
b. Blinn-Phong Shading
c. Per-Pixel Lighting - Animation
a. Principles of Traditional Animation Applied to 3D Computer Animation
b. Continuity of Parametric Curves
c. Quaternions and Spatial Rotations - Ray Tracing
a. Ray Tracing
b. The Internet Ray Tracing Competition (the competition seems to be down at the moment)
c. The Persistence of Vision Raytracer
d. Object-Object Intersections
e. Overview of raytracing on Scratchapixel
- Rasterization Algorithms