CS 312: Computer Graphics -- Assignment 1
A Basic Scene using RenderMan
Due September 24, 2010 by 11:59pm
RenderMan is a standard for describing 3D scenes set by Pixar
and used in their films. In this assignment, we will be using Pixie, a free
RenderMan-compliant renderer, to model and render a 3D scene of several
chess pieces on a chessboard. The chessboard should be square,
approximately 12" x 12", and it should have at least three different
chess pieces resting on it. Your chess pieces may look like
standard chess pieces, or they may be artistic in nature (e.g., two
cylinders of narrowing diameter stacked on top of each other for a
rook, a cone for a bishop, etc.). At least one of your chess
pieces should not be based on a simple primitive, and all pieces should
be proportional to the chess board. Use either a texture map or
separate primatives to form the squares on the chess board. The
chessboard
does not need to be resting on anything, but you may choose to place it
on a surface (e.g., a tabletop) or add additional objects to the scene
(however, additional objects should not detract from the focus of the
scene on the chess pieces and board). The pieces and board can be
made of
any material you choose, but you should have at least two different
materials in your scene. Make the materials look as realistic as
possible, and illuminate your scene using specific lights (i.e., not
constant surface or ambient light sources). Select a viewpoint
for the scene that shows the scene from an oblique angle (i.e., is not
aligned with any coordinate axes).
Using Pixie
Read RenderMan
for
Poets (for a brief introduction to RenderMan) and the Pixie Wiki
(for information on running the Pixie programs). You may also find the RenderMan
Specification to be useful. Pixie
runs on a variety of platforms (including PCs running Linux, Windows,
Mac OS X), so you may install it at home. It is currently
installed on the cs systems at
~eeaton/public/cs312/Pixie-2.2.6/ for your use.
Incremental development will serve you best in this project, starting
with the files provided in ~eeaton/public/cs312/assn1/. Copy
these files into your local directory. First try to get your
program drawing a flat square for the board, and then add single
primatives for each of the pieces. Now set up a good view and add
lighting. Convert one of the pieces to be composed of several
primatives or polygons. Once you've got the basic setup, keep
refining it, adding materials and making it more realistic until you're
satisfied with it or you run out of time (whichever comes first).
Your development cycle will go something like this:
source ~eeaton/public/cs312/pixie-csh
(or pixie-bash for bash users)
repeat
edit chess.c
make chess.tif (use the Makefile provided in ~eeaton/public/cs312/assn1/)
display chess.tif (you must be running in an X-terminal for this to work)
until done
Debugging tips
- If your image is blank, check the camera position and direction.
It
may be pointing away from your scene.
- If some primitives are missing, check their orientation (the
order in
which you have specified the vertices). Polygons are transparent when
viewed from behind.
- If some primitives are still missing, check the lighting.
Surfaces on
which no light falls will be black, just like the default background.
- If you're having trouble keeping everything straight, give each
object
a different color until you've got them behaving properly. Then you
can change the colors to whatever you want.
Grading
80% -- Turning in a working program that meets the minimum
specifications (correct objects, view, lighting, etc.)
20% -- Realism and
creativity
(interesting objects, advanced lighting, textures, etc.)
up to 5% extra credit for especially realistic, artistic or creative
scenes (e.g, telling a story with the scene, etc.)
What to turn in
Submit the C program which generates the image, the image it creates,
and the Makefile. You may modify the Makefile from the provided
one, but I must be able to run your submission on the cs systems.
In your comments, include information about the computer platform
(hardware and OS) you used to develop your program, and be sure to
include additional comments as needed to describe your code. A
good rule of thumb is that someone should be able to remove all code
from the file and recreate a rough semblance of the result from your
comments.
If you developed on somewhere other than the cs systems, be certain
that your program runs correctly on the cs systems where it will be
graded. Leave time for this step!
Place all submitted files into a directory named LastnameFirstname.
For
example, my
directory would be EatonEric.
Then create a tar archive of that directory, such that the tar file
expands to the directory (not a bunch of files). Copy that tar archive
into ~eeaton/submit/cs312/assn1/ to
complete the submission.