CS 184 Administrative Details and Information

Spring, 2010

Instructor: | Ravi Ramamoorthi 627 Soda 510-643-5186 ravir@cs.berkeley.edu Office Hours: MW 2:30-4pm @ 627 Soda (after class) |

TA: | Fu-Chung Huang 545 Soda jonash@eecs.berkeley.edu Office Hours: M 12-1pm, Th 2-3pm Sections: Tu 12-1pm, 1-2pm 405 Soda |

TA: | Daniel Ritchie 751 Soda dcritchie@berkeley.edu Office Hours: Tu 4-5pm Sections: Tu 3-4pm 310 Soda |

Questions?: | cs184@imail.eecs.berkeley.edu |

Newsgroup: | ucb.class.cs184 news.csua.berkeley.edu |

- Come to the TA or Professor office hours.
- Post your question on the CS 184 news group
- Send email to the TAs. The TAs will likely only answer questions that are already posted on the class bboard, or are of a personal nature and too specific to be of interest to other students.
- Send email to the professor. The TA response time is likely to be faster than the professor's.

CS 184: Foundations of Computer Graphics

This course is an introduction to the foundations of 3-dimensional computer graphics. Topics covered include 2D and 3D transformations, Bézier and B-Spline curves for geometric modeling, interactive 3D graphics programming, computer animation and kinematics, and computer graphics rendering including ray tracing, shading, lighting and global illumination. There will be a strong emphasis on the mathematical and geometric aspects of graphics. This course is regularly offered every semester (the instructor may vary from offering to offering, as may the content somewhat).

This will be a hopefully fun course, but will require considerable
implementation and understanding. This is especially so, since the
required programming for the later assignments is difficult, and since
graphics programming in general, and especially coding in OpenGL is a
new skill. Debugging and working with graphical programs requires
substantial work, which is difficult to replace by teaching it
theoretically. The main advice is to * START EARLY * on the
programming assignments and ask the instructor or TAs if you run into
any difficulties; we are always ready to help. Most students should
successfully complete the assignments, and find the course very
rewarding and fun, with the ability to understand the theory behind
and implement graphics programs.

Pre-requisites for the course: Solid C/C++ programming background. Linear algebra and some general mathematical skills. (If you only know Java, you may want to consider using this course as an opportunity to become familiar with C++.)

*Note*: This is the introductory graphics course. More
advanced follow on courses (CS 294-13, to be re-numbered as CS 283)
will generally be taught every year. Beyond this, there are a number
of other CS 28x and CS 29x courses of interest, taught by the
department, that you may consider in the next academic year.

Lectures

MW 1 - 2:30pm in Soda 306.

Assignments and Exams

There are five projects, comprising primarily of programming. All
projects are due by midnight on the dates specified below, unless
explicitly stated otherwise. The first two assignments should be
completed individually, and the third to fifth in groups of two.
For more detail, see the assignments
page. In group assignments, you only need to hand in one
copy of the assignment. In this case, it is *your*
responsibility to make sure that you both contribute
equally. That is, we cannot accept "half" of an
assignment from you if your partner failed to do his/her part.
You can change partners between assignments 3, 4 and 5 if you want.

In addition, we will have a midterm and final. The midterm will be in class. The final will be in exam group 5, on Tuesday May 11, from 8-11am. We will go over some review questions in classes specially designated for that purpose. Doing well on the midterm/final will require following the material at the level of the content covered in the review sessions, as well as a basic understanding of course material.

Late Policy

Your grade will be whacked 15% (of your actual score) for each 12 hours late (or 30% per day). The late deduction is a step function. That is, you lose 15% of your score for being 1 min late or for being 11 hours 59 minutes late. You lose 30% of your score for being 12 hours and 1 minute late. After 3 days, no credit will be given. No extensions will normally be given, unless for very compelling personal reasons. Additionally, a stronger late policy may be followed for the final assignments to allow for timely grading. Also, if you do want an extension, you must ask for it as far in advance as possible, clearly stating the reason why; we will not usually give extensions close to the deadline or after the fact, except for clear emergencies and unforeseeable circumstances.

Grading

Your final grades will be computed by weighting the assignments tentatively as follows (instructor reserves the right to change final weighting).

HW # | Written | Programming |

0 | 10 | 0 |

1 | 0 | 40 |

2 | 0 | 50 |

3 | 0 | 100 |

Midterm | 80 | 0 |

4 | 0 | 100 |

5 | 0 | 75 |

Final | 120 | 0 |

Books

