CS535: Interactive Computer Graphics

90 downloads 178 Views 24KB Size Report
CS535: Interactive Computer Graphics. Instructor: Daniel G. Aliaga (aliaga@ purdue.edu). Classroom: LWSN B134. Time: MWF @ 4:30-5:20pm. Office hours:  ...
CS535: Interactive Computer Graphics Instructor: Daniel G. Aliaga ([email protected]) Classroom: LWSN B134 Time: MWF @ 4:30-5:20pm Office hours: TBA TA: Jian Cui ([email protected]) Interested in computer graphics? Does modeling objects interest you? Do you like rendering photorealistic imagery? Is doing animations fun to you? All this is part of computer graphics. This course teaches the fundamentals, at a graduate school level, for such activities and research projects. Major applications include: • Virtual Reality • 3D Scanning • Video Games • Film Special Effects • CAD/CAM • Simulation • Medical Imaging • Image Processing • Scientific and Information Visualization

1. Prerequisites Students are required to have previous C/C++ programming experience and are recommended to have previous computer graphics experience, such as OpenGL programming experience (although OpenGL will be reviewed at the beginning of the semester).

2. Course work The course work is composed of programming assignments, exams, and interactive class participation. The programming assignments consist of a warm-up assignment, three incremental programming assignments and a final assignment. The exams consist of a midterm and a final exam. Class participation will consist of active participation during class (you be called upon) and the presentation of a mini-review to your classmates. The mini-review will cover material previously covered in class and will serve to help prepare you for the final exam. Course work will be easier to manage if you keep a constant pace through the semester. This course is hard work but you will learn a lot and have fun!

3. Grading Programming Assignments: 20% (assignments 0-3) 35% (final assignment) Class Participation: 15% (10% class-presentation, 5% active participation) Exams: 10% (midterm) 20% (final) ----100% TOTAL

4. Tentative Lecture Schedule (most current one is on webpage) August 23 – Course Organization, History, Programming at Purdue (OpenGL, GLUT, GLUI) Assignment #0 out August 25 – Cameras and Projections: Camera Models August 27 – Cameras and Projections: Linear Algebra Review, Projections, Virtual Trackball August 30 – Cameras and Projections: Single/Multi-projections and Omnidirectional Cameras Assignment #0 due Assignment #1 out September 1 – Graphics Pipeline: rasterization September 3 – Graphics Pipeline: shading and lighting September 6 – No Classes (Labor Day) September 8 – Graphics Pipeline: advanced shading (GPU shading, CUDA, etc) September 10 – Texture mapping: concept and projective texture mapping September 13 – Colors: perception and models Assignment #1 due Assignment #2 out September 15 – Colors: perception and models September 17 – Colors: calibration September 20 – Spatial Hierarchies: September 22 – Spatial Hierarchies September 24 – Spatial Hierarchies September 27 – Culling September 29 – Culling October 1 – TBA Assignment #2 due Assignment #3 out October 4 – Review October 6 – Midterm October 8 – Going over exam October 11 – No Classes (Fall Break) October 13 – Ray tracing and global illumination: ray tracing and ray casting October 15 – Ray tracing and global illumination: ray tracing and ray casting October 18 – Ray tracing and global illumination: radiosity October 20 – Ray tracing and global illumination: global illumination October 22 – Global Illumination: Light Transport Assignment #3 due Final Projects out

October 25 – Final Projection Explanation, Simplification: static vs dynamic LOD October 27 – Simplification: vertex clustering, edge-collapse Final Project Selection due (by email) October 29 – Simplification: hybrid approaches, geometry images November 1 – Procedural modeling: plants November 3 – Procedural modeling: buildings November 5 – Procedural modeling: cities November 8 – Images: morphing and warping November 10 – Images: morphing and warping November 12 – Images: resizing synthesis November 15 – In-depth presentations I November 17 – In-depth presentations II November 19 – In-depth presentations III November 22 – In-depth presentations IV November 24 – No Classes (Thanksgiving Day) November 26 – No Classes (Thanksgiving Day) November 29 – Demo Rehearsal December 1 – TBA December 3 – Demo Day! (dead week) December 6 – Review for final December 8 – December 10 – Final Exam – see university schedule

