Project 6 Description
- Fully functional display
-
- Dynamic map viewing area -- viewable map area (the number of tiles
displayed) can be changed to different sizes.
- Smooth map scrolling -- as you move through your map, the scrolling
should appear smooth. This is in reference to the translation of the
map. Once you have enough room to add a new row, then you may simply
"pop" it in there (clipping planes for the effect of smooth terrain
addition is extra credit).
- Passive mouse motion should decide which direction to move the
map and how fast to move it.
- Status string display (similar to HEditor)
- Some status text along the bottom of the screen will be necessary to
give feedback such as current velocity and rotational direction.
- Creativity
- Creativity points will be based on the ingenuity of your movement
interface.
- Extra Credit: Smooth row addtion
- For extra credit, implement the terrain translation using clipping
planes to give the effect of a terrain moving towards you. This will
need to be implemented for -x, +x, -z, and +z.
The process I would go through to implement this project:
- First get your map viewing area displaying in a dynamic fashion.
Meaning, given [row, column] coordinates, you can automagically
display the surrounding viewing area (be careful when you are at
the edge of your map).
- Next I would implement some keys on the keyboard which will move
the [row, column] coordinates. [row, column] represent the index
into the map array. This means, you will simply be redrawing the
map each time you hit a direction key with a different set of tiles
displayed around the origin.
- After this, it would be time for the mouse movement. I would
implement this with the mouse location giving the current speed
and direction. For this simple case, speed would be the amount to
increment or decrement row and/or column. Direction would determine
whether to increment or decrement row and/or column.
- Once the above is working you can start looking into optimizing
and smoothing out your translation of the viewable map area. Start
by making the mouse function you just wrote incrememnt and decrement
some translation values (x and/or z). This will slowly move the
terrain in the direction it should be moving. Once you have enough
room for another row or column (depending on direction), add one
in the direction you're going and take one away in the other
direction. This will make new terrain "pop" into view and old terrain
"pop" out.
- Finally, if you choose to do the extra credit, set up clipping planes
so that as you translate your terrain one direction or the other
the new terrain will appear very smoothly (as it moves through the
clipping plane) and the old terrain will disappear smoothly as it
moves into its clipping plane.