Graphics banner

Topics in Computer Graphics
CMPS 3120/6120 Fall 2015

Course Information

A comprehensive introduction to the mathematics and algorithms that drive today's digital special effects, animation, and games. Designed as a hands-on course, students will gain experience in building 2D/3D interactive applications using OpenGL. Topics covered will include geometric transformations, projections, raster algorithms, 3D object models (surface and volume), visible surface algorithms, texture mapping, lighting/shading, ray-tracing, anti-aliasing, and compositing.

Prerequisites
  • CMPS 1600 or good programming skills (C and C++ preferred language of the course)
  • Knowledge of basic data structures like:
    • Linked Lists
    • Arrays
    • Trees
  • Geometry
  • Simple linear algebra: matrix multiplication, vector addition, etc.
Instructor Office Hours
Thursdays, 12:15PM-2:00PM, or by appointment
Times
Tuesdays and Thursdays, 11:00AM - 12:15PM, ST 302
Lab: Thursdays, 02:00PM - 03:15PM, DW 102
Book
Required:
  • Interactive Computer Graphics: A Top-Down Approach with WebGL, 7th Edition by Angel and Shreiner
Other Good Graphics Texts:
  • OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 4.3 (8th Edition)
  • Fundamentals of Computer Graphics (3rd Edition) by Shirley, Ashikhmin, and Marschner
  • Computer Graphics: Principles and Practice by Hughes and van Dam
  • Physically Based Rendering, Second Edition: From Theory To Implementation by Pharr and Humphreys
Grading
10% Participation
30% Assignments
30% Project 1
30% Project 2
Discussion
We will be using Piazza for class discussion. Please use this as a resource to ask me and your classmates questions pertaining to course material, labs, and projects.
Find our class page at: https://piazza.com/tulane/fall2015/cmps31206120/home
Collaboration and Academic Integrity
You are required to adhere to the Code of Academic Conduct. Cheating will be reported to the Associate Dean of Newcomb-Tulane College. I encourage collaboration, but everyone's work must be their own. Help and sharing of small code snippets to help someone get past a bug are OK, but whole files or classes are not. In cases of over sharing, everyone involved will be held equally responsible irregardless of who did the original work. To help avoid misunderstandings, I encourage coding help to be done via Piazza. This keeps things clear for me when grading, allows the entire class to learn from the fix, and gives people easy points towards class participation. Sources other than the textbook should be cited appropriately.
One Wave
Tulane University recognizes the inherent dignity of all individuals and promotes respect for all people. As One Wave, Tulane is committed to providing an environment free of all forms of discrimination and sexual harassment, including sexual assault, domestic and dating violence, and stalking. If you (or someone you know) has experienced or experiences gender-based violence, know that you are not alone. Learn more at onewave.tulane.edu.
Schedule

Since this is a new course, timing and topics may be adjusted.

Date Topic Reading
Aug. 25 Introduction to Graphics Chapter 1
Aug. 27 Color and Frame Buffer
Sept. 1 Primitives, Windows, and OpenGL Chapter 2 & 3
Sept. 3 OpenGL Programming
Sept. 8 Vectors, Matrices, and Transformations Chapter 4
Sept. 10 Geometry and Transformations cont.
Sept. 15 Polygon Intersections and Clipping Chapter 5
Sept. 17 Views, Projections, and Cameras
Sept. 22 Models
Sept. 24 NO CLASS
Sept. 29 Models cont. and Simple Texturing git clone https://bsumma@bitbucket.org/bsumma/texturing_example.git
Oct. 1 Spatial Data Structures and Hidden Surface Removal
Oct. 6 Shading Chapter 6
Oct. 8 Shading Cont.
Oct. 13
Oct. 15 FALL BREAK
Oct. 20 Chapter 9
Oct. 22
Oct. 27 NO CLASS
Oct. 29 NO CLASS
Nov. 3 Chapter 8
Nov. 5
Nov. 10 Chapter 11
Nov. 12
Nov. 17
Nov. 19
Nov. 24
Nov. 26 THANKSGIVING
Dec. 1
Dec. 3
Projects

Project 1: 2D Game - Due Oct. 20

For this project, you'll use all of the topics covered so far in the course: drawing, primitives, transforms, texturing etc. to build a simple 2D game. I'll give you a skeleton and guidance making a simple asteroids clone. The project will be open-ended: you can improve upon the asteroids template or build something completely new.

Asteroids: git clone https://bsumma@bitbucket.org/bsumma/asteroids.git

Things you need to show:

  • Use of color
  • Transformations
    • Single Object deformations: i.e. the ship movement
    • Multiple Object - Shared deformations: e.g. rotate everything
    • At least one scale, translation and rotation (does not need to be part of an animation)
  • Some fun vector math, e.g.:
    • When an Asteroid breaks, do something fun with the directions they break
    • Apply gravitational forces to make flying more difficult
    • Have a character jump
  • Texture Mapping, e.g.:
    • space background
    • texture mapped ship or asteroid
    • bitmap (sprite sheet) for score
Project 2: Simple Ray Tracer - Due Dec. 15

For our final project, you'll construct a simple ray-tracer, the basic image creation technique for feature animation and special effects. You'll also be required to first build an interactive, 3D OpenGl application to preview your rendered scene. This will leverage all topics covered in the course including: 3D transformations, texture mapping, lighting, shading, reflection, refraction, and global illumination.

Resources