Lectures: FL-311, Tuesdays, 6pm - 8:50pm
Instructor: Prof. Emmanuel Agu, FL-139, 508-831-5568, emmanuel@cs.wpi.edu
Office Hours: Tuesdays 4 - 5PM; Others by appointmentRequired Text: Interactive Computer Graphics (6th edition) by Angel and Shreiner
Supplemental texts (Optional):
- Computer Graphics using OpenGL (Third edition) by F.S. Hill Jr. and S Kelley
- OpenGL(R) Shading Language (3rd edition) by Randy Rost and Bill Licea-Kane
- OpenGL(R) SuperBible: Comprehensive Tutorial and Reference (5th Edition) by Richard S. Wright, Benjamin Lipchak and Nicholas Haemel
- OpenGL Programming Guide: The Official Guide to Learning OpenGL, Versions 3.0 and 3.1 (7th Edition) by Dave Shreiner and The Khronos OpenGL ARB Working Group
Facilities: You should do your assignments in C/C++ but may choose to develop your code on either Unix or Windows. Note that compiled graphics code tends to be large and may consume more than one megabyte of disk space. Very important: No matter what platform you write your code on, the final executable must run on the Windows machines in the WPI Zoolab with clear instructions in your documentation on how to run it. Your submitted code will be compiled, tested and graded on the machines in the zoolab. Make sure your code runs well on those machines before submitting it. Points will be deducted if you do not check that your code works on those machines.
Class Websites: The class website is at http://web.cs.wpi.edu/~emmanuel/courses/cs543/f12/. A myWPI class website has also been set up. Please post your questions on the discussion board to avoid excessive emails and so that everyone can benefit from answers given. You may send email to me if you have questions on matters that concern only you.
Software Utilities: Your programs will be written in OpenGL. OpenGL, FreeGLUT and GLEW are all installed on the machines in the WPI Zoolab.
Grade Policy: 50% exams (2 exams), 50% assignments (5 projects)
Late Assignment Credit: Late programming assignments will be penalized 15 percent per day (per 24 hours). Assignments later than 4 days late will not be accepted.
Notes:
- Reading is mandatory, working ahead is encouraged.
- Exams shall be based on lectures, readings and a bit of project knowledge, so class attendance is strongly encouraged.
- Working and discussions in pairs is okay. However, each student must turn in different and unique projects.
- Cheating is strictly forbidden
- Cheating (a.k.a., academic dishonesty), defined as taking credit for work you did not do or knowledge you do not possess, is strictly forbidden. First offenders will receive a zero grade for the assignment or exam in question and an academic dishonesty report will be filed with the Office of Student Affairs. Repeat offenders will receive an F for the course and the case will be brought before the campus hearing board (see Student Handbook).
- All assignments should be submitted via email. Hard copies or submissions on disks will not be accepted. Both your executable and source code must be turned in. Your documentation MUST include the structure of your project, what each file contains and instructions for compiling and running the program. Typically, a well-organized README ASCII text file is sufficient. Insufficient documentation will result in a loss of points. Data files should include a comment line at the start giving your name, the assignment for which it is intended, and the most recent date in which the file was changed. Please do NOT turn in hardcopies!! Your README file should be ASCII text, Microsoft Word or PDF.
Schedule
Week 1 (Aug 28) Topics: overview, graphics intro, basic HW/SW, OpenGL/GLUT intro Project 0 Not to be submitted Week 2 (Sept 4) Topics: 2D systems, window-to-viewport mapping, GLSL shader introduction Week 3 (Sept 11) Topics: points, scalars, vectors, 3D Transformations and coordinate systems, 3D modeling Project 1 Due: Tuesday, Sept 25, emailed by class time Week 4 (Sept 18) Topics: 3D modeling using polygonal meshes, the synthetic camera, 3D viewing, view volume and projection Week 5 (Sept 25) Topics: 3D clipping, illumination, shading Project 2 Due: Tuesday, Oct 9, emailed by class time Week 6 (Oct 2) Topics: Texturing, Hidden Surface Removal, Shadows Week 7 (Oct 9) Topics: Fractals & raster graphics (line drawing, polygon fill, etc) Week of Oct 16: Term break Week 8 (Oct 23) Midterm Exam: Wed, Oct 23, in-class Project 3 Due: Tuesday, Nov 6, emailed by class time Week 9 (Oct 30) Topics: Raster graphics, ray tracing Week 10 (Nov 6) Topics: Ray tracing Project 4 Due: Monday, Nov 19, emailed by 5pm Week 11 (Nov 13) Topics: Ray tracing Nov 20: No class, Thanksgiving break Week 12 (Nov 27) Topics: Ray tracing Week 13 (Dec 4) Topics: Ray tracing, Curves, Advances in graphics Project 5 Due: Friday, December 7, emailed by 11.59AM Week 14 (Dec 11) Final Exam: Tue, Dec 11, in-classClass Slides
Old Exams
- Lecture 1 (part 1) [ Introduction to Graphics ]
- Lecture 1 (part 2) [ Introduction to GLSL (part 1)]
- Lecture 1 (part 3) [ Introduction to GLSL (part 2) ]
- Lecture 2 (part 1) [ Shader Setup and 2D Graphics systems ]
- Lecture 3 (part I) [ Tiling, Maintaining Aspect Ratio and Fractals ]
- Lecture 3 (part II) [ Linear Algebra for Graphics: (Points, Scalars, Vectors) ]
- Lecture 4 (part I) [ Building 3D Models (Part 1) ]
- Lecture 4 (part II) [ Building 3D Models (Part 2) ]
- Lecture 4 (part III) [ Finding Normals ]
- Lecture 5 (part I) [ Introduction to Transformations (Part 2) ]
- Lecture 5 (part II) [ Rotations and Matrix Concatenation ]
- Lecture 5 (part III) [ Implementing Transformations ]
- Lecture 6 (part I) [ Implementing Transformations ]
- Lecture 6 (part II) [ Viewing and Camera Controls ]
- Lecture 6 (part III) [ Projection (Part 1) ]
- Lecture 7 (part 1) [ Projection (Part 1 (contd) ) ]
- Lecture 7 (part 2) [ Projection (Part 2) ]
- Lecture 7 (part 3) [ Hierarchical 3D Modeling ]
- Midterm Review slides [ Midterm Review ]
- Lecture 8 (part I) [ Lighting, Shading and Materials (Part 1) ]
- Lecture 9 (part I) [ Lighting, Shading and Materials (Part 2) ]
- Lecture 9 (part II) [ Lighting, Shading and Materials (Part 3) ]
- Lecture 10 (part I) [ Shadows and Fog ]
- Lecture 10 (part II) [ Texturing ]
- Lecture 11 (part I) [ Image Manipulation ]
- Lecture 11 (part II) [ Clipping ]
- Lecture 12 (part I) [ 3D Clipping ]
- Lecture 12 (part II) [Clipping, Viewport Transformation & Hidden Surface Removal ]
- Lecture 12 (part III) [ Rasterization: Line Drawing ]
- Lecture 13 (part I) [ Rasterization: Polygon filling and Antialiasing ]
- Lecture 13 (part II) [ Curves ]
- Lecture 13 (part III) [ Ray Tracing (part I) ]
- Finals Review slides [ Finals Review ]
- Sample Midterm Exam [ Fall 10 Midterm Exam ]
- Sample Final Exam [ Fall 11 Final Exam ]
Main Web Resources
- 2004 Spaceship Gallery
- Gallery from 2001 class
- OpenGL Page by Nate Robbins
- GLUI, a GLUT-based User Interface by Paul Rademacher at UNC allows you to add add controls such as buttons, checkboxes, spinners, etc. to OpenGL applications, (painlessly).
- OpenGL.org: Getting started with OpenGL
- OpenGL.org Website
- How to install FreeGLUT and GLEW
- OpenGL online Book website: installing FreeGLUT and GLEW, and using Visual Studio 10