Math 155B - Introduction to
Computer Graphics
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).
Instructor:
Sam Buss, Professor of Mathematics and Computer
Science
Email: sbuss@ucsd.edu
(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: pschwer@cs.ucsd.edu
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:
http://math.ucsd.edu/~sbuss/MathCG.
(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.
Homework assignments:
1. Due Monday, February 9.
Exams:
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
Monday
Wednesday
Friday
Week 1
DeCasteljau algorithm, Subdivision.
VII.2, VII.3, VII.4.. Catmull-Rom, Overhauser,
OpenGL cmds
VII.15.1, VII15.2, VII.11.1.
Week 2
3D Studio Max - in PC lab
Start Project #1no class
no class
Week 3
M. L. King Holiday, no
class
Degree k curves,
Derivatives, Degree Elevation,
Properties. VII.6 and VII.9.Bezier patches, partial
derivatives
VII.10
Week 4
Rational Bezier curves,
Circular sections,
Surfaces of revolution. VII.13 and VII.14.Teapot. B-splines.
VII.14, and VIII.1.Blending function,
nonuniform knots,
Cox-de Boor. VIII.1 and VIII.2.
Week 5
Cox-de Boor examples.
Uniform knots,
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
Week 6
B-spline interpolation.
VIII.13.B-spline interp.
Intro to ray tracing.
VIII.13 and IX.1Reflection and
transmission, Basic Ray Tracing.
IX.1.
Week 7
Presidents' Day, no class
Intro. to ray tracing.
IX.1.Midterm exam
Week 8
Distributed ray tracing.
Antialiasing, jittering,
motion blur, depth of field, soft shadows.
IX.1, IX.2Combining techniques.
Illumination maps.
Photon maps. IX.2.Introduction to the
RayTrace software
Appendix B.
Week 9
Special effects without
ray tracing.
IX.2, IX.3.Radiosity, Form factors
XI,1, XI.2.Calculation of visibility
factor, Matrix equations
XI.2, XI.3
Week 10
Algorithms for radiosity
equations. Orientations,
Yaw, pitch roll. XI.3.2-4 and
XII.3Euler angles, Quaternions.
XII.3.Quaternions.
Slerping.
XII.3.
Handouts:
1.
How to start a new Visual C++ Project.
2.
How to calculate N_{j,4}(u_{i}).
3. Midterm
handout.
4. How to jitter eye
positions with the RayTrace software.
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 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
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.