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

  1. If your image is blank, check the camera position and direction. It may be pointing away from your scene.
  2. If some primitives are missing, check their orientation (the order in which you have specified the vertices). Polygons are transparent when viewed from behind.
  3. If some primitives are still missing, check the lighting. Surfaces on which no light falls will be black, just like the default background.
  4. 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.