Project 1

The first project is designed to get you used to working with vtk and the language and interface of your choice. You can use whatever language and interface set that you wish (Tcl, C++, java, python, etc) as long as it does what is needed and is easy for the user to use. It is highly unlikely that a text based interface will work so you should be using some widget set for the user interface.

In this first project we are going to look at 2D image datasets.

The main part of the assignment involves taking the following dataset for the grand canyon and visualizing them in several different ways.

elevation data in jpg format - dark is low and bright is high:

texture data in jpg format

The data is given here in jpeg mode so you can see it easily. I have also included a raw version of each file below: The raw elevation data is 1024x512x8bit greyscale. The raw texture data is 1024x512x24bit interlaced RGB values.



Your program should bring up a large window showing the current visualization as well as a control panel allowing the user to change that visualization. Each time a parameter is changed the visualization should automatically redraw. The user should also be able to rotate the current visualization using the mouse in the visualization window.

The different visualization styles are:

The first style is a height field. The height field will allow the user to see this landscape in 3D (like it is in real life) and the user should be able set the amount of elevation scaling (from the height field being flat to an exaggerated elevation) with a slider.

The user should also be able to choose between several views of the height field itself:

The second style is contour lines. The contour lines will allow the user to see this data as a set of 4 contours in 2D. The user should be able to independantly set four contour values each with a different colour (red, blue, green, yellow). The user should set each of these contour values with a slider - ie the red contour has its own slider, the green contour has its own slider, etc. The sliders should limit the user to the range of data in the data file

The second part of the assignment is to pick a 2D image dataset of your own that you will visualize using the same interface. When your program starts up the user should be able to choose which dataset to visualize. If you have written the code for the first dataset correctly this should be easy.

You may also want to experiment and add some other _useful_ features of your own for some extra points. Be sure to document these useful features.

To submit your project you should create a public webpage that has several snapshots that show that your project works. These snapshots should have captions that explain clearly what is shown in each. The web page should also have links to all of the various source files that you used to complete the project (.tcl, .cxx, whatever.) This html file also works as your 'readme' file so be sure that it tells me everthing you think I need to know about your project. You can then email me the address of this webpage.

If you can't create a public webpage then you can send me email containing the various source files and images. Note that if you are an outlook user, please make sure your email attachments are readable by non-outlook users.

The deadline is 5pm on the due date.

You will also be giving a short 10 minute presentation on your work in class which should highlight what you did and how you did it. You are _highly_ encouraged to demonstrate the various important aspects of your program(s). The schedule for these presentations is on the schedule page.

last revision 2/18/04