![]() |
![]() |
| Keyframe Animation | Wireframe Isosurfaces |
Well, Winter Quarter '00 I took a really cool graduate class called AMES293 - advanced computer graphics taught by Professor Mike Bailey at the San Diego Supercomputing Center. (Note the class is now called MAE293 instead) I had a really good time learning to program in OpenGL (which isn't too bad once you get going with Professor Bailey's help). Some of the projects for scientific visualization were really neat looking, although they don't completely stand on their own without a little explanation. Mike does an excellent job of explaining the world of graphics/scientific visualization, I highly recommend the class for anyone interested in graphics. Although I think the course has been rather popular and filled up nearly every quarter, so we were told to discourage new students. So just for the record, you didn't hear this from me.. =)
As another note, I have kept the source code for the projects for myself. Only the executables are available on this site to keep any new students honest.
To look at the projects, PCs or SGIs can run these files which I've compiled for both platforms. For the PC you will need a local copy of the file glut32.dll. You can find info on the GLUT toolkit (which we used for creating the interface) at http://reality.sgi.com/mjk_asd/glut3/glut3.html or you can directly download the pre-compiled stuff here or try a local copy here. Extract the glut32.dll file and put it in the same directory as the executables you download and it should work fine.
For all these programs the mouse buttons are the main method of interaction with the program. The left button rotates the scene, the middle button scales as you move the mouse forward and back (zoom) (or selects an object in proj2) and the right mouse button has a menu with lots of options.
For the first project, we just had to signup on a webpage. But it threw off all the other numbers for my projects, so I decided to explain why the first real OpenGL project was #2.
For the first real project we worked on OpenGL 3D picking. Basically we wrote code to select an object on a mouse click, then manipulate it using a slider. Solid picking and pick object in front works nicely. Use the middle mouse button as a selector, left mouse rotates, and right mouse brings up a menu. PC version , SGI version not found
The goal is to provide an interface to adjust & display colors in a Hue, Saturation, Value format & Red, Green, Blue format. When you adjust the color using HSV, the RGB sliders will adjust to display the RGB settings for that color, and visa versa. PC version , SGI version not found
The goal is to provide an interface to choose a house for you and a 'spouse'. Using some data about existing houses in the area such as price, size, # of bathrooms, etc.. this progam allows the user to sort that data visually using sliders to adjust the acceptable ranges of each data type which meet our specifications. Grab onto the arrows on the sliders to change the width of the sliders, default shows all the houses available. PC version , SGI version not found
The goal is to show a visualization of some data in a volume by showing slices through the volume which follow wireframe isolines. This specific data resembles heat sources in a room (think space heaters). The cutting plane is moveable in the 3 directions (option on right mouse menu changes that, and shows rings of constant temperature on a plane through the volume using color lines. The entire scene is scalable and rotatable. There are some more menu options on the right mouse menu to tweak parameters of the visualization. PC version , SGI version
Similar to project 5, the goal for project 6 was to visualize the same data in a volume by showing a wireframe of a 3-d surface of constant temperature. The slider on the right hand side changes the temperature you are looking at, also there is an option on the right mouse to look at specific temperature profiles (or all of them..). The color indicates the temperature across the surface (red = higher, blue = lower). The entire scene is scalable and rotatable. Again, there are some more menu options on the right mouse menu. PC version , SGI version
Again, very similar to projects 5,6 we are again trying to visualize the temperature data this time by generating a 3-d surface (which isn't wireframe this time). This was a more difficult project, since we actually had to draw lots of little triangles and link them together to make it all look smooth. Again, the slider on the right does the same as project 6. Unfortunately I didn't add in lighting conditions for this project, so the surfaces look kind of wierd. Ultimately (with modification) these shapes would look like the ones in project 9. (see picture at top of page) PC version , SGI version
The goal was to show a visualization of some data of liquid flow around a corner in a volume. This was accomplished by showing a field of arrows indicating the direction and magnitude of the flow at discrete points. There will be 10 streamlines in the scene which will help indicate the direction of the flow, each of which would be the path of a particle released at the starting point. You can also place and move a streamline 'probe' in the 3D scene which will conform to the way that the fluid is moving enabling further investigation. Turn the probe on with the right mouse menu. PC version , SGI version
Now this is a cool project. I've actually come close to re-using this code a couple of times, the interpolation code we wrote is quite reusable. The goal was to animate a 3-d object using a "keyframe" approach - where you specify the object positions at "key" times and use a smooth interpolation algorithim to interpolate between those points making nice motion. Shadows are also projected on the "walls" of the space to further enhance the 3d experience. This may run slow depending on the power of the OpenGL acceleration on your graphics card and speed of your processor. This one has some significant number crunching involved in it. PC version , SGI version
This project is a re-display of project 6 using stero. However it requires special LCD glasses, syncronization hardware to flash the LCD glasses at the right times, etc. It's really not interesting unless you have the right hardware, and it only runs on SGIs the way I have it done. SGI version
Email me at bretthall@ieee.org if you have comments.
Have a great day