CSE 167 - Introduction
to Computer Graphics
Fall 2003, Course Web page
Instructor: Sam Buss, Univ. of California, San Diego
Overview: This course is an
introduction to 3D computer graphics, including both using OpenGL and the theory
of computer graphics. In the fall quarter, we will cover drawing
primitives, 3D transformations including affine transformations, projection and
perspective, Phong lighting, averaging and interpolation, texture mapping, light
and color, and Bezier curves. The course will cover both the theory of
graphics and the practical uses of OpenGL and GLUT. OpenGL and GLUT is a
cross platform API that works on most common computer environments, including
Windows, Macintosh, Unix, Linux.
Prerequisites: Programming experience in C or C++ or Java is
acceptable. Math 20F (Linear Algebra) is also required.
Grading: Grading will be based on both programming
assignments and on a midterm and a final exam. It is expected that your
course grade will depend about 50% on your programming projects and 50% on your
written exam work. It is not yet decided whether written homework
assignments will be collected and graded. Grading of projects will be
individualized and one-on-one.
There will be about 5-7 programming assignments, culminating
with an individual final project. You are expected to do your own
programming and will not work in teams (except for limited exceptions in the
case of the final project).
Lab Hours for Final Exam
Grading:
Monday, December 8. 11:00-2:30 PM and
5:00-7:00 PM.
Tuesday, December 9. 9:00-12:00 AM
Instructor:
Sam Buss, Professor of Mathematics and Computer Science
Email: sbuss@ucsd.edu
(this is often the best way to contact me).
Office: APM 6210. Office phone: 534-6455.
Office hours: Tuesday and Wednesday 11:00-11:50, Thursday
9:00-10:00.
Office hours for final exam prep: Friday, Dec 5, 1:00-2:00 and Monday, Dec 8,
10:00-10:50.
I have a PC
in my office and can help with programming assignments there.
Teaching Assistants: All office hours
held in APM 2444 PC lab.
Craig Donner:
cdonner@graphics.ucsd.edu
Office hours: Tuesday and
Thursday 9:30-11:00.
Peter Schwer: pschwer@cs.ucsd.edu
Office hours: Wednesday
1:00-4:00 and Friday
2:00-5:00.
Diem Vu:
d1vu@cs.ucsd.edu
Office hours: Wednesday and Friday
12:00-2:00. Thursday 4:00-6:00.
Rooms and Times:
Lectures: Tuesday and Thursday at 2:00-3:20, Peterson
110.
PC lab: APM 2444. Door code: 0593110 (for use
only by students of this class).
Textbook: (Required) S. Buss, 3D
Computer Graphics: A Mathematical Introduction with OpenGL. Cambridge
Univ. Press, 2003. This book has just appeared and is by your instructor.
So this class will be "breaking it in": in particular, please let me know if you
find typographical mistakes or other errors. Book web site:
http://math.ucsd.edu/~sbuss/MathCG.
(Recommended) M. Woo et al., OpenGL Programming Guide,
3rd Edition. Addison-Wesley, 1999. The first or especially the second edition is also fine
for the purposes of this course. See also below for the older editions
available online for free. The fourth edition is not yet available.
Programming projects: Projects must be your own individual work. Although you are allowed to seek help from others, you should be sure that you design and write your own code. If you receive substantial outside help, you must disclose this at the time your project is being graded. Violations of academic integrity will be treated seriously, and may result in referral to a Dean. There are special guidelines for this CSE 167 about academic integrity.
Project #0: Due date: Oct 3 (but nothing to hand in). Learn to login and to use the Visual C++ compiler.
Project #1: Due date: October 17. Modify an animated solar system, by adding a planet and some moons. Updated instructions clarifying the meaning a geostationary orbit are included in the project description.
Project #2: Due date: Thursday, October 30. Modify a program that draws two cubes with quads so that it uses triangle fans and quad strips instead.
Project #3: Due date: Friday, November 7. Build a wire-frame scene, with a ellipsoidal mushroom cap, and geometries based on your first initial.
Project #4: Due date: Friday, November 14. Light the scene you built in Project #3.
Final Project: Due date: Thursday, December 4. Design and implement an individual project.
Homework assignments. These will not
be turned in, but it is highly recommended that you do them. Selected
answers will be distributed after the due dates.
1. Due Tuesday, October 14. Problems II.1 (p.
19), II.2 (p. 22), II.4 (p. 24), II.8-10 (pp. 27-28) and II.11 (p. 31).
Errata in answers handed out: problem
II.2, lower right entry in the matrix should be a "-1", not a "1". Problem
II.8, it is not linear since 0 is sent to <1/2,0> (not <1,0>).
In last problem, the y argument to pglTranslatef should be 0, not 1.
2. Due Thursday, November 13.
Available in PDF format online. Answers to
first two problems only online in PDF format
3. Due Thursday, December 4.
Available in PDF format online. Answers to
selected problems to be ready December 4.
Lecture Outlines & Readings in the Textbooks: Cumulative notes in PDF format.
Quizes: Will be only a small part of
the final grade. About 3-5%. But a great way to preview problems
before the midterm and final. Quizzes will be held in the last 15 minutes
of lecture. Topics and dates will be pre-announced.
1. Tuesday, October 21.
Answers available online. Topics: Things related
to the homework #1 problems, and/or on transformations in 2D and 3D. This
does not include perspective transformations!
2. Tuesday, November 4. Answers
available online. Topics: Phong lighting
(theoretical aspects only, not OpenGL commands). First sections of chapter
III. (No Phong shading.)
Exams:
Midterm date and topics.
Answers now available in PDF format.
Tuesday, November 18.
During regular lecture time, regular lecture hall. Topics below.
Review session: Monday, November 17,
7:00 pm, Peterson Hall 108 (the big room next door to our regular class room).
Topics for midterm
Pages 1-87 and 99-105 of text book.
Barycentric coordinates: topics through area interpretation of barycentric coordinates (bottom of page 105).
OpenGL commands: You will need to know some OpenGL commands, but do not
need to memorize the more arcane versions of commands.
Most important ones to know are the transformations. You
should memorize the syntax of their basic forms (using
floating point inputs). Less important OpenGL
commands are the lighting/material commands. Example of
a fair midterm question could be: "What does the
command "glShadeModel(GL_SMOOTH);" do? Example of an
unfair question: "What OpenGL command turns on Gouraud
shading?" Again you should memorize the syntax of at least
glRotatef, glTranslatef, glScalef, glVertex3f, glNormal3f,
glLoadIdentity, glMatrixMode.
Some "study problems" are
available for the midterm in PDF format
(handwritten).
Final exam: Finals week. Monday 3:00-6:00. Topics
are Cumulative! New topics since the midterm listed in
a PDF format handout. Hyperbolic interpolation
is NOT on the final exam.
Handouts:
1. How to start a new
Visual C++ Project.
Webboard: Online class discussion via UCSD's http://webboard.ucsd.edu web page.
Resources:
The official web site for OpenGL is http://www.opengl.org/. The most useful part is probably the tutorials which can be found by clicking on "Coding" in the left side bar.
The textbook's web site at http://math.ucsd.edu/~sbuss/MathCG has a number of sample OpenGL programs illustrating basic features and usages of OpenGL.
GLUT 3.7: The GLUT libraries provide an
accessible set of routines for using the OpenGL API. All of the Math 155 /
CSE 167
homework projects will use GLUT. The necessary GLUT files can be found already
on insci14, but they are also available for download from the web.
If you are using a PC at home, you may need to download the GLUT .h, .dll and
.lib files. The GLUT
homepage is at
http://www.xmission.com/~nate/glut.html or at
http://www.sgi.com/software/opengl/glut.html. The first site has exactly
what you need for Math 155AB / CSE 167 and is more up-to-date. The second site is somewhat
more comprehensive however.
Documentation for the GLUT API is available in
HTML,
Postscript
and
PDF
formats. This documentation may not include all the features of GLUT:
advanced features can be understood by examining the source code for GLUT.
Older editions of the OpenGL programming guide are available online for free!!! The second edition can be found at http://www.dcc.unicamp.br/~lmarcos/courses/mc603/redbook/about.html. You can find the first edition at http://fly.cc.fer.hr/~unreal/theredbook/.
Errata (not many) for the third edition of the OpenGL programming guide can be found at http://www.woo.com/errata.html.
Thanks to Ofer Achler for finding this: If you are using Visual C++ .NET at home, there is a program that will convert .NET solutions (that's what .NET calls workspaces) into Visual Studio C++ 6.0 workspace and project files. You can find this at http://www.codeproject.com/tools/prjconverter.asp. If you go to the APM 2444 lab, you can just recreate a new project in minutes, but this "prjconverter" could be useful if you are trying to do the conversion at home. You will want to go to the lab long enough to make sure your code really compiles in the lab anyway!!
If you have compile time problems with Visual Studio.Net and the "exit( )" prototype in glut.h, I can give you an updated copy of glut.h that may fix your problem.
Thanks to Jefferson Ng for this: He is
using gcc on a Macintosh and the following command line invokes the gcc
compiler for him:
gcc
-framework OpenGL -framework GLUT -framework Foundation Solar.c
Advertisements: Various people ask to address the class with recruitments, job opportunities, etc. I generally say no, but let them advertise down here.