CS475/CS675 - Computer Graphics

Semester 1 (Autumn), 2022-2023


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.

Teaser Video


Logistics

  • Class Timings: Slot 10
  • Office Timings: During class slot hours
  • Classroom: IIT Bombay Moodle, CS475/CS675 team on MS Teams (You will be added to the team once course adjustment is over.)
  • Teaching Assistant: Anant Kumar
  • 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. The only other option is to do a paper based offline registration. If you absolutely want to do the course and you have my permission, figure out how to do this, get my signature on the form and submit to academic office.
  • 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 strongly recommended.
  • 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

All slides are on Google Drive and only accessible with IITB LDAP login via SSO.

For links to videos, code tutorials and all additional resources, see here.

Date Topics Tasks and Resources
Jul 27 Introduction to the Course Videos for units 1-2 to 1-5.
Aug 2, Aug 5 Rasterization Basics Videos for units 2-1 to 2-4.
Aug 12, Aug 16
Aug 19, Aug 23
The OpenGL API Videos for units 3-1 to 3-3. Complete OpenGL tutorials 0, 1 and 2.
Aug 26 Pinhole Camera and Clipping Videos for units 4-1, 4-2.
Aug 26, Aug 30 2D Transformations Videos for units 5-1, 5-2.
Aug 30 3D Transformations Videos for unit 5-3.
Sep 2, Sep 6 Viewing Transformations Videos for unit 6.
Sep 6, Sep 9 Modeling Viewing Pipeline Videos for unit 7.
Sep 7 Quiz 1 8:30am-9:30am at CC103. Syllabus is everything up to and including 3D transformations.
Sep 19 Mid Semester Exam 8:30-10:30am at CC103, CC105
Sep 23, Sep 27 Visibility Videos for unit 8.
Sep 30 Hierarchical Modeling Videos for unit 9.
Oct 4, Oct 7 Rendering Videos for unit 11.
Oct 11, Oct 14 Texture Mapping Videos for unit 12.
Oct 18 Modeling Curves - Cubic Splines Videos for unit 10.
Oct 21 Quiz 2 8:30am-9:30am at CC103. Syllabus is everything that is covered post midsem up to and including Texture Mapping.
Oct 21 Modeling Curves - Bézier Splines Videos for unit 10.
Oct 25 Modeling Curves - B-Splines Videos for unit 10.
Oct 28 Principles of Animation Videos for unit 13.
Nov 1 Interpolation for Animation Videos for unit 13.

Assignments and Homeworks

  1. Assignment 1: Voxelized Modelling
  2. Assignment 2: FMX Modelling

Resources

  1. Recorded Videos on YouTube

    1. Recorded videos from an earlier iteration of the course can be found on YouTube here.
  2. Books

    1. 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.
    2. 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
  3. Practice Questions

    1. Question Set 1
    2. Question Set 2
  4. OpenGL Tutorials

    1. CS475/CS675 OpenGL Tutorials
    2. LearnOpenGL Tutorials by Joey de Vries
    3. OpenGL.org tutorial listings
    4. Nate Robins' OpenGL Tutorials
    5. OpenGL 4 Tutorials
    6. Anton’s OpenGL 4 Tutorials
  5. OpenGL Documentation

    1. OpenGL Programmers Guide - The Red Book (for OpenGL v1.1)
    2. OpenGL.org - The official OpenGL site
    3. OpenGL Registry. This has links to the various OpenGL Specifications.
    4. OpenGL Man Pages
  6. Associated Library Websites

    1. GLFW - OpenGL Context management, window and input handling
    2. GLEW - The OpenGL Extension Wrangler Library
    3. GLM - OpenGL Mathematics
  7. Online Readings

    1. 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
    2. Clipping Algorithms
      a. Cohen-Sutherland Line Clipping
      b. Cyrus-Beck (Liang-Barsky) Line Clipping
      c. Sutherland-Hodgman Clipping
    3. Transformations
      a. Homogeneous Coordinates
      b. Euler Angles
      c. Gimbal Lock
      d. Gimbal Lock
    4. Modelling-Viewing Pipeline
      a. Coordinate Systems in the Graphics Pipeline
      b. Modelling-Viewing Pipeline
    5. Visibility
      a. BSP Trees (courtesy the Wayback Machine)
      b. BSP FAQ
      c. The Art Gallery Problem
      d. Quadtrees
      e. More Quadtrees
      f. Octrees
    6. Modelling Curves and Surfaces
      a. Notes on Computing with Geometry
      b. Mathematical Elements for Computer Graphics by Rogers and Adams, Google Books
    7. Hierarchical Modelling
      a. Hierarchical Trasformations
      b. Hierarchical Modelling and Display lists in OpenGL
    8. Shading
      a. Phong Illumination Model
      b. Blinn-Phong Shading
      c. Per-Pixel Lighting
    9. Animation
      a. Principles of Traditional Animation Applied to 3D Computer Animation
      b. Continuity of Parametric Curves
      c. Quaternions and Spatial Rotations
    10. 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