Instructor: Dr. Zia Khan (my first
Day and Time:
Location: Computer Science Instructional Center (CSIC) Room 1121
Instructor Office Hours: By appointment and will schedule based on demand.
Teaching Assistant: Josh Bradley, jgbrad1(at)cs.umd.edu
TA Office Hours: Friday, 2-3pm in AVW 4103
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. Image source: Minions by Universal Pictures and Illumination Entertainment.
For the assignments, you'll need to have Qt 5.5.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. We will be using the submit server at submit.cs unless otherwise specified.
We've created a CMSC427 Fall 2015 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 grade distribution is below
5% class and Piazza participation
60% assignments and projects
Grades will be available on grades.cs.
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.
You will loose 5% per day the assignment is 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 copying and pasting, you will be required to use the OpenGL helper classes in the Qt Library unless otherwise instructed.
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. Your evaluations will be used to improve the class in following years.
The schedule will be updated frequently over the semester.Please check back regularly. TBD designates "to be determined."
|9/1||L1:Introduction, Logistics, Rendering Intro [slides]|
|9/3||L2:Intro to C++/Qt/HelloWorld2D [slides C++]
|A1: Modify HelloWorld2D|
|9/8||L3:HelloWorld2D (2nd try), Color [slides color]|
|9/10||L4:Images: Intro, Sampling, and Reconstruction [slides, images]|
|9/15||L5:Images: Warping and Compositing [slides,images]||A2: Image Processing|
|9/17||L6:3D Models, Intro and Polygon Meshes [slides,modeling]|
|9/22||L7:Subdivision Surfaces [slides,subdivision]|
|9/24||L8:Parametric Curves and Surfaces [slides, parametric]|
|9/29||L9:Modeling with Implicit Surfaces [slides, implicit]||A3: Mesh Processing|
|10/1||L10:Geometric Transformations + Scene Graphs [slides,
2D Transformation Game
|10/6||L11:Rotations + Quarternions[slides,rotations]|
|10/8||L12:Viewing + Vertex Shaders [slides, viewing]
Camera Transformation Demo
|10/13||L13:Midterm Review + Extra Time
|10/20||L15:Rasterization, Depth, Clipping
[raster visible, slides]
|10/22||L16:Light and Matter Interaction
[light matter, slides]
|A4: Materials, Texture, Shadow|
|10/27||L17: Assignment 4 Discussion & Phong Shading
[light matter, slides]
|10/29||L18:Texture Mapping & Mesh Parameterization
|11/3||L19:Assignment #4 Discussions|
|11/5||L20:Shadow, Normal, Environment, and Bump Mapping
|Final Project Guidelines|
|11/10||L21: Addressing Scene Complexity
|11/12||L22: Ray Casting + Intersections
[ray cast, slides]
|A5: Ray Tracing|
|11/24||Informal Help on A5 and Final Project|
|11/26||NO CLASS Thanksgiving|
|12/1||L25:Animation + Skinning [anim/skinning, slides]|
|12/3||L26:Particle Systems + ODEs [particle/sode, slides]|
|12/8||L27: Mass Spring Models + Implementing Particle Systems + Collision Detection [mass spring, collisions, slides]|
|12/10||L29:Final Exam Review + Final Project Help|
|12/15||Final Project Code + Writeup Due at 11:59pm|
|12/17(Thursday)||Final Exam at 10:30am-12:30pm in CSIC 1121|