COS 426 Computer Graphics - Fall 1997

COS 426 Home


Project 0

Project 1 (hints)

Project 2 (hints)

Project 3 (hints)

Project 4 (hints)

Project 5 (hints)

Project 6
Project 4 - RenderMan
Assigned: 11/05/97
Due: 11/23/97
Points: 30

This is where things become interesting. In this project we will construct a model of a scene and create beautiful, "realistic" pictures of the scene. While the previous projects have focused on 2D graphics, now we are leaping into 3D. We will make use of our line and triangle scan conversion algorithms from Project 1, as well as the surfaces of revolution from Project 3.
In the project, you will model a scene, or collection of scenes, using the Inventor modeling language. The model may involve a complex hierarchy of structures, but at the lowest level it boils down to a collection of triangles in space. You build the infrastructure to transform these triangles from coordinates in model space to points on the screen, and then draw them. At first the rendering will simply be a set of points, and then wireframe, and then flat shading, finally smooth shading.
For this project, we are working in teams of two people. In all but extreme cases, you will both receive the same grade. In the writeup, please say who implemented what features of the assignment. You should both be familiar (at least at a high level) with all of the parts of the project, even if you each only implement part of it.
To give you a leg up on the project, you are starting with a program that can read an Inventor file and render it using the GL library. Your mission is to produce a similar picture, but using your own code in place of GL. If you prefer, you could write your own user interface; or if you hate graphical user interfaces you could just write a program that reads the model file and produces an image file as output.

Required features (22 points total)

1. An interesting Inventor model.

2. Wireframe.

3. Flat shading.

4. Gouraud shading.

5. Clipping in frame buffer.

6. Transformation stack.

7. Perspective transform from a fixed camera position.

8. Z-buffer hidden surface removal.

To make things simple, we are actually working with a subset of the real Inventor modeling language; your models may still be viewed using "ivview", but your renderer will not work for all Inventor models. See the hints page for the Inventor features we'll implement.

Optional features
The following list shows the optional features in order of increasing difficulty. Hints will posted to the course web for many of these. The number in front of an item indicates the maximum number of points you could receive for full implementation of this feature; you may receive partial credit.

(?) An interesting and complex model. You may receive arbitrarily many points for this, depending on the complexity of the model.

(1) Back-face culling.

(1) Arbitrary camera positions, specified in the model.

(1) Mount an optional "headlight" on or above the camera, as in ivview.

(2) Don't forget the art contest.

(2) Phong shading.

(3) 3D clipping to the viewing frustum.

(3) Directional and/or spot lights. Will require a little trickery to extend the provided application code, or you could use a fixed location for the lights.

(3) Triangulate the geometric primitives: cube, sphere, cylinder, and cone, rather than having Inventor triangulate them for you.

(4) Environment maps. Cause surfaces to reflect an enironment which is represented by an infinitely-distant sphere or box (textured with images).

(4) Solid textures for color, and possibly bump mapping. You could use these to create 3D block textures (easy), clouds, marble, wood (harder). A useful noise function will be posted to the news group.

(5) Create an animation by making a series of snapshots with a changing model.

(6) Shadowing with shadow maps. Render a depth map from the point of view of each of the lights. When scan-converting the scene, compare with depth maps to learn whether surfaces are visible to each light.

(?) Anything else you can think of. Ask a TA if you want to know how many points it is worth.

Getting started
To get started, download the user-interface. The files may be unpacked in your directory by typing:

% gunzip project4.tar.gz
% tar xvf project4.tar
% rm project4.tar

The first thing to try is:

% make depend
% make
% render.tcl simple.iv

Keep an eye on the hints that will appear during the course of this project, from frequently asked questions, precepts, etc.

Same as before.

Last update: Sun Nov 30 18:08:47 EST 1997