Yusuke Takebuchi A04649587 CSE 167 Final Project This program displays a house with some furnitures inside (table, a couple of chairs, wall painting). To run the program, simply double-click on the executable file if there is one. If not, compile the source code using Visual Studio .NET. Key Controls 'c' - Toggle camera movement/orientation mode - Use arrow keys to move/orient camera 'f' - Go forward 'b' - Go backward 'w' - Toggle wireframe mode 'a' - Toggle transparency (alpha blending) 'd' - Open/Close the door 'm' - Decrease the table mesh count 'M' - Increase the table mesh count 'h' - Show/Hide the house for easier viewing of what's inside Feature Implementation Camera movement & orientation A lot of the time was spent on making the camera move and orient correctly. It was implemented utilizing gluLookAt function. If the camera is in the "Move" mode, the camera moves either up/down (vertically) or left/right (horizontally) by pressing the corresponding arrow keys. If the camera is in the "Orient" mode, the camera orients either up/down or left/right by pressing the corresponding arrow keys. With this feature, a viewer can navigate the 3D space and position him/herself at the desired location and look in any direction (like going into the attic, though there is nothing in there... or go out side of the world, though it's just all black...). Note: The feature is still a bit buggy. It doesn't like to orient vertically and then horizontally (and vice versa). =( Alpha Blending Windows of the house can become transparent by pressing 'a'. This is to demonstrate the use of alpha-blending. With this feature, a viewer can look in/out through the windows. Good amount of time was spent trying to get the drawing order correctly, but didn't have enough time to fully fix it. Door Animation By pressing 'd', the door swings open/close. Nothing great about it... Just did it for fun. Textures A lot of textures are used in this program. Most, if not all, of the objects in the program is textured which makes objects appear more realistic (or not... the door seems to stand out too much...). Lighting Lighting is far from finished. In fact, it almost doesn't work. =( The problem was that I began working on lighting after I was done modeling the objects and putting textures on them. It seemed like most of the normals were not facing the right direction and did not look nice. I tried fixing it by specifying normals with glNormal3f, but for some reason, it did not change anything for the quads. I assume the quads' normals are determined the order the points are specified?? Most of the objects in the program is drawn by the drawRectangle function, which just draws a quad at specified points. Another helper function, drawCylinder, which draws a cylinder of specified radius, height, mesh count, and slice count, was used to draw parts of the table and the chairs. My overall goal was to let viewers to navigate in 3D space like those fancy games, and I think I did a descent job of making it work (for the most part). =)