Project 3, Your 3D World,
Image Sequence Due Wednesday December 5th.
Code Due Friday December 7th.
Overview
This third project of the semester is your chance to build and describe your own small virtual world. Unlike the prior two projects, thespecifics for this assignment are intentionally broad. At the end of this project, you must produce three things. First, a working OpenGL program that satisfies functional requirements set out below. A well documented, robust, system that meets these minimum requirements is worth 90% of the total points for the system. The remaining 10% is reserved for what can be best called "cool factor". Essentially, how interesting/fun/beautiful is your virtual world.
In addition to the documented code, you are also being asked to build a webpage describing and illustrating the fruits of your efforts. To keep look and style consistent, as well as to provide some guidance, an html template with accumpanying style sheet will be distributed.
The third thing you will be asked to produce is a sequence of images showing navigation through your scene. John Stevens, the GTA, is looking into the easiest way that these can be turned into a video that will work well as a part of your webpage. More will be said about this in the coming month. Note this image sequence is due on Wednesday, two days ahead of the code and webpage itself.
Functional Requirements
Your code must, at a minimum, do the following:
- Contain at least three identifiable stationary objects.
- You should strive to have a visually interesting 3D world, and at a minimum it should contain three distinct objects.
- Contain at least two distinct objects which are in motion.
- Recall that a recurring theme this semester has been how to put an object into motion. You scene must contain, at a minimum,
objects which are in motion.
- Permit Manual Navigation
- You must implement mouse based navigation. Specifically, a user must be able to move forward, backward, up and down.
In addition the user must be able to pan left and right. A modest ability to look up or down is also required.
- Contain at least two light sources
- At least two of the OpenGL light sources must be enabled and their influence over the appearance of the scene notable.
Addendums
If history is any guide, there will be addendums to this assignment that clarify what is expected. These will be posted and dated here as well as announced in lecture as they arise.
- Saving Images/Frames (11/30/2007)
- Include the provided header file (saveFrame.h) in your main program.
Whenever you want to save a frame, call the saveFrame function. This function
takes two integer parameters: the width and height of the window. If you have
a timer function that is called regularly to update the animations, that is a
good place to call saveFrame.
After the saveFrame function ahs been called 180 times, the saved frames will
be written to disk. Further calls to saveFrame after this happens will have
no effect. 180 frames is 6 seconds of video at 30 frames per second, which is
sufficient for this assignment.
HTML Template for Project Report (11/30/2007)
The project report should be brief, one page is excellent, two pages at the absolute max.
Your report should be submitted in HTML format using the template provided below. Note the
template uses the style sheet cs410prjct3.css, so you will want to download this style
sheet and place it in the same folder where you place your html file. You need not submit
a copy of this css file when turning in your report. Here are links to the two files:
Please, replace "template" in the name of the html file with your last name before including your report
with your project submission.
Image Frames for Video (12/04/07)
Place images generated from your program in a directory called '410images' in
your home directory. Make sure that this directory is world readable and
executable, i.e. run 'chmod 755 410images'. Make sure that the images in the
directory are world readable, i.e. run 'chmod 644 *.ppm' inside the directory.
Submission
All of your code must be in one directory and include a single makefile that will successfully compile it on one of the CS Department Linux Machines. To submit your project code, you will upload a single tar file with the contents of this directly to RamCT. The project will appear on RamCT in the week it is due. Do not forget to include any and all auxillary files required by your program.
Your image sequence and finished web page will also be uploaded to RamCT through separate RamCT assignments.