I would first like to note that it is difficult to find a suitable graphics textbook; they all have their disadvantages. For some of the topics, we will not be following any particular textbook. We will however, try to refer to the relevant textbook material in the lecture notes, or note that this material is not well covered in the book (and make the lecture slides complete). As far as what the course tests, and therefore what you need to focus on in the reading, it will be based on the lecture material. We note here some of the texts we recommend, along with commentary on the book's suitability.

If these books are not available in the campus bookstore or nearby
stores, they are readily available with online booksellers like
Amazon. Additionally, we will place these and other books as course
reserves at the Engineering Library. Note also that previous editions
of a textbook are generally adequate, but the chapters on this website
will generally be with respect to the latest edition.

Required: Fundamentals of Computer Graphics

by Pete Shirley and Steve Marschner (3rd edition)

This is a fairly simple text. The third edition is considerably expanded and the chapters are with respect to that. The advantage is that it is easy to follow to get some understanding of the topics. The disadvantage is that the approach and content to the various topics may not quite follow the lectures, and some topics may be treated too simply or not very well at all. Most students like this textbook, and you should consider having it. However, it may not suffice well for all the material, and we will be closely following it only in the initial stages of the course. We will try to be explicit in lecture where we are and are not following the text. If we don't follow the text, we will try to prepare some notes, give out handouts, or make the lecture slides very explicit.

Optional: Computer Graphics: Principles and Practiceby Foley, van Dam, Feiner and Hughes

This is widely regarded as the bible of computer graphics, and is a comprehensive text that we will be referring to. If you have further interest in graphics, like are considering taking the more advanced courses next year, I would definitely recommend getting this. If not, I would still recommend being able to follow up in it, in case there are certain topics you want to see in more detail. The main disadvantage is the encyclopedic nature of the text, making the exposition quite complicated, that can go over the head for many students taking graphics for the first time. In many ways, the Shirley text is at the other extreme, and the course (hopefully!) tries to find a middle path.

Required: The OpenGL Programming Guide Seventh Edition (The Red Book)

by Shreiner, Woo et al.

Earlier Versions Available Online: http://www.opengl.org/documentation/red_book

