CSE 872:  Project 2 - Photorealistic Rendering Project

This document describes the requirements for Project 2 in CSE 872.  The project will be due Monday, November 3 at 11:59pm. The project is an individual project. 

This is a challenge to see who can make the nicest picture of a bedroom model I am providing.  You are to utilize the raytracer found in Raytracer.zip and extend it with additional functionality to make a more beautiful image.  You can modify the raytracer project as much as you like.  Please do not modify the ray intersection project without letting me know, since I may work no accelerating it and send out updates that are faster.

Minimum requirements:

  1. Stochastic antialiasing.
  2. Reflection from other surfaces.
  3. Implementation of the mirror and chrome.
  4. Implementation of the glass in the desks.
  5. A nice implementation of the floor lamps that includes soft shadows.

In addition, you are required to implement some form of stochastic light scattering.  This can be:

I have provided three models:  Bedroom, Bedroom-tiny, and Miniature.  The final image you turn in must be based on Bedroom.  The others are provided because they are smaller, so rendering time is less while debugging. If you want a special scene to debug with, please let me know and I can probably provide it.

If you would like a modified version of the scene for some reason, I will be happy to consider it.  Modifications that are acceptable are those that make it easier to more efficient to render. Adding or removing objects will not be acceptable.  An example of an acceptable modification:  you might want me to remove the glass in the lights above the painting so the light source can be inside and not shadowed.  I can also modify elements of the scene to include uv coordinates should you want to bump map something,

Right now the program automatically loads the Bedroom.  In ChildView.cpp and the CChildView constructor you'll find this line:

    OpenFile("Bedroom\\Bedroom.obj");

If you delete this line, the program will open with an empty scene.  You can change this line to automatically open one of the alternative scenes. 

There are three builds possible:  Debug, Release, and Debug-ReleaseDLL.  The first two are obvious.  The last one will compile and run your main program in debug mode, but run the ray intersection DLL in release mode.  This is probably the mode you'll want to do most of your debugging in.

The models are contained in an OBJ file.  This is a text file, so you can read it.  They reference a material in an MTL file.  This is also a text file.  Lights are defined in an associated .LIGHTS file.  MTL is a standard material file, but feel free to edit the material class and this file to add material properties that do not exist or modify existing ones to make the picture look better.  You can also add an auxiliary file with additional information to go with you scene if you like. The LIGHTS  file is a custom format that is designed to be easy to read.  Feel free to modify this file and the lights class.  For example, to describe the floor lamps, you would need to add something in the lights file about their diameter and height and location.  You may change the number of lights and their placement as much as you like to make the scene look nicer, but you can't move the floor lamp or the desk lamp.  You can choose to have the desk lamp on or off.  The initial lights file has two point lights under the desk lamp. 

I have the original file for the Bedroom in 3DS Max.  I can provide locations on request.  Here is some basic location information.

The room is to scale in centimeters.  The floor surface is at height 0.517cm. 

The base of one floor lamp is at (-225.7, 0.517, -204.4).  The base of the other floor lamp is at -225.6, 0.517, 206.9). The lamps have a diameter of 26.5cm.  They extend from a height of 60.3cm to 180.3cm. 

The table lamp is sitting on (187.8, 30.4, 175.2). The shade extends from a y value of 50.2cm to 62.1cm.  It has a diameter of 40cm. 

There are three light fixtures above the painting.  The coordinates of a point centered on the surface of the figure glass would be:  (-3.9, 195.5, 245.9),  (45.0, 195.5, 245.9),  (94.0, 195.5, 245.9), You should consider making these lights more of a directional flood light pointing down so they better illuminate the picture. 

The material names in the MTL file should be pretty obvious.  The Wavefront material file format is described online.  Some of the important materials are:

When do you will turn in your picture and a .ZIP of just the raytracer project without the extra files.  You may turn in additional pictures if you like, but one must be designated your final result image.  The final result image must include the mirror.  I suggest finding a camera angle where the mirror reflects other parts of the room so you can see the bed, painting, and desk. 


CSE 872