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 11
  • 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, Animesh, Kiran Rannebannur
  • 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
Aug 1 Introduction to the Course Watch videos for units 1-2 to 1-5.
Aug 4 Rasterization Basics Videos for units 2-1 to 2-4.
Aug 8, Aug 11 The OpenGL API Videos for units 3-1 to 3-3. Complete OpenGL tutorials 0, 1 and 2.
Aug 25 Pinhole Camera and Clipping Videos for units 4-1, 4-2.
Aug 25, Aug 29 2D Transformations Videos for units 5-1, 5-2.
Aug 29 3D Transformations Videos for unit 5-3.
Sep 1 Quiz 1 SIC 301, 8:30am-9:30am
Sep 1 Viewing Transformations Videos for unit 6.
Sep 5, Sep 8 Modeling Viewing Pipeline Videos for unit 7.
Sep 8, Sep 12, Sep 15 Visibility Videos for unit 8.
Sep 21 Mid Semester Exam 18:30-20:30, CC105
Sep 26 Hierarchical Modeling Videos for unit 9.
Sep 29, Oct 3, Oct 6 Rendering Videos for unit 11.
Oct 10, Oct 13 Texture Mapping Videos for unit 12.
Oct 17 Modeling Curves - Cubic Splines Videos for unit 10.
Oct 20 Modeling Curves - Bézier Splines Videos for unit 10.
Oct 27 Modeling Curves - B-Splines Videos for unit 10.
Oct 27 Modeling Surfaces
Nov 3 Principles of Animation Videos for unit 13.
Nov 3, Nov 7 Interpolation for Animation Videos for unit 13.
Nov 10 Volume Graphics For additional readings, see here.

Assignments and Homeworks

  1. Assignment 1: Particle Systems
  2. Assignment 2: Transformers - Modelling and Rendering
  3. Assignment 3: Transformers - Animation


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
      c. The Beauty of Bézier Curves, Freya Holmér, YouTube Video
      d. The Continuity of Splines, Freya Holmér, YouTube Video
    7. Hierarchical Modelling
      a. Hierarchical Transformations
      b. Hierarchical Modelling and Display lists in OpenGL
    8. Shading
      a. Phong Illumination Model
      b. Blinn-Phong Shading
      c. Per-Pixel Lighting
      d. Texture Mapping, Lecture from Trends in CG Course, Zoran Popović
    9. Animation
      a. Principles of Traditional Animation Applied to 3D Computer Animation
      b. Continuity of Parametric Curves
      c. Quaternions and Spatial Rotations
      d. Visualizing Quaternions, Grant Sanderson and Ben Eater
    10. Volume Graphics
      a. Volume Rendering Techniques, GPU Gems
      b. Volume Rendering, Wikipedia
      c. Marching Cubes, Lorensen and Cline
    11. 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