CPS 124/296.3
Fall 2002

Room


The goal of this project is to generate a high-quality still indoor scene using various lighting and shading techniques.

Specifications

You will create an indoor scene that consists of a room that has at least three light sources and several objects in it. You must render that room using smooth shading, soft shadows, and textures. There should be at least one open window and one painting in the room. Finally, since you will likely get a very low frame rate for your scene, you should model at least one animated object using motion blur effects (for example -- a fan, pendulum, or hummingbird). Extra credit will be given for additional complex or aesthetic models.

The overall scene and the objects should be stored hierarchically in a scene graph, each of whose node corresponds to shape, geometry, and other attributes of objects. A scene graph is a generalization of the data structure you built for the last project that is used in a number of common 3D graphics systems including Java3D and VRML. A scene graph consists of nodes, each of which is either a primitive object or a composite object defined recursively. In fact, each node in the graph can store arbitrary information, e.g., a transformation matrix, texture, color, etc.

The user of your program should be able to control a variety of options within your rendering using the keyboard and mouse. You may choose which keys control which functions, but make sure they are clearly documented in your README file.

Allow the user the following controls

  • switch each light on and off independently by clicking on them (or a light switch)
  • switch between several different pre-defined camera viewpoints
  • move the viewpoint around within the scene slightly, e.g., zoom in/out, move left/right/up/down
  • toggle or set parameters on rendering features interactively, e.g., shadows on/off, increase anti-aliasing quality
  • quit the program

Extra Credit

There are many parts of the homework that are open ended. You can earn bonus points with extremely creative or artistic solutions. Make sure that you mention your assumptions, extra features, and how to run your program in your README file.

To get you started, here are some extra credit ideas

  • model scenery that can be seen through the window from the room
  • model a transparent object in your room
  • model a stained glass window
  • model a highly reflective floor
  • model a mirror
  • show how the light changes in the room as the sun moves across the sky (from dawn to dusk)
  • read a scene graph data file so the program does not need to be re-compiled when the scene changes
  • optimize your scene graph data structure

Resources

 

Feedback?