Course website and syllabus: http://cs.union.edu/csc385/
Quick Links: Schedule | Projects | Blackboard
OpenGL Programming Guide Version 1.4. by Woo, Neider, Davis, Shreiner (available online)
or an earlier version is available here: http://www.glprogramming.com/red/
In this class, we study the fundamental concepts and processes that drive 3D computer graphics. We begin with a study of digital images and digital image processing. Next we study rendering techniques; rendering is the process by which a 3D model is converted to a 2D image. We cover ray tracing and the graphics pipeline process. Finally we look at some methods for modeling 3D objects. You will implement various graphics algorithms through in-class lab exercises and three programming projects.
Class attendance and participation is a critical component of the course. Please discuss any necessary absences with me.
Handing in assignments: Assignments (projects and lab exercises) will be handed in as one .zip file on blackboard through the "Send File" option of the "Digital Drop Box" (on the "Control Panel"). The zip file should include your complete Visual Studio project directory for that assignment. If you work on your project on your personal computer, be sure to test that it runs in Visual Studio installed in Olin 102.
If lab exercises are not completed in class, they are due before class on Tuesday the following week.
Project | Goal | Grade Weight | Due |
Image Processing Project | Familiarize yourself with C++ and create a simple image processing program. | 25% |
Th 1/28 |
Ray Tracing Project | Implement a basic raytracer that reads a description of a 3D scene from a file and produces a rendered image of that scene. | 25% |
T 2/23 |
OpenGL Project | Create an OpenGL application from scratch that implements a 3D robot that can be controlled by the user. | 25% |
W 3/17 |
Labs | Get hands-on experience with different graphics concepts through in-class exercises. | 15% |
Tuesdays |
Class Participation | Come to class prepared to both ask and answer questions on new material as well as previously covered material. | 10% |
Each class |
Basic Course Requirement
In order to pass the class you must earn a passing grade. In addition, however, you must meet the following basic requirement. Before the final exam time for the course, you must submit a solution to each of the course projects that earns at least 50% of the possible points (prior to removal of late points, see below). In other words, you cannot blow off an entire project and pass the class! Note that this basic requirement is necessary but not sufficient to pass the class.
Attendance
Class participation is a critical component of the course and attendance is mandatory. Please discuss any necessary absences (eg. athletics, religious holidays, emergency, illness) with me. You may be asked to make up for missed material. You will not receive credit for make-up material if you did not discuss your absence with me prior to class.
Late Assignments
Assignments turned in late will drop your grade for that assignment by 10% per day. For example, an assignment worth 100 points handed in after 1:30 on the due date, but before 1:30 the next day will have a max grade of 90 points.
Students with Disabilities
It is the policy of Union College to make reasonable accommodations for qualified individuals with disabilities. I encourage students wtih disabilities to make an appointment to meet with me as soon as possible to discuss accommodations that might help facilitate your learning. You will need appropriate documentation from the Student Support Office. All discussions will remain confidential.
Academic Integrity
Scholastic dishonesty is misrepresenting someone else's work as your own, which is a form of stealing, and will not be tolerated. You are responsible for reading and understanding Union's policies regarding Academic Conduct in the student handbook (http://www.union.edu/StudentLife/Handbook/) and Union's statement on plagarism (http://www.union.edu/Library/refroom/statement.htm).
Skeleton code is available for most of the assignments. Any additional code you submit must be designed and written by you unless you obtain prior approval from me. You may discuss algorithms relevant to given assignments with each other. Typically collaboration is acceptable for lab exercises, but students must complete and hand-in their own programming solution, and indicate who they worked with (eg. in the header comment of the code).
Note: Subject to change. Be sure to check for updates at: http://cs.union.edu/~tartaroa/CSC385/
Date | Topic | Helpful Readings |
Labs | Assignments due |
T 1/5 | Introduction | Brookshear, ch 10 (available on blackboard) | ||
Th 1/7 | C++ basics | Java to C++ tutorial (available on blackboard) | ||
T 1/12 | IP I: Simple pixel transformations, interpolation/extrapolation, compositing, convolution |
Image Processing by Interpolation and Extrapolation | ||
Th 1/14 | IP II: Dithering, warping | Holtzman, Beyond Photography | Lab 1: Project 1 Setup | |
T 1/19 | IP III: Morphing | |||
Th 1/21 | 3D Transfoms, homogenous coordinates, scene graphs | Foley, van Dam, Feiner and Hughes, Chapter 5 - Geometrical Transformations (available on blackboard) | ||
T 1/26 | RT I: Ray casting, intersection tests | |||
Th 1/28 | RT II: Ray tracing scene graphs | Marschner, Simple ray-triangle intersection (available on blackboard) | Lab 2: Snowman | Project 1 due |
T 2/2 | RT III: Lighting | Lab 3: Lighting | ||
Th 2/4 | RT IV: Recursion, texture mapping | Project 2 checkpoint 1 | ||
T 2/9 | RT V: Bells & whistles |
|||
Th 2/11 | RT VI: Optimizations | Project 2 checkpoint 2 | ||
T 2/16 | PIPE I: Overview of pipeline systems | Lab 4: OpenGL | ||
Th 2/18 | PIPE II: Lights | Lab 5: OpenGL Lights | ||
T 2/23 | PIPE III: Camera control | Lab 6: Camera | Project 2 due | |
Th 2/25 | PIPE IV: Tricks with buffers | Lab 7: Shadows | ||
T 3/2 | Mapping | Lab 8: Textures | ||
Th 3/4 | Non-photorealistic rendering | Project 3 checkpoint | ||
T 3/9 | Animation: The Uncanny Valley Project 3 help session |
|||
Th 3/11 | Guest Lecture! Kristina Striegnitz on Games | |||
Wednesday, March 17, 11:30-1:30 |
Each person will give a short demo of their Project 3. All projects must be handed-in by 11:30 and earn 50% of the points to pass the course. | Project 3 due |