Instructor: Dr. Zia Khan (my first
name)(at symbol)cs.umd.edu
Day and Time:
Monday 2pm-3:15pm
Wednesday 2pm-3:15pm
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
piazza
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:
CMSC427_HelloWorld2D.zip
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.
.| Date | Readings | Written Assignments |
|
|---|---|---|---|
| Week 1 | |||
| 9/1 | NO CLASS Labor Day | ||
| 9/3 | L1: Course Overview, Administration, and SIGGRAPH Videos lecture_notes_20140903.txt |
FCG 1 | Class Survey |
| Week 2 | |||
| 9/8 | L2: Images lecture_notes_20140908.txt || [slides] |
FCG 3.1-3.3 | |
| 9/10 | L3: Image Coordinate Systems and Image Blending lecture_notes_20140910.txt || [slides] Visual glBlendFunc + glBlendEquation Tool |
FCG 3.4 | |
| Week 3 | |||
| 9/15 | L4: Image Interpolation and Aliasing lecture_notes_20140915.txt Moire Pattern Generator |
FCG 2.6, FCG 9.1 | Written Assignment 1 |
| 9/17 | L5:Image Filtering & Image Gradients lecture_notes_20140917.txt Convolution Applet Seam Carving |
FCG 9.2-9.4 | |
| Week 4 | |||
| 9/22 | L7: C++ What You Need to Know lecture_notes_20140922.txt |
||
| 9/24 | L6:Color and HDR Images lecture_notes_20140924.txt Intro to Color Theory Applets Luminance HDR |
FCG 23-23.2 | |
| Week 5 | |||
| 9/29 | L8: The Qt (pronounced like "cute") toolkit lecture_notes_20140924.txt simple_commandline_CMSC427.zip |
Qt5 Documentation | Written Assignment 2 |
| 10/1 | L9:"Hello World" Shader-Based OpenGL lecture_notes_20140924.txt CMSC427_minimalGL_2D.zip |
||
| Week 6 | |||
| 10/6 | L10: Math Review: Vectors, Barycentric Coordinates, Matrices lecture_notes.pdf Barycentric Coordinates |
FCG 2.3, 2.4, 5.1-5.3 |
|
| 10/8 | L11: 2D Transformations + GLSL Data Types lecture_notes.pdf 2D Transformation Game |
FCG 6.1-6.1.5, 6.3 | Written Assignment 3 |
| Week 7 | |||
| 10/13 | L12: Scene Graphs lecture_notes.pdf || [slides] Scene Graph Applets |
FCG 12.2 | |
| 10/15 | L13: Polygonal Meshes lecture_notes.pdf |
FCG 12.1 | |
| Week 8 | |||
| 10/20 | L14: Meshes Continued lecture_notes.pdf |
||
| 10/22 | L15: Phong Shading || [slides] lecture_notes.pdf |
FCG 10.2 | |
| Week 9 | |||
| 10/27 | L16:Texture Mapping || [slides] lecture_notes.pdf |
FCG 11.2 | |
| 10/29 | L17:Rotations in 3D and Normals || [slides] lecture_notes.pdf |
FCG 6.2 | |
| Week 10 | |||
| 11/3 | L18:Quaternions || [slides] lecture_notes.pdf WebGL SLERP |
||
| 11/5 | L19: Viewing and Cameras || [slides] lecture_notes.pdf Camera Transformation Demo |
FCG 7 | |
| Week 11 | |||
| 11/10 | L20: OBJ Viewer Review and 3D drawing in OpenGL lecture_notes.pdf CMSC427_minimalGL_3D.zip |
||
| 11/12 | L21: Depth Buffering || [slides] lecture_notes.pdf |
FCG 8 | |
| Week 12 | |||
| 11/17 | L22: Shadow Mapping || [slides] lecture_notes.pdf |
FCG 11.7 | |
| 11/19 | L23: Cube Mapping lecture_notes.pdf || [slides] |
FCG 11.6 | |
| Week 13 | |||
| 11/24 | L24: Ray Casting and Intersections || [slides] | FCG 4 | |
| 11/26 | Informal Q&A/Thanksgiving Eve | ||
| Week 14 | |||
| 12/1 | L25: Bounding Volume Hierarchies || [slides] | FCG 12.3 | |
| 12/3 | L26: Path Tracing and Global Illumination || [slides] WebGL Path Tracing | FCG 24 | |
| Week 15 | |||
| 12/8 | L27: Parametric Surfaces and Subdivision NURBS demo |
FCG 15 | |
| 12/10 | L28: Review for Final Exam Example Final Exam Questions |
||
| Finals | |||
| 12/18 | Final Exam: Thu, 12/18, 1:30-3:30p in CSIC 1121 | ||