Advanced Computer Graphics

CSE 163 Advanced Computer Graphics, Spring 2018, Prof. Ravi Ramamoorthi Time and Place: Tu/Thu 12:30-1:50pm in EBU3B 2154

Overview

This is an advanced computer graphics course, intended mainly for undergraduates with a strong interest in computer graphics, as well as Masters and PhD students specializing in the area, and in related fields. Specifically, it is intended to be a regularly taught follow-on course to CSE 167 that all students who have interest in the area and have done well in 167 are encouraged to take, as part of a full-year sequence in computer graphics. The course is modeled after similar classes I have taught elsewhere, including CS 283 at Berkeley, and COMS 4162 at Columbia University. However, the UCSD course is specialized to the quarter system, and targeted more at advanced undegraduate material, rather than exploring research frontiers. Below are some example images from the types of topics we will be covering.

Prerequisites

CSE 163 is intended as a follow-on to CSE 167, and as such CSE 167 or the equivalent is a pre-requisite (you should have taken 167 or equivalent at another university, found the material interesting and done well in the course). The course also has minimal overlap with CSE 190 (Jurgen Schulze's class on virtual reality) that is taught simultaneously this spring. We have adjusted the timings so you can take both courses this quarter. (Other classes that don't overlap include CSE 165 and CSE 169 in winter; you are encouraged to take this course if you enjoyed those classes last quarter). In summary, the material in CSE 163 does not have any major overlap with other courses, although the initial signal-processing part may be a bit familiar if you have taken an image-processing course (CSE 166 is offered concurrently, so this is unlikely). At the same time, CSE 163 is intended to be a one-stop advanced graphics course, covering all topics in the field, and following on naturally from CSE 167. The course is intended to be of interest to MS and PhD students in graphics, vision or robotics, in addition to advanced undergraduates. If you like this course, I would highly recommend also registering for the advanced graduate courses like CSE 274 and 291, which will be taught next year.

Course Format and Requirements

This is a regular lecture course, consisting of lectures on the relevant topics by the instructor. As opposed to CSE 167, this course is intended to have a more intimate feel, with a smaller class size, more in-class discussions and more independence and creative leeway in projects. We expect you to create websites to turn in your work. We also do not provide skeleton code, except for homework 1.

Grading will be based entirely on 3 large programming projects. The last of these is a final project that provides some flexibility in design to students (while also providing a number of concrete options). The projects will cover signal/image processing, geometric modeling/meshes and real-time/image-based rendering.

Students taking the course for a letter grade are required to do all three projects (this may be in groups of 2; the requirements remain unchanged if working alone, although we will consider in assigning the final grade). Programs must be implemented entirely by students themselves; You may not copy source code from previous instances of this or a similar class, other students, or other online etc. resources. You may also not post your source code publicly, including to github or other public repositories.

Please note that there is minimal hand-holding on the projects. They are large assignments for which you are given 3-4 weeks, and they cannot be done at the last moment. You will need to start early and work steadily. No late days will be given except in exceptional circumstances. Since you are supposed to be working steadily, turn in what you have by the deadline, even if it is not perfect. If you do have extraordinary circumstances, please contact the instructor well *before* the assignment is due.

We will also consider graduate students who want to take the course P/NP or S/U. Two of the three projects are still required in this case. However, you may obtain credit for one ongoing project (another class or research) in lieu of the final project. Therefore, graduate students taking the couse P/NP of S/U (they may obtain the full 4 units) would in most cases need to do only one project in all (one of the first two regular projects) to receive a passing grade. Please speak with me if you are interested in this option. Please note that a passing score in this course requires an average grade of 50%, whether taking the class on grades or pass-fail. Thus, if choosing to take it pass-fail and do only two projects, you still need to get at least a 75% average on these two projects; if that does not happen, then you will need to do the third project to get an overall average of 50%.

Logistics

Lectures will be held Tue/Thu at 12:30pm in EBU3B 2154. Instructor office hours will be before class on Tuesdays and Thursdays in his office, EBU3B, Room 4118 from 11 - noon. The instructor can also be reached at any time by e-mail at ravir@cs.ucsd.edu to set up a time to meet if this is not convenient.

The teaching assistant for this course is Jiyang Yu jiy173@eng.ucsd.edu. Office hours will be Monday and Wednesdays, 11am to noon, in CSE 4150 (may be moved to the VisComp lab in CSE 4127 if there is too much demand). The tutor is Ziyang Li zil159@ucsd.edu. His office hours will be Thu, 3-4pm and Fri, 4-5pm in CSE 4127 (the VisComp lab). Please e-mail the TA/tutor to set up a different time individually if none of these work. The group e-mail for the TAs/tutors is cse-163ta@eng.ucsd.edu.

