CPS 124/296.3
Fall 2001

Room


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

Specifications

You will read the hierarchical definition of an indoor scene that consists of a room that has at least three light sources and several objects in it. You will render that room using smooth shading, soft shadows, and textures. There should be at least one open window and one painting in the room. 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 and light. A scene consists of objects, each of which is either a primitive object or a composite object defined recursively. Scenes are given in gfx format.

Additionally, you should allow the user to select and move some of the objects and viewpoint; room and light sources are fixed. Each object has a separate coordinate system attached to it. You can store a transformation matrix for each object, which transforms the object coordinates to global coordinates. The objects can be moved by changing their coordinate systems with respect to the world coordinate system.

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)
select and move an object by clicking on it and dragging the mouse
select and turn an object by clicking on it and using the keyboard
move the viewpoint around within the scene, i.e., zoom in/out, move left/right/up/down
reset the viewpoint of the scene
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 animated objects (for example -- a fan or a pendulum)
model a mirror
model scenery that can be seen through the window from the room
model stained glass on the window (i.e., blend the light that is coming in)
show how the light changes in the room as the sun moves across the sky (from dawn to dusk)
constrain how the user can move each object so that it maintains its relationship within the room, e.g., furniture can only be moved along the floor of the room, books can only be moved along a book shelf, etc.
constrain how the user can move each object so it respects other objects, i.e., furniture cannot be moved through other objects or the wall

Resources

Former UTA Gary Wang's examples

Scene reader example code

 

Feedback?