Commits

Nikhil Marathe  committed 3859b38

Summary of the project used for submission

  • Participants
  • Parent commits dc698eb

Comments (0)

Files changed (1)

File src/fileadelphia/fileadelphia_summary.txt

+Fileadelphia
+============
+
+Nikhil Marathe (200801011) and Shilpan Bhagat (200801162)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Introduction
+------------
+
+Fileadelphia is a 3-D file exploration system. When run
+the program puts the user in a city where the buildings are a
+visualization of the user's files and folders. The user
+can now navigate and teleport between cities.
+
+Usage
+-----
+Starting Fileadelphia (main.py) will put you in the city
+generated based on your home directory. Fileadelphia has 4
+attributes to make navigation easier.
+
+* File buildings are textured in a yellow, old style.
+* Folder buildings are textured in a blue, glass style.
+* The size of a building is proportional to the size of the file (except where the file is too small).
+* Accessing files and folders is done via the very intuitive action
+of entering the corresponding building.
+* File names are written on top of the building like billboards.
+
+Controls:
+To navigate in a city, use the mouse to control facing and:
+
+* W or Up arrow to move forward
+* S or Down arrow to move back
+* A or Left arrow to move left
+* D or Right arrow to move right.
+* Alt+Up arrow to move up the folder heirarchy.
+* Escape - quit the program at any time.
+
+Entering a file building will show information about the file.
+Clicking the "Launch!" button will start the file using the default
+system program. Press Enter or Space to exit the building.
+
+Entering a folder building will 'teleport' you to another city
+whose buildings correspond to the files in that folder. You may
+press Alt+Up arrow any time to go to the parent.
+
+If you enter a folder you aren't allowed to access, a Permission Denied
+error will be shown. Press Enter or Space to return to the parent.
+
+Improvements that can be done
+-----------------------------
+
+If time permits we would like to add:
+
+* A skybox to give a more realistic city appearance.
+* Shader based fog in the city that can move behind along with the user, to keep certain
+areas out of focus.
+* Use OpenGL lighting to change amount of light in the city based on the time of the day.
+
+Dependencies
+------------
+
+Fileadelphia is written in Python, uses Pygame for event handling
+and raster text rendering, GL, GLU for transformations and drawing
+and GLUT for stroke based text rendering.
+
+Techniques used
+---------------
+
+* Affine transformations
+* Camera system
+* Depth testing
+* Perspective projection for the 3d events
+* Ortho projection for text rendering
+* Texturing for buildings and floor
+* glutStrokeCharacter for file name drawing
+* Blending effect is used to go from one state to another. A special TransitionState handles the blend
+using `GL_CONSTANT_ALPHA` so that the source and destination states do not require special code.
+* Fog effect for start up screen.
+* Binary Space Partitioning using a Quadtree for efficient collision detection and display of the city.
+
+References
+----------
+
+We assert that all code in Fileadelphia was handwritten by us. Nevertheless certain
+resources were used for learning or inspiration.
+
+* Basic OpenGL initialization and texture rendering code was used by looking at programs
+in the lecture folder.
+* http://www.mindcontrol.org/~hplus/graphics/simple-gl-camera.html for an understanding
+of simple camera implementation.
+
+The pygame documentation was invaluable for OpenGL interoperatibility.