We have also created a Piazza newsgroup for the course. Please sign up as soon as possible CSE 163 Spring 2018

For resources on basic math, see linear algebra Free Text. For resources on Fourier analysis, the DSP guide may be useful (for example, chapters 8-13 on discrete fourier transforms). There are many other online links if you search the web.

Topics

Topics include an overview of many aspects of computer graphics, including the four main computer graphics areas of animation, modeling, rendering and imaging. Specific topics to be covered include

Resources

There are no books specifically required for this class. Readings including book chapters and papers are provided where needed for each lecture. Optionally, a comprehensive computer graphics book such as Computer Graphics Principles and Practice by Foley, van Dam et al. can be useful (a new edition recently came out).

Outline

The (tentative) course schedule is as follows. (Please note that lecture links will work once the lectures are posted).

Assignments

The three programming assignments, on which evaluation will be based, are released below. Please note that you are not allowed to copy code from other students or other online resources, including those who took the course previously.

Please submit the assignments on TritonEd. The instructions below may provide an option to e-mail the TA as in previous years, which you can still do as a last resort. But, given the size of this year's class, we are requesting submission on TritonEd to keep easier track of assignments. If you e-mail us, we will simply re-direct you to TritonEd submission. Please note that both partners must separately submit on TritonEd, but will of course include a link to the same URL etc. If you are working in a group of two, please include your partner's name in your submission, along with the link to the URL. We will not levy a penalty if you get confused about these instructions, especially in the initial assignment, as long as we receive the assignment by the deadline through some mode of submission. However, you will likely make our life much simpler by following these directions and making your TritonEd submission.

Assignment 1: Image and Signal Processing (due Apr 27, 11:59pm)

The assignment includes a detailed specification available as a PDF file. From the length of the document (8 pages), it should be clear that you need to START EARLY on the assignment, checking with the course staff if you run into problems. However, don't be alarmed. One of the reasons for the length of the text is to specify the assignment clearly and reduce ambiguities. In principle, the programming assignment should be completely self-contained, viz. you should be able to understand and make progress simply by reading the assignment. Of course, the materials in lecture are important for fully understanding the relevant concepts. The work can be rewarding; after completing the assignment you will have an image processing program that can do many of the features of software like Photoshop or ImageMagick. In some cases, you will provide better antialiasing and resizing than widely available programs, thereby better understanding their algorithms and shortcomings.

The assignment isn't really meant to have skeleton code, but we are providing support with a Windows (Visual Studio 13) and Linux/Mac OS Zip file. The Windows version includes a visual studio project and the Linux/Mac OS version includes a Makefile that should allow compilation from a Unix Shell. In both cases, execution will be from the command line (for Windows, this is the old cmd.exe command line or equivalent from within Visual Studio, not the new Power Shell). In case compilation doesn't work or is not supported for your environment, you should be able to create your own project from the source and header files. Please see the instructor or TA IMMEDIATELY if you have issues with downloading and compiling the code. All the skeleton does is set up a basic template and parse options; we support it only minimally and you are welcome to write your own skeleton code. The distribution also includes a sample solution binary for Windows (can be run on Unix/Mac using wine or similar program). You may use the solutions for reference, although of course image processing programs do tend to differ, and I don't expect your solution to be pixel-identical.

Previous students have pointed out an obscure problem when using the MinGW development environment, which requires manually setting the OS flag to OS_WIN. This likely won't affect any of you, but in case the images are distorted, please come talk to the instructor or TA.

Assignment 2: Mesh Simplification and Progressive Meshes (due May 18, 11:59pm)

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

Assignment 3: Final Project (due Jun 12, 11:59pm; proposal and milestone due Jun 1, 11:59pm)

The final project provides many choices, some of which have a concrete step-by-step structure, related to real-time and image-based rendering, and some of which are less well-specified and give you freedom to exercise your creativity. The assignment is specified here. To ensure you stay on track, a project milestone and proposal is due on Jun 1 at 11:59pm. The milestone should be a 1-2 page PDF or website saying what you have accomplished so far and showing at least one image, and a brief 1-2 para proposal of what you will do for the final report. Please do meet with the instructor/TA if you get stuck or need ideas.


Ravi Ramamoorthi
Last modified: Thu Feb 15 20:32:49 PST 2018