
COS 426 Home

Projects
|
|
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

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

Credit
Same as before.
|
|