CSCI 357
Computer Graphics
My Office Hours: Monday 2:30-4:30, Thursday 10-12, or by appointment. I am around from 9 to 4:30 most days and am available any time I'm not in class or lab.
Syllabus (not that I'll stick to it)
Homework
- HW1. This is due on Wednesday, February 18.
- HW2. This is due on Monday, March 16.
- HW3. This is due on Friday, April 10.
- HW4. This is due on Monday, April 27. Note that HW4 refers to a demo program for working with color buffers: SimpleImage.java, and a very simple demo ray tracer Tracer.java.
- HW5. This is due on Thursday, May 14.
OpenGL Resources
Notes
- Vector Geometry. Much of the math you need to know for this term is summarized in these notes;
- Installing JOGL as an external user library in Eclipse. You need to do this before you can write any code this semester.
- User Interfaces and getting started in JOGL.
- 2D Open GL and getting started wth OpenGL in Java
- The View Trasformations Here are all of the matrices you need for HW2 -- V, P, and W, plus an example done by hand so you have the correct numerical values for one situation.
- Bresenham and Pitteway: This is a handout from class when we discussed the Bresenham line drawing algorithm and the Pitteway polygon edge anti-aliasing algorithm.
- 3D OpenGL Programming. Here are also a few demo programs to go with this document:
- Cube.java This is essentially HW2
- Bar.java This is the basis for hierarchical modeling
- Figure.java This is the Bar.java example extended to a human figure.
- Lights and Material Properties in OpenGL. Here are some demo programs:
- Gouraud.java This has a square and a single, movable point light. The square can be subdivided itno an configurable number of sub-squares. You can see the difference between Gouraud shading (which OpenGL calls "smooth shading" and Phong shading (which OpenGL doesn't do, but which is approximated by Gouraud with a large number of divisions.)
- Spot.java This is like Gouraud.java, only the light is a spot light and you can play with the various lighting parameters
- ThreePlanes.java This shows 3 colored planes wth a small gold sphere in front of them. All of this is happening inside a large blue sphere. You can move the point light around and play with its properties.
- Sphere.java This is a demo for playing with light reflection properties. There are sliders for changing all of the light properties and all of the material properties. You can see the effect of these properties on the displa
- Cylinder.java
- SpinningRectangle.java This demonstrates two-sided materials: the two sides of the rectangle have different surface properties.
- Splines in OpenGL
- Texture Mapping in OpenGL
- Here are some Pov-Ray notes and sample programs.
Code
- Here is a set of Staratup demo programs, illustrating both 2D OpenGL and user interface designw tihe the Swing components.
- Here is an OpenGL program for illustrating the difference between the Bresenham (aliased) line and the Pitteway (anti-aliased polygon edge. This is extremely crappy code, just what I could make work in a hurry. I need to get a better handle on OpenGL buffers before we get to them in class.
POV-Ray
POV-Ray is a high quality public domain ray tracer. You don't actually need it for anything in the course, but you may enjoy playing with it. If nothing else, take a look around the site and check out the sample images created with POV-Ray. Here is a link to the POV-Ray website, from which you can download the source code for the ray tracer. . Here are some notes I've written on POVRAY that include a few complete programs.