Computer Graphics CSC418 Fall 2017
Sections
LEC0101 Wednesdays 12:00–14:00 in LM 158
Prof. Karan Singh
karan@dgp.toronto.edu
+1 416–978–7201
Office hours Wednesdays 14:00–16:00 in BA 5258
LEC0201 Tuesdays 15:00–17:00 in GB 220
Prof. Alec Jacobson
jacobson@cs.toronto.edu
+1 416–946–8630
Office hours Tuesdays 17:00–19:00 in BA 5266
Tutorial for both sections will be held together on Mondays 12:00–13:00 in GB 220.
News
| Date Posted | Anouncement |
|---|---|
| 11/9/2017 | Welcome to CSC418 |
| 25/9/2017 | A1 posted |
| 3/10/2017 | Submission instructions for assigments |
| 3/10/2017 | Midterm during tutorial hour on Oct 30 |
| 13/10/2017 | A2 part A posted, part B to come on Oct 15. |
| 15/10/2017 | A2 part B posted. |
| 15/11/2017 | A3 posted |
Links
Course Overview
This course introduces the basic concepts and algorithms of computer graphics. It covers the basic methods needed to model and render 3D objects, including much of the following: graphics displays, basic optics, line drawing, affine and perspective transformations, windows and viewports, clipping, visibility, illumination and reflectance models, radiometry, energy transfer models, parametric representations, curves and surfaces, texture mapping, graphics hardware, ray tracing, graphics toolkits, animation systems.
Prerequisites: CSC336H1/CSC350H1/CSC351H1/CSC363H1/364H1/CSC365H1/CSC373H1/ CSC375H1/378HI, MAT137Y1, CSC209H1/proficiency in C or C++ ;
CGPA 3.0/enrolment in a CSC subject POSt.
The student is expected to read background material on the hardware and local software, and should be comfortable with elementary linear algebra, geometry, and vector calculus. It is also assumed that the student is comfortable programming in basic C++.
Recommended preparation: MAT237Y1, MAT244H1.
Lecture Schedule
Links to lecture slides are required readings. These links are available before each lecture (but may be minimally altered for the lecture).
Online notes present the slides in greater detail and are strongly suggested reading. Sections under the Textbook column refer to strongly suggested readings from Shirley’s textbook. External links point to online resources (e.g., Wikipedia and MathWorld) that you may find helpful. They are not required readings.
| Topics | Slides | Shirley Chapters | |
|---|---|---|---|
| Part I: Basic Graphics Primitives | |||
| Tutorial 1 | Hello, I’m your TA. There’s no tutorial this week. | ||
| Lecture 1 | Introduction & raster operations Line drawing, 2D polygons, parametric 2D curves (circle, ellipse) Introduction.pdf Curves.pdf Wikipedia List of curves |
lecture1.pdf, lecture1_6up.pdf | 3.1–3.5; 2.5–2.6 |
| Tutorial 2 | C++, OpenGL and Hierarchical Models | ||
| Lecture 2 | Interpolation & 2D Transformations Rigid, conformal, affine transformations. Homogeneous coordinates. Coordinate-free geometry. Transforms.pdf Coordfreegeom.pdf |
6.1; 2.4; 6.3 | |
| Tutorial 3 | C++, OpenGL and Hierarchical Models | ||
| Lecture 3 | 3D Surfaces Planes, tangents, normals, bilinear patches, quadrics/superquadrics. 3D transformations. 3dobjects.pdf |
2.9–2.11; 13.1; 6.2 | |
| Part II: Viewing in 3D | |||
| Tutorial 4 | 3D meshes, cylinders, surfaces of revolution | ||
| Lecture 4 | Camera models and 3D transformations Change of basis, Scene Hierarchies, Viewer coordinates. Perspective and orthographic projections. Pseudo-depth. | lecture4.pdf, lecture4_6up.pdf | 7.2-7.3; 7.3-7-5 |
| Tutorial 5 | Life of a polygon: object, world, camera coordinates, homogeneous projection, 3D view volume | ||
| Lecture 5 | Visibility BSP, Spatial partitions, Z-buffer | lecture5.pdf, lecture5_6up.pdf | 8.1-8.2 |
| Part III: Appearance Modeling Animation and Rendering | |||
| Tutorial 6 | Visibility, back-faces, spatial partitions. | ||
| Lecture 6 | Lighting and Reflection Diffuse, ambient, specular, and Phong models. Interpolative shading, texture mapping. |
8.1-8.2 | |
| Tutorial 7 | |||
| Lecture 7 | review of concepts for MIDTERM + Catmull-Romm splines + Key-framing, parametric curves, motion capture. Data-driven and Physics-based animation | lecture8.pdf, lecture8_6up.pdf | |
| Tutorial 8 | MIDTERM | ||
| Lecture 8 | Basic ray tracing algorithm. Computing ray-plane intersections | lecture7.pdf, lecture7_6up.pdf | 10.1-10.7 |
| Tutorial 9 | Ray tracing review | ||
| Lecture 9 | Refraction, Distributed/stochastic ray-tracing, Backwards ray-tracing (caustics), radiosity. | lecture7.pdf, lecture7_6up.pdf | 24.1-24.2 |
| Tutorial 10 | Refraction and transmission. Ray trace pseudo-code. | 10.8,10.10 | |
| Lecture 10 | Polynomial interpolation, smooth curve design, Bezier, b-splines, hermite splines. | lecture9.pdf, lecture9_6up.pdf | 15.1-15.3, 15.6.1, 15.4-15.5 |
| Tutorial 11 | Curves review. | ||
| Lecture 11 | part II of lecture 10. |
lecture9.pdf, lecture9_6up.pdf | |
| Tutorial 12 | Final exam review | ||
| Lecture 12 | Wooden Monkey presentation, Summary | 16.1-16.2, 16.4-16.5; | |
Assignments
Academic Honesty (Please Read!!!)
Links to assignments will be available on the hand-out dates
| Date handed out | Due date | Assignment | Helper code | Submission |
|---|---|---|---|---|
| Sep 25 | Oct 11 | A1, A1 webapp | js code | instructions |
| Oct 13 | Nov 1 | zip file | instructions | |
| Nov 15 | (wooden monkey Dec 4) Dec 8 | A3 | zip file | instructions |
Recommended Textbook and References
Currently, there is no textbook that reflects all the material covered in this class. Only the Slides in the Lecture Schedule are required reading.
In-class lectures will be supplemented by online notes (lecture slides and course notes) as well as portions of the following recommended textbook:
Textbook
- Fundamentals of Computer Graphics, 2nd Edition, A.K. Peters by Peter Shirley. Be sure to check the online errata and slides available on the above link.
Textbook sections and online notes listed next to each lecture are strongly suggested reading.
- OpenGL Programming Guide: The official guide to learning OpenGL, version 1.4, By the OpenGL Architecture Review Board, Addison-Wesley. This book will be a useful reference for getting some of the programming assignments done. (Also available online)
- OpenGL Reference Manual, By the OpenGL Architecture Review Board, Addison-Wesley. (Also available online) Supplementary Textbooks
We will not be using the following books directly, but they offer different perspectives on the topics that will be covered in class.
- A. Glassner, Principles of Digital Image Synthesis, vol. 1&2, Morgan Kaufman, 1995
- J. Foley et al., Computer Graphics: Principles and Practice, Addison Wesley, 1997
- A. Watt, 3D Computer Graphics, 3rd edition, Addison-Wesley, 1999
- D. Hearn and M. P. Baker, Computer Graphics, 3rd edition, Addison-Wesley, 2003
- J. Blinn, Jim Blinn’s Corner: A Trip Down the Graphics Pipeline, Morgan Kaufman, 1996
- J. Blinn, Jim Blinn’s Corner: Dirty Pixels, Morgan Kaufman, 1998
- R. Fosner, OpenGL Programming for Windows95 and NT, Addison Wesley, 1998
- D. S. Ebert et al., Texturing and Modeling, 2nd edition, Academic Press, 1998
- G. Wolberg, Digital Image Warping, IEEE Computer Society Press, 1990
Grading
| 15% | In-tutorial test: Oct 30 |
| 35% | Final exam |
| 50% | Assignments |
There will be three assignments in total, composing 10%, 15% and 25% of the total grade, respectively. Assignments will be roughly tri-weekly. The assignments will have a written portion and a programming portion.
Late Policy
Assignments are due by 11:59pm on the due date. Assignments (including the written part) should be submitted to the TA in electronic form. Exact submission instructions will be provided with the first assignment. The written portions if hand-written should be legibly scanned and submitted electronically as well.
For each day late, including weekends, 15% of the total possible points will be deducted (a day ends at the due time).
No work will be accepted if it is more than five days late.
Academic Honesty
Academic honesty is a very serious matter and can result in very serious consequences. Note that academic offences may be discovered and handled retroactively, even after the semester in which the course was taken for credit. This is a challenging class aimed at teaching you the fundamentals of computer graphics. You wont learn much if you cheat but you might get a good grade if you get away with it. If all you want is a good grade take an easier class where you wont have to cheat!
For purposes of this class, academic dishonesty is defined as:
- Any attempt to pass off work on a test that didn’t come straight out of your own head.
- Any collaboration on written or programming assignments (its ok to share ideas on programming assignments but the code MUST be your own) in which the collaborating parties don’t clearly and prominently explain exactly who did what, at turn-in time.
- Any activity that has the effect of significantly impairing the ability of another student to learn. Examples here might include destroying the work of others, interfering with their access to resources (e.g., digital cameras), or deliberately providing them with misleading information.
Email & Bulletin Board Traffic
- Please do not send email directly to the TAs. They will not be replied.
- Main forum for answering questions about class or about the assignments is the class bulletin board. The TAs will be monitoring the board.
- Appropriate use of the board: clarifications on assignment, on lecture material, general concerns about the course, or other remarks that are appropriate for all students to see/participate in.
- Do NOT broadcast pieces of your code or answers to written assignments to the bulletin board. Specific or general implementation questions whose answer would benefit all students in the class are appropriate. However: the bulletin board is NO replacement for the tutorial hour. That should be the main forum for asking/answering questions of this sort.
- Questions of the form “I cannot find the problem with my code; here it is, can you help me” are unlikely to be replied, so don’t count on it. If you have a question with code, take it to the TA office hours or to the tutorials.