5. Assignments You may use CS lab computers or home computers. Assignments must be written in C/C++ on a Windows computer. Assignments are due before class time on the due date and must be sent to the course TA using Blackboard Vista including all source code, data files, and an already compiled program. The time-stamp will be used to verify on time submission. The grading for the assignment will consider functionality and form. All assignments must be polished products, with a well designed user interface and clean, reliable functionality. A program that does not compile obtains 0 points. Assignment #0 – Warm up (1 week). The objective is to get a small working project that uses OpenGL+GLUT+GLUI to implement a simple screen-saver style program. The program will open up a window, display a GLUI interface to choose screen-saver options, and draw a simple

2D screen saver in the main window. If you are already well versed in Windows GUI programming, you may use that instead of GLUI but only upon approval by the instructor. Assignment #1 – Camera Projections (2 weeks). The objective is to ensure you understand well camera models and perspective projection. You will implement a program that draws simple 2D shapes bouncing within a plane but observed from a user-controlled 3D viewpoint and 3D viewing direction. The user should be able to specify via the GLUI interface a 3D viewpoint and 3D viewing orientation. For this assignment you must compute the “projection” and “model view” matrices yourself and then render the geometry – you may not use OpenGL provided projection matrix creation functions or OpenGL translation/rotation matrix tools. Extra credit: implement a virtual trackball interface controlled by the mouse. Assignment #2 – Scene Modeling (2.5 weeks). The objective is to write a program to load a simple 3D scene from disk rasterize, shade, and light it. We will provide a simple scene file describing several object primitives in a simple text file format. You will load the primitives and shade/illuminate them using one of several standard methods (e.g., Gouraud, Phong). The scene is static but the viewpoint is dynamic. Extra credit: implement other shading techniques, such as shadow-mapping, and/or support dynamic objects. Assignment #3 – Large-model Rendering (2.5 weeks). The objective is to address rendering a large 3D model. To enable this, we will provide you with a program to generate a 3D model of arbitrary size and you will have to implement a spatial hierarchy in order to perform viewfrustum culling and simple distance-based culling. Competition: the person that is able to draw the largest model at the fastest frame-rate will win the competition and earn an extra credit of 10% of their final project. The gain of efficiency can be obtained by careful programming and/or by implementing additional techniques/tricks to reduce the rendering load. Final Assignment (6 weeks). Projects will be presented on a publicly attended “demo day” at the end of the semester (December 3rd – details TBD based on enrollment). You may choose from one of the following: a) Procedural Modeling: implement a 3D procedural modeling method for a particular class of objects. b) Sketching Interface: develop and intuitive way to sketch 3D building designs, with focus on human-computer interaction. c) Simplification: extend assignment #3 to some form of geometric simplification (you can be creative), e.g., replace each node with a “box”, collapse nodes, use images, etc. I will supply models of varying sizes. d) Your own project but must be approved beforehand. You must submit it in writing and get it approved before the start of the Final Assignment. Grading: the final assignment must be a polished product, with a well designed user interface and clean, reliable functionality.

6. In-Depth Presentation (and Class Participation)

Towards the end of the semester, each student will also give a short presentation to the class of a topic of interest (i.e., an expansion of a topic covered during the semester or background research for their final project). Also, in general students will be called upon during class to explain concepts and solve problems (sometimes in small teams).

7. Exams The midterm will cover material explained in class, stressing fundamentals. The final exam will cover material of the entire semester and will stress understanding of general interactive computer graphics and its fundamentals. Both are closed book and will require “understanding and imagination” rather than memorization of formulas. A qual exam will be offered after the final exam. 8. Administrative Issues Late policy Assignments are due before class on due date. First time late – no penalty for up to one week, but instructor must be notified via email BEFORE deadline (if instructor not notified via email before assignment due date, late pass cannot be used and assignment will be late). Second and subsequent times -- grade reduction of 33% per day. All assignments required by demo day at end of course or failing grade will be issued. Collaboration All assignments, exams, and review presentations must be done individually. Final projects may be done in teams upon approval by the instructor. Copying or plagiarism will give you a failing grade in the course and you will be subject to departmental and University policies. Code obtained from the Internet, books, or other sources may *not* be used for any assignment. Exceptions allowed only under explicit instructor approval.