Instructor: Dr. Zia Khan (my first
Day and Time:
Location: Computer Science Instructional Center (CSIC) Room 1121
Instructor Office Hours: By Appointment, please email.
Teaching Assistant: Josh Bradley, jgbrad1(at)cs.umd.edu
TA Office Hours: Friday at 12pm-1pm in AVW 4103 or send him an email to arrange a time
An introduction to the principles of computer graphics. Includes an introduction to graphics displays and systems. Introduction to the mathematics of affine and projective transformations, perspective, curve and surface modeling, algorithms for hidden-surface removal, color models, methods for modeling illumination, shading, and reflection. Unlike previous years, this course will cover shader-based OpenGL. Shader-based OpenGL is the basis of OpenGL ES which is used widely in mobile applications. Image source: Dispicable Me by Universal Pictures and Illumination Entertainment.
You can download .PDFs and .ZIP files with templates for each assignment here when they're available. For the assignments, you'll need to have Qt 5.3.x or newer installed. Please follow this document with instructions for Windows, Mac OSX, and Linux InstallingQtCMSC427.pdf. Do not try to build it from source. Use one of the pre-built packages with OpenGL support for your compiler. Also, the assignments don't involve writing much code, but they can be very challenging to debug. Please, please start early. Also, programming assignments will generally be due on Sundays by 9pm unless otherwise specified.
We've created a CMSC427 Fall 2014 Piazza Page. Feel free to discuss homework and ask questions. We'll try to reply as quickly as possible. Also, please make sure you follow proper netiquette. Any comments or answers must be on topic, polite, and respectful of others. For more information on proper netiquette, I encourage everyone to read the following resources:
I've adapted a simple OpenGL program from the book Foundations
of 3d Graphics. You can download it here:
You can use this program to see if your graphics card can handle the assignments (your card supports shaders). What you should see a little square with a picture of a squirrel that stretches left and right. If you click on the window and drag left and right with the mouse button held down, you should be able to control this stretching. You can also learn more about the version of OpenGL your graphics card supports by using GLview If you see nothing on the window, you can use the UMD Apple iMac Compute Labs for your assignments. The lab in Regents Garage, which is closest to CSIC, can be entered through this door.
The following are extra credit opportunities. Keep an eye out for updates.
The grade distribution is below (revised based on poll results on Nov 13, 2013).
10% class and/or piazza participation
10% Programming Assignment 1 - Image Processing
10% Programming Assignment 2 - 2D World
20% Programming Assignment 3 - OBJ Viewer
15% Programming Assignment 4 - Shadow Mapping
15% Programming Assignment 5 - Ray Cast Rendering
10% Written Assignments
10% University Required Final Exam (open notes, so take good notes during the year)
Open notes on the final means hand written or typed notes that you wrote up during the year or prior to the final exam. You may not print out the slides or the lecture notes we provided and use them in the final.
You must write your own code, and you must give proper attribution for any ideas/code taken from the textbooks or the web. It's allowable to talk to other students about ideas and approaches. You can get support code from example programs from the web or the text book. In all of these cases, you must reference your sources (web, other student, textbook, etc). You cannot share your code with another student or use ideas/code without attribution. Where possible, you must use the Qt OpenGL Helper and Math Classes.
With each programming assignment, you will accumulate 1 late day. You can use these late days at any time in the semester, except 6 days before grades are due. Otherwise, you will loose 5% per day the assignment is late. You do not accumulate any late days with written assignments, but you loose 10% per day late.
Please read the UMDCP attendance policy. Please do email me if you find yourself falling behind in class. I’m here to help.
Maintaining your reputation is critical in science and in business. Please read the UMDCP academic integrity policy. There is a lot of OpenGL source code on the web. Please do not just cut and paste this code into your assignments. Please do not post your assignments online. To help prevent cutting and pasting, you will be required to use the OpenGL helper classes in the Qt Library.
I encourage you to provide me with input and feedback during the semester. At the end of the semester, you'll be asked provide formal evaluations at www.courseevalum.umd.edu.
The schedule will be updated frequently over the semester. Written assignments will also be posted here as well. Please check back regularly. Written assignments will also be posted below. FCG designates suggested reading from the text book Fundamentals of Computer Graphics, 3rd edition. TBD designates "to be determined." Note that written assignments will be due by the end of class on their due date. Otherwise, they will be considered late..
|9/1||NO CLASS Labor Day|
|9/3||L1: Course Overview, Administration, and SIGGRAPH Videos
|FCG 1||Class Survey|
lecture_notes_20140908.txt || [slides]
|9/10||L3: Image Coordinate Systems and Image Blending
lecture_notes_20140910.txt || [slides]
Visual glBlendFunc + glBlendEquation Tool
|9/15||L4: Image Interpolation and Aliasing
Moire Pattern Generator
|FCG 2.6, FCG 9.1||Written
|9/17||L5:Image Filtering & Image Gradients
|9/22||L7: C++ What You Need to Know
|9/24||L6:Color and HDR Images
Intro to Color Theory Applets
|9/29||L8: The Qt (pronounced like "cute") toolkit
|10/1||L9:"Hello World" Shader-Based OpenGL
|10/6||L10: Math Review: Vectors, Barycentric Coordinates, Matrices
| FCG 2.3, 2.4,
|10/8||L11: 2D Transformations + GLSL Data Types
2D Transformation Game
|FCG 6.1-6.1.5, 6.3|| Written
|10/13||L12: Scene Graphs
lecture_notes.pdf || [slides]
Scene Graph Applets
|10/15||L13: Polygonal Meshes
|10/20||L14: Meshes Continued
|10/22||L15: Phong Shading || [slides]
|10/27||L16:Texture Mapping || [slides]
|10/29||L17:Rotations in 3D and Normals || [slides]
|11/3||L18:Quaternions || [slides]
|11/5||L19: Viewing and Cameras || [slides]
Camera Transformation Demo
|11/10||L20: OBJ Viewer Review and 3D drawing in OpenGL
|11/12||L21: Depth Buffering || [slides]
|11/17||L22: Shadow Mapping || [slides]
|11/19||L23: Cube Mapping
lecture_notes.pdf || [slides]
|11/24||L24: Ray Casting and Intersections || [slides]||FCG 4|
|11/26||Informal Q&A/Thanksgiving Eve|
|12/1||L25: Bounding Volume Hierarchies || [slides]||FCG 12.3|
|12/3||L26: Path Tracing and Global Illumination || [slides] |
WebGL Path Tracing
|12/8||L27: Parametric Surfaces and Subdivision
|12/10||L28: Review for Final Exam
Example Final Exam Questions
|12/18||Final Exam: Thu, 12/18, 1:30-3:30p in CSIC 1121|