Math 155B - Introduction to
Winter 2004, Course Web page
Instructor: Sam Buss, Univ. of California, San Diego
Overview: This is the second of two
courses providing an introduction to 3D computer graphics, including both
using OpenGL and the theory of computer graphics. Topics
for Math 155B include: Bezier curves, B-splines, 3D Studio Max, Ray
Tracing, Radiosity, Intersection testing, Quaternions, Inverse Kinematics.
Prerequisites: Programming experience in C or C++ or Java is acceptable. Experience in any of these languages will be enough for you to pick up the C++ needed for some of the programming assignments. CSE 167 (Fall 2003) and Math 20F (Linear Algebra), or consent of the instructor, are 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 quizzes
and written homework assignments will be collected and graded. Grading of
projects will be individualized and one-on-one.
There will be about 5 or 6 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).
Sam Buss, Professor of Mathematics and Computer Science
Email: firstname.lastname@example.org (this is usually the best way to contact me).
Office: APM 6210. Office phone: 534-6455.
Office hours: Monday and Friday 11:00-11:50, Wednesday 10:00-10:50.
I have a PC in my office and can help with programming assignments there.
Please phone, email, or just stop by for appointments at other times.
Teaching Assistants: All TA office hours will
probably be held in APM B337/B349 PC lab.
Peter Schwer: email@example.com
Office hours: In APM B337/B349 PC lab: Monday and Wednesday 2:30-3:30 and Friday 10:00-11:00.
Rooms and Times:
Lectures: MWF, 1:00-1:50, Warren Lecture Hall 2112.
PC lab: APM B337, B349, and APM 2444 are all available.
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. THERE ARE
$1 REWARDS FOR THE FIRST FINDER OF EACH ERROR! Book web site:
(Recommended) M. Woo et al., OpenGL Programming Guide, 3rd or 4th 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.
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 help from fellow students or from any outside source, 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.
Project #1: Due date (for being graded! Work should be done earlier.): Friday, January 23. Introduction to 3D Studio Max.
Project #2: Due date (for completion of work): Midnight, Tuesday, January 27. Create Catmull-Rom and Overhauser interpolating spline curves.
Project #3: Due date (for completion of work): Midnight, Friday, February 6. Model a teapot-like object with rational Bezier patches.
Project #4: Due date (for completion of work): Midnight, Tuesday, February 24. Create degree three B-spline interpolating curves.
Project #5: Due date, Wednesday, March 3rd. Mini(?)-project: Get the RayTrace software working, and make a small scene of your own.
Final Project: TBA. Implement some advanced ray tracing techniques on at the high level of the RayTrace software.
Quizes (if any!): 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. Due Monday, February 9.
Midterm date and topics. Answers available in postscript and PDF format.
Friday, February 20. 50 minutes exam, in class.
Midterm review session: AMP 5829, Thursday 3:00-4:00.
Topics: Bezier curves and B-spline curves.
No notes or text. I will give you a sheet of formulas. (See handout for the list of these.) You may use calculators (but probably should not).
Handout: Midterm topic list.
Final exam: Finals week. Topics: The final exam will last 90 minutes and will be cumulative. Topics will include Bezier curves, B-splines, ray tracing, radiosity, optionally Euler angles and quaternions.
Lecture Topics & Readings in the Textbook: Bezier curves - Sec VII.1
DeCasteljau algorithm, Subdivision.
VII.2, VII.3, VII.4..
VII.15.1, VII15.2, VII.11.1.
3D Studio Max - in PC lab
Start Project #1
M. L. King Holiday, no
Degree k curves,
Derivatives, Degree Elevation,
Properties. VII.6 and VII.9.
Bezier patches, partial
Rational Bezier curves,
Surfaces of revolution. VII.13 and VII.14.
VII.14, and VIII.1.
Cox-de Boor. VIII.1 and VIII.2.
Cox-de Boor examples.
Bezier curses as B-splines. VIII.2-VIII.4.
Properties, Knot insertion
Degree raising, Circles. VIII.4, and VIII.8-10.
De Boor algorithm.
Derivatives of B-splines.
VII.5 and VII.7
Intro to ray tracing.
VIII.13 and IX.1
transmission, Basic Ray Tracing.
Presidents' Day, no class
Intro. to ray tracing.
Distributed ray tracing.
motion blur, depth of field, soft shadows. IX.1, IX.2
Photon maps. IX.2.
Introduction to the
Special effects without
Radiosity, Form factors
Calculation of visibility
factor, Matrix equations
Algorithms for radiosity
Yaw, pitch roll. XI.3.2-4 and XII.3
Euler angles, Quaternions.
Bezier curves - Sec VII.1
1. How to start a new Visual C++ Project.
2. How to calculate Nj,4(ui).
3. Midterm handout.
4. How to jitter eye positions with the RayTrace software.
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 both Visual C++ .NET and Visual C++ 6.0, 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.
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
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.