This is a comprehensive tutorial on the Graphics API we will be using for most of the course. If you ever intend to write substantial graphics programs, you should have this book. If you don't buy it, you're probably going to be sharing someone else's, or trying to decipher sample code. Please note that you will be using this primarily as a reference, looking things up as and when you write code. The syllabus below refers to chapters that you will need to know, but that is more as a reference to what we will be covering. In practice, you will gain more by actually doing and looking up what you don't know, rather than just reading the red book end to end (although that's not bad either, if you have the time). Also please note that the latest edition involves many changes (as the graphics pipeline itself has evolved in recent years). We will not in general be focusing on all the new features, so an old edition is probably ok, but we will touch on some recent developments.

Optional: Real Time Rendering Third Edition

by Moller and Haines

This is the best book available on techniques for creating interactive complex renderings. It explains many of the techniques used by game creators, without focusing too much on the exact details of any one particular system ( like the "Black Art of { mac, windows, etc. } Game Programming" series of books ). This book will probably be most useful as a reference for the interactive OpenGL project. The authors of this book maintain a webpage at http://www.realtimerendering.com/ which is full of valuable information.

Optional: Computer Animation: Algorithms and Techniques

by Rick Parent

This is a useful reference for the animation lectures in the course, and for implementing assignment 4.

Optional: An introduction to ray tracing

by Andrew Glassner

This is a useful reference for implementing the raytracer in assignment 5. Some parts of this will be handed out in class. There are many newer textbooks on ray tracing and rendering, including Glassner's encyclopedic two-volume work on Principles of Digital Image Synthesis.

In addition to the above, a number of other basic and advanced texts have been placed on reserve in the engineering library, including

- Bartels, Beatty, Barsky. An Introduction to Splines for use in Computer Graphics and Geometric Modeling.
- Cohen and Wallace. Radiosity and Realistic Image Synthesis.

Programming

There will be 5 programming assignments. In the the first two assignments, we will provide a fairly complete skeleton of code to get you started. As the course progresses, you will be expected to write more and more of the assignments from scratch. For assignments 3-5, you will be relatively on your own. You may feel free to re-use code from previous assignments at any time, particularly to handle window setup and interaction. Most of the assignments are based on OpenGL, a portable graphics library. Since everything about these assignments is portable, you can do them on any computer you want. However, we are only supporting the assignments for Windows. If you use another platform, you are largely on your own for sample solutions, compilation issues etc. and you must make sure HW 1 and HW 2 compile on our machines and you can demo HW 3- HW 5 for us. Avoid platform specific code, at least in HW1 and HW 2, like user interface widgets, since we need to be able to grade your code. If you don't have visual studio or an alternative compilation environment and platform, speak to the TA to get a copy. If there are other issues about where to work, again speak to the instructor or TA.

Collaboration Policy

Programming projects are to be implemented either individually
(assignments 1 and 2) or in groups of 2 (assignments 3-5) *from
scratch*, i.e., you should not derive
solutions from existing sources or previous instances of this course.
Discussion of programming projects is allowed (encouraged). Copying of
solutions or code from other students, or from students who previously
took this course is not allowed. If you do obtain substantial help
from the instructor, TA or another student, you must document this in
your program. A good guideline is that you must be able to explain
and/or duplicate anything that you submit. Furthermore, you should in
general not copy code from other sources. If in doubt, please ask.

Lecture schedule and assignment due dates

Broadly, the course is divided into 6 segments. Note that we will periodically assign lectures to reviewing problems and working out mathematical examples.

The first segment deals with the mathematics of transformations
and viewing, telling you how to move and scale objects to place them
correctly in the world. This is the basis for assignment 1. The
second segment describes how to use Bezier and B-spline curves to
interpolate points and create shapes. This is the basis for
assignment 2. Together, these segments relate to * modeling *
or creating models of the world you want to make a picture of. The
third segment describes interactive 3D programming and OpenGL, the
graphics API we will be using, and is the basis for assignment 3.
Segment 4 describes how to make images once you have a geometric model
of the world, discussing illumination and shading models. This is
known as * rendering * or creating images of computer graphics
models. It also covers the basics of writing a ray tracer, that can
produce more compelling images than OpenGL. It forms the basis for
assignment 4. Finally, we also describe advanced shading and global
illumination models. There is no related programming project (though
this topic will be continued if you take the graduate course next
year). Segment 5 deals very briefly with animation and inverse
kinematics. The final assignment 5 could be on global illumination,
animation, or any of the other assignments or topics of your choice.

Readings are with respect to the Shirley text (third edition) unless otherwise noted. Note that the course (and midterms/final etc.) is based primarily on the material in lecture; we will not test you on supplementary reading material not covered in lecture. In all of the lectures, we will try to make explicit which sections of the chapters we cover, and how our coverage relates to that in the text and handouts.

** The homework will generally be due by midnight on the day
following what is listed here. Thus, Homework 0 is actually
due by 11:59 pm on Tuesday, Jan 28 and so on. However, note that Homework 4 is due on Monday (Apr 26) itself (not on the following day Tue). **

Date |
Topic |
Due | Related Reading |

Jan 20 | Overview of Computer Graphics, course | ||

Jan 25 | Vectors and Linear Algebra | 2,5 | |

Jan 27 | Transformations 1 | Homework 0 | 6 |

Feb 1 | Transformations 2 | 6,7.2, 3.5 RTR (handout) | |

Feb 3 | Viewing | 3.5 RTR (handout) | |

Feb 8 | No Lecture | ||

Feb 10 | Curves 1 (Daniel) | Homework 1 | (Optional) handout 4-5.1,8.1-3 of CAGD |

Feb 17 | Curves 2 | (Optional) 15, polar forms paper | |

Feb 22 | Review of curves | Curves problems | |

Feb 24 | OpenGL 1 | GL pages 1-50+ | |

Mar 1 | OpenGL 2 | Homework 2 | GL chapters 3,7, early part of 9 |

Mar 3 | OpenGL 3 | GL 5,15 | |

Mar 8 | Review of Transforms | Transform Problems | |

Mar 10 | Review of Viewing/OpenGL | HW 3 milestone | Transform/OpenGL Problems |

Mar 15 | Ray Tracing Intro | 4 | |

Mar 17 | Midterm | ||

Mar 29 | Ray Tracing Nuts and Bolts 1 | Haines chapter (handout) | |

Mar 31 | Ray Tracing Nuts and Bolts 2 | Homework 3 | Hanrahan chapter (handout) |

Apr 5 | Basic Shading and Texturing | ||

Apr 7 | Radiometry | CW 2.6.2 handout | |

Apr 12 | Global Illumination | HW 4 milestone | Handout |

Apr 14 | Radiosity | Handout FvDFH 16.13.1-2 | |

Apr 19 | Catch up / Review | ||

Apr 21 | Review of RT/Global Illum | ||

Apr 26 | Animation | Homework 4 (today) | Handouts, (Optional) 17 |

Apr 28 | Inverse Kinematics | Homework 5 (due May 10) | Handouts |

Thanks to Greg Humphreys for the layout of these pages.