COSC556 Advanced Computer Graphics

Last modified: "October 23, 2006 10:57:05 by matt"

Instructor: Matt Evett ; Dept. Computer Science; room 512E Pray-Harrold
Tel: 734-487-1227; e-mail: mevett@emich.edu; https://emunix.emich.edu/~evett

Office Hours: Hours are here.
I try to maintain an "open door policy": you are welcome to drop by at times other than office hours, and generally I'll be able to talk to you, but sometimes I may be too busy.


Syllabus

Make sure you register for the web caucus for this course (cosc556). There are announcements there for the assignments!! The caucus is the official mechanism for distributing information about the course. All students in the class are required to register for that caucus. To do so you will need an EMU e-mail account. This is free. If you don't already have one, go the the Halle library and get one.


Text Book (source code, etc.)

We're using Edward Angel's Interactive Computer Graphics, 4th ed. (Addison Wesley). The source code for the major projects described in the textbook can be found here. There will also be a course pack that includes a number of readings covering a variety of topics in computer game graphics.

Assignments (subject to change!!)

Submissions: To submit assignments, go to http://caddis.acad.emich.edu/~hwmatt/student/

Caveat Emptor: Programming and other assignments should be completed by each student on their own. It is expressly forbidden for students to collaborate on assignments without the express permission of the instructor. A few friendly pointers and a bit of advice is fine, but "borrowing" or copying another's work is grounds for punitive action, including a failing grade and possible expulsion from the University. In general, do not find yourself in a situation in which you have given a copy of your code to someone, or you have been given someone else's code.

Bouncing Ball(#1) Due date: Sept. 23

Trajectory Among Blender Objects, Due date: December 18

Answers to assignments:

None yet!


Lecture Notes

Sample code discussed in class:

prog8BezierCurve.cc renders a cubic Bezier curve. This is taken from Baker & Hearn's graphics textbook. The program displays the four control points as well as the curve itself. Note that the z components of the coordinates are omitted so as to yield planar output.

The files bezmesh.c and bezsurf.c accompany the handout from class demonstrating the types of OpenGL calls used in generated curves and surfaces. Both the files are copyrighted by Silicon Graphics Inc. (If you Google for them, you'll find lots of links to many copies.) Both render a Bezier surface defined by a single 3rd order patch (16 vertices). The first program, bezmesh.c, renders the surface in wireframe. The second, bezsurf.c, renders the surface using a simple lighting and material scheme.

The file curves.c, from Angel, allows the user to place four control points and generates various types of curves that make use of those points.

 


OpenGL Tutorials and Demos

There are many tutorials online. Demonstrations illustrating basic GL stuff such as lighting, transformations, and textures can be found at http://www.xmission.com/~nate/tutors.html. The demos are writting in C. You can download either .exe files, or the source code.

Programming Environment

We will be programming mostly in C and C++, using the OpenGL graphics library. OpenGL is not object-oriented, so doesn't make full use of C++. Nonetheless, you can certainly write OO programs that link to the C-based OpenGL. You will need both OpenGL and GLUT (a windowing toolkit based on OpenGL). We will also be programming in the OpenGL shader languages, Cg and GLSL.

OpenGL Here is some information about how to install OpenGL (if needed) and GLUT on your own machine.

Using OpenGL in Mac OS X.

Documentation of OpenGL

Other than the Mesa doc, I recommend the book, OpenGL Programming Guide, by Mason Woo, et al.

There is on-line documentation of GLUT. See, also, the main GLUT page.