WSU 2-color logo

Welcome to

CEG4520/CEG6520 - Scientific Visualization and Virtual Environments



First assignment: Write a program for rendering ply files using OpenGL. Your program should provide for correct lighting based on the normal vectors defined for each vertex (not per polygon). Some ply files do not contain normal vectors requiring you to compute these yourself. The program should fully utilize the 3D capabilities provided by the systems in Russ 154a. You can base your code on this framework for Windows or Linux. For reading the ply files you can use these updated files, which can read ASCII and binary ply files. For testing, you can use the following sample files:
Second assignment: Based on OpenSceneGraph, create a fully immersive representation of our solar system. You can download models of the planets from Google's 3D warehouse (download the models using Collada format) and then directly load them using OpenSceneGraph. Use the provided framework based on the latest version of Vrui (4.2) to create the immersive experience; you will also need the application base class specifically adapted for Vrui. The planets of the solar system should revolve around the sun proportionally to the correct time follwing their orbit.
Third assignment: Design a visualization software for vector data sets. Your software should be able to read VTK structured grid data sets, for example this one or this one, using stream lines. Your software should allow a user to interactivly place starting points for the stream lines using any one of the input devices available in Russ 154a. The user should be able to add an infinite number of stream tubes to visualize the data set. In order to compute the streamlines you can use the code provided on this web page. To base this on the Vrui environment, the light saber code may be a good example. For the light saber, you will need these sound files so that you can activate it by clicking a button and selecting it from the menu (it is lister under pointers).
Final project: Implement volume rendering based on OpenGL directly using 3D texture mapping. Create an array of planes to map the 3D texture onto in order to create the rendering of the volumetric data set. You can use the colon data set (dimension: 204x132x260) or the heart data set (dimension: 289x240x267) for testing your implementation. Implement a mechanism for interactively adjust one-dimensional transfer functions for manipulating the opacity and color values. For students in CEG6520, add proper lighting to the volume rendering, i.e. calculate the normal vectors based on the image gradient and apply the Phong illumination model for each fragement when it gets mapped onto the planes. You will need to implenent this step as GPU programs, i.e. a vertex shader and a fragment shader.
Last modified Friday December 06, 2019