Visualizing the
Invisible
Andy's Fridge
One thing that you haven't dealt with so far is time varying data, so in this final exam we will do another data collection and visualization assignment on a smaller scale (both in time and space) - in this case measuring the temperature in and around a refrigerator.
We
have a set of 10 small 1-Wire temperature sensors that are connected
through ethernet cables and then attach to a computer through a USB
port. These have an advertised maximum cable run length of 300 meters
though we will be working in a much smaller volume. The sensors are
also rated to +/- 0.5 degrees C.
There are several places that sell these 1-wire temperature sensors, or you can build them yourself. We bought ours through http://www.pucebaboon.com/
There
is some windows software (Version 4.00 beta 4) including an API that
works with these sensors at
http://www.maxim-ic.com/products/ibutton/software/tmex/index.cfm and I
have tried this out and it works for graphically viewing one sensor at
a time nicely.
There are also linux based software at http://www.digitemp.com/software.shtml
One job for someone in the class is to find or write a better piece of logging software for the sensors to dump all of the data to a file. This should be pretty easy under linux, or re-writing the java code under windows.
Another job for
someone is to do a test to see how fast the sensor responds to
temperature change, without hurting the sensor. For example taking the
sensor from a known cold temperature to a known hot temperature and
seeing how long it takes for the sensor to correctly register the
change. For this experiment the temperature should not change very
quickly, but its still good to know the limitations of the sensor.

For the final exam you will revisit the work you have done already in the class and create a step-by-step tutorial to highlight certain features of vtk and help new users learn to program them.
You can choose either part of project 2 as a basis for your tutorial. That is, you can choose isosurfaces or volume rendering for the topic.
This html (web or cdrom based) tutorial should start with the assumption that the user has vtk correctly installed along with the language of your choice (java, python, visual studio, tk, etc.) The user should then start through a multipart tutorial that begins simply, and by the end has the user with a functional version of that part of the assignment. The entire tutorial should take the user an afternoon to finish. The tutorial should be divided into sections and have headings, and goals for each section.
The
tutorial should provide:
- code that can be downloaded or copy and pasted and then run
successfully for each step
- links to necessary data files available on the web, or as a CDROM
with an html front end
- snapshots of what the code should do (movies if you are really
motivated)
Obviously having a lot of good comments in your code is part of this but you should also extract and highlight important sections of your code and describe what they do and what they can allow the user to do. The idea here is to teach what the user can do with vtk, not just what your code does. The code and the examples are the means, not the end on this assignment.
Its probably a good idea to give options at various points in the tutorial along with their results. If we do this we get this result, but if we do this other thing we get that result and then instances where each result may be useful. Highlighting any particularly sneaky wrong things that people may think to do but should not do is also a good idea.
The tutorial should provide some simple user interfaces as well. They do not have to be as complex as the ones from the project assignments but you should not ignore user interfaces in your tutorial. The user should be able to interact with the visualization. You may want to have very simple interfaces at first and then talk more about interfaces at the end of the tutorial, or you can add in new interface capabilities as you go along.
Important point to note:
This tutorial should show your understanding of which vtk tools and filters are used for doing what; and you should be able to present this knowledge in a way that is valuable to a new user who has data to visualize. For example, its not just saying that you should use filter X before filter Y but rather what doing that sequence of filters will allow the user to see in their dataset. Its not just that you 'could' do this with vtk, but 'why would' you do this with vtk.
Also note that you can modify/improve the version of project 2 that you turned in for this final exam.
During the final exam period each person will have 8-10 minutes to describe their tutorial.
We will also have a contest where each of the students gets to vote for the top 3 tutorial web sites from the class for some extra points. You can't vote for your own, and along with your vote you also have to tell me why you think these are the top 3.
The final exam is a take home written exam. It is given out in class on 4/24 and is due at 5:30pm on 4/30. The exam combines the project experience in creating a game with the various research we have talked about in class.
You are to describe a game set in and around the UIC main campus - outside on the grass and pathways, and inside the structures. The game is a multiplayer game - either cooperative or competitive. The game will be played while the players are physically walking (running, biking, rollerblading) around the real space. The players should not disturb non-players - that is we will not use paintball guns or water pistols or other things that can annoy 'civilians.' You can bend this rule a little, but basically you should be able to play the game without the players getting arrested by UIC police. To do this we will use technology.
The hardware that the players carry is up to you - maybe they carry cell phones, maybe they have PDAs, maybe they have augmented reality headsets - but they should be carrying some kind of portable high-technology utilizing computer graphics to allow them to interact with the game. Most likely everyone will carry a GPS unit relaying their position to a central computer that is managing the game.
Very likely the computer will also be controlling simulated agents or creatures or puzzles on the campus that are only visible to the players though the technology they are carrying.
We are assuming current technology, or technology that will be commercially available in the next year. You can assume that there is a full wireless network covering the campus so a player is always in range - though you should talk about how you would implement this.
The game should have goal(s), and most importantly the game should be fun. You may want to talk about your ideas with Andy to make sure you are on the right track.
You should describe the game and then more importantly describe the technology and the programming behind it.
You should also discuss the budget - its not unlimited - it should be 'reasonable.' You should say roughly how much this game will cost to implement, and how much to maintain.
Your description can include drawings as well as text. Your text should take the form of a proposal to develop the game. You will need sufficient details to convince a reader to fund this proposal.\
You will probably need to do some research on the web to make sure your description of the technology is accurate.
How many pages should this be? That's hard to answer. It should be thorough. My guess is something the size of an 8-page double column research paper, which is roughly 6000 words, should be about right.
As always, all work should be your own ...