This course is intended to provide a graduate-level introduction to modern computer graphics. We will cover some of the basic background of 3D computer graphics in the areas of geometry, physical simulation/animation, imaging and rendering. The course is intended to bring incoming graduate students or advanced undergraduates up to the research frontier, and prepare them for further work in the field. As such, at least half the material in the course will go over topics of current research interest, such as subdivision, the physical simulation of solids and fluids, and precomputation-based methods for real-time rendering.

Below are some example computer-generated images, of the types of
simulation, geometry, rendering and imaging topics we will be studying.

We have a Piazza newsgroup; please sign up (CS 283, spring 2013). We will be posting topics of general interest to the class there, so it is important everyone signs up. Given the small size of this course, I will also try to be available on e-mail.

- Image Quilting for Texture Synthesis (Danny Weinberg and Kat Aleksandrova)
- Cloth Simulator (Greg Dehmlow)
- Fluid Simulator (Woody Chow)
- Seam Carving (Gabe Fierro and Graham Tremper)
- Texture Synthesis (John Z. He)
- Path Tracing Extensions (Nick Estorga)
- Inverse Kinematics with Cyclic Coordinate Descent (Kris Harkleroad)
- Stable Fluids, Mass-Spring Simulation (Woojong Koh)
- Deep Shadow Maps (Richard Lin)

- New High-Dynamic Range Algorithm (Michael Tao)
- Inverse Kinematics (William Li)
- Cloth and Deformable Objects" (Jonathan Ko and Victoria Chiu)
- Smoothed Particle Hydrodynamics (Yusui Yusuke)
- Particle Simulation and Cloth (Roozbeh)
- Stable Fluids (Eric and Sally)

We offer a full plate of computer graphics courses. I hope you will be enthusiastic about, and enrol in these offerings. Besides the undergraduate CS 184, there are a host of graduate classes in geometry, visualization, rendering and so on. More classes will be added in future years, initially as CS 294, then transitioning to permanent numbers. We intend this course (now permanently numbered CS 283) to be the entry-level class for the other special topics courses.

CS 283 is intended to be a regular lecture course, but adapted for advanced undergraduates and incoming PhD students. A syllabus/schedule is noted below. Grading will be based on 4 programming projects, all of which can and should be done in groups of two (you are responsible in that case for finding partners, and also to ensure each person does their fair share; you can also choose to work individually if you decide, though the requirements will remain the same in this case). In relation to those who took CS 184 with me, the scope of each project is similar to the raytracer and opengl assignments of CS 184, and the workload is therefore similar (one less project but all of large scope; no midterm or final, but the material is obviously more advanced).

* You are also welcome to propose your own research or
implementation project in lieu of one or more of the assignments,
subject to instructor approval.* In this way self-directed
students may pursue topics of special interest to them. Also,
students who are more interested in (say) geometry than rendering,
could pursue additional projects in that space. Students are also
welcome to take the class pass/fail, and should speak to the
instructors in regards to requirements in this case. This may be a
good option for more advanced PhD students seeking to learn topics
outside their immediate research area. Auditors, who simply want to
sit in on the course are also welcome; however, we prefer if you sign
up for the course pass/fail instead.

The lectures will be Tuesdays and Thursdays from 12:30-2:00pm in Soda Hall, room 320. The first class will be on Tuesday, Jan 22. Please feel free to contact the instructor regarding talking about the class material. Since this is an advanced course, we intend these discussions to be more informal, and not need the formal scope of office hours. In general, however, Prof. Ramamoorthi will be available after class. You may also e-mail him for an appointment or drop in at other times.

The course will be graded on the basis of four assignments, that primarily involve programming systems for modeling, rendering and animation or imaging. These assignments can be done individually or in groups of two. If in a group, both partners will receive the same grade. You may have different partners for different assignments. The assignments are due on the dates listed, and will usually be submitted by creating a web site and sending the link to the instructors. The website should not be modified after the due date.

Since the time provided is 3-4 weeks for each assignment, * we will
not usually allow extensions unless you ask beforehand with a good
reason.* We prefer you instead turn in what you have as of the deadline.
Since this is an advanced graduate class, we expect you to be organized,
working through the semester constantly.

You are also free (and encouraged) to speak to the instructor about
* substituting a research or implementation project for one or more of the
assignments. * In general, you will be asked to provide a brief written
plan of work, and the instructor can then approve that as a substitute for
the assignment. This allows you to focus more clearly on topics of interest.

The four assignments (and assignment 0) are all available below. They are all fairly substantial (and we hope instructive) so you are encouraged to start early.

** Assignment 0** is simply biographical information, as in CS 184.
Please complete it by ** Thu, Jan 24, 11:59pm. **
E-mail the grader your name,
e-mail address, year and major, and primary development platform as separate
lines. Also include a 120x160 image of yourself for the class roster. The
e-mail could simply be something like

Brandon Wang

brandonwang@berkeley.edu

EECS Senior

Mac OS X Mountain Lion

In addition, you would attach your photograph, and include any other
information of interest. This is just like you did in CS 184.

* For those students who have never previously written a raytracer,
you should also do that in the first two weeks of the class; please see
the note on assignment 2 below. *

** Assignment 1 on Mesh Simplification and Progressive Meshes is
available as a PDF file here.
The due date is Feb 22, 11:59pm. **

We have placed a number of models here , and most are available in a ZIP file. The most relevant papers on
which this assignment is based are by Hoppe 96 and Garland and Heckbert 97. You are also
encouraged to look at the web pages of Garland and Hoppe for
additional support material. In particular, note the appendix in Garland's
PhD thesis for implementation details on quadric error metrics.

** Assignment 2 on Monte Carlo rendering is available as a PDF file here. The due date is Mar 20,
11:59pm.
**

* For those students who have no previous experience in
rendering/raytracing,* please refer to lectures 9 and 10 from the
CS 184 online lectures, as well as the linked CS 184
Raytracer Assignment. * For those students only,* this is
a prelude to assignment 2 (and counts for 30% of the grade for
assignment 2). It should be turned in along with assignment 2, but we
recommend you complete it even before assignment 2, in the first 2 weeks of
the course (set yourself a due date of Feb 5, 11:59pm).
* Most students will
not need to do this assignment, instead starting with their existing
raytracing code, but those who did not take CS 184 with me
may want to take a brief look. *

** Assignment 3 on Real-Time or Image-Based rendering is available as a PDF file here. The due date is Apr 19,
11:59pm. **

** Assignment 4 is the final project, and is available as a
PDF file here. The due date is May 13, 11:59pm. **

Topics to be covered include, but are not limited to

- Introduction to Basic Ray Tracing and BRDFs
- Global Illumination and Monte Carlo Rendering
- Recent Developments in Fast Offline Rendering
- Image-Based and Real-Time Rendering
- Data-Driven Methods
- Signal-processing and low-dimensional and data-sparse methods
- Imaging and Computational Photography
- Basic Geometric Concepts
- Meshes and Subdivision Surfaces
- Finite Elements and Numerical Integration for Animation
- Fluid Simulation and Reduced Order Models
- Inverse Kinematics
- Rigid Body Dynamics

For the first edition of the course, we asked one student to scribe each lecture. For those parts of this year's edition that follow a similar structure, these scribe notes, available from that website may be useful. (Please note that we have reordered the syllabus somewhat).

We will spend the first two weeks on the introduction and overview, as well as reviewing some basic concepts (Fourier analysis and sampling for imaging, and basics of 3D objects and meshes). For those with no previous rendering experience, a basic raytracer should be written in the first 2 weeks.

Therafter, we will start on geometric modeling (assignment 1), describing
mesh data structures and mesh simplification. We will also discuss subdivision
(which is one possibility for assignment 4). Our next unit will focus on
rendering (assignments 2 and 3). We will start with basic global illumination
and path tracing, and then discuss real-time and image-based rendering. Many
lectures will discuss topics of current research interest in offline and
real-time rendering, as well as physically accurate materials. We will then
move to animation and physical simulation, starting with basic geometric
concepts, kinematics, and mass-spring and rigid body simulation, as well as
motion capture (writing a physical simulation is one choice for the final
project). Our final lectures will be on imaging and computational photography.

Date |
Topic |
Due | Related Reading | Lecture Notes |

Jan 22 | Introduction and Overview | Biog Info (by Thu) | PPT PDF | |

Jan 24 | Fourier Analysis and Sampling | FvDFH 14.10 | PPT PDF | |

Jan 29 | 3D objects and meshes | PPT PDF | ||

Jan 31 | Mesh Data Structures | PPT PDF | ||

Feb 5 | Mesh Simplification and Progressive Meshes | Hoppe 96 | PPT PDF | |

Feb 7 | Quadric Error Metrics | Garland 97 | PPT PDF | |

Feb 12 | Subdivision | Stam 98 Siggraph 00 Notes | PPT PDF | |

Feb 14 | Illumination and Reflection | Cohen Wallace Torrance Sparrow Cook Torrance | PPT PDF | |

Feb 19 | Global Illumination and Rendering Equation | Kajiya paper | PPT PDF | |

Feb 21 | Monte Carlo Integration | Assignment 1 | Veach Thesis (Ch. 2) Stanford Course (Part 2) | PPT PDF |

Feb 26 | Monte Carlo Path Tracing | Siggraph Course Notes Cook 84 | PPT PDF | |

Feb 28 | Recent Advances in Offline Rendering | PPT PDF | ||

Mar 5 | Real-Time Rendering | Heidrich Cabral Envmap Shadows 1 Shadows 2 | PPT PDF | |

Mar 7 | Real-Time Rendering 2 | Continue Shadow/Env Maps | ||

Mar 12 | IBR + Light Fields | Siggraph 00 Course Notes | PPT PDF | |

Mar 14 | Frequency Analysis + Signal Processing | PPT PDF | ||

Mar 19 | Precomputation-Based Rendering | Assignment 2 | Sloan 02 Ng 03 Ng 04 PRT Survey | PPT PDF |

Mar 21 | Basic Geometric Concepts | PPT PDF | ||

Apr 2 | Rotations | See above | ||

Apr 4 | Inverse Kinematics | PPT PDF | ||

Apr 9 | NO CLASS | |||

Apr 11 | NO CLASS | |||

Apr 16 | Physical Simulation 1 | Siggraph Course Notes | PPT PDF | |

Apr 18 | Computational Photography (Dikpal) | Assignment 3 | ||

Apr 23 | Physical Simulation 2 | Modal Analysis Paper | PPT PDF | |

Apr 25 | Motion Capture | PPT PDF | ||

Apr 30 | Imaging and Computational Photography | SIGGRAPH Courses | PPT PDF | |

May 2 | Texture Synthesis | Assn 4 (by May 13) | PPT PDF |

Ravi Ramamoorthi