Technical Documentation


LU Visualisierung - Beispiel 1, WS 2002/2003

by

Thomas Rongitsch (e9825730@stud3.tuwien.ac.at)

Fabian Bendix (s9825733@stud3.tuwien.ac.at)

 

Home

dowload source

view program


Class Overview

CVisDlg

COpenGL

CData

CImageRenderer

CSliceRenderer

CXRayRenderer

CVolumeRenderer

CInterpolation

CPanel

CPanelGeneral

CTransferDlg

CTransferFunction

CPanelSlice

CPanelXRay

CPanelVolume

CPosDlg

CPosGL

CTexture

CFileReader

 

Class OverView

 

 

CVisDlg

CVisDlg is the main Window of this application. It provides pointers to COpenGL (the rendering window), to the panel on the right side of the application and to some other common window controls (e.g. status bar, menu, ...). The whole communication between the controls and the application-logic is transferred (indirectely) over CVisDlg.

COpenGL

COpenGL is inherited from CWnd and provides the drawing routines. This class even holds the very important CData object, which is a private member and can only be accessed by COpenGL.
All necessary environment variables are first controlled in COpenGL, before the are submitted to CData and further processed (rendered).

CData

CData is the main interface for rendering. The most important settings for Slice-Rendering, XRay-Rendering and Volume-Rendering are stored in this object. Before anything can be rendered - explicitely by calling CData::render() - the environment for the rendering method(s) must be set. Depending on the type of rendering CData::setSlice(...), CData::setXRay or CData::setVolume must be called. Subsequent calls of this methods will override former calls.

CImageRenderer

CImageRenderer is an abstract class, which defines the basic functionality of each inherited rendering class (CSliceRenderer, CXRayRenderer and CVolumeRenderer). Some methods that are eaul to all rendering types - like calculating the nearest neighbour or calculating a vector dot product are implemented in this class.

CSliceRenderer

This class provides the full functionality for rendering slices normal to the coordinate system axis.

CXRayRenderer

CXRayRenderer provides the full functionality for rendering an XRay Image normal to the coordinate system axis.

CVolumeRenderer

CVolumeRenderer does all the things that are needed for VolumeRendering. For more details about how to render an image you should take a look at the declaration of CVolume::setEnvironment. All necessary preprocessing is done in this and the following methods. The render method itself is able to do firsthit-rendering and alpha-rendering.

CInterpolation

Because volume-rendering can take a very long time, you do not want to render an image again and again after you have changed its size. CInterpolation provides simple methods to interpolate a new image from an existing image.

CPanel

CPanel holds all the panels on the right side of the application and provides the functionality for communication between the panels and the application.

CPanelGeneral

CPanelGeneral implements the top panel of all panels on the right side of the application. All settings that are applied here are valid for each rendering type. The user has got the possibility to choose between different imageprocessing- and renderingtypes, to modify the Transferfunction and to scale the rendered image.

CTransferDlg

CTranferDlg provides GUI-functionality for adjusting, loading, saving and modifying the Transferfunction.

CTransferFunction

This class provides the logic behind CTransferDlg. All important parameters are stored here, and can be accessed from here.

CPanelSlice

This class provides the interaction possibility for slicerendering. The user can choose different axis and different slicelevels for rendering.

CPanelXRay

This panel is very similar to the previous one(CPanelSlice). CPanelXRay provides two sliders. One slider determines the lower treshold and the other one determines the upper treshold. The selection fields are the same as in CPanelSlice.

CPanelVolume

CPanelVolume implements the bottom panel on the right side of the application. This panel provides the most complex functionality of this application. Here the user has a huge possibility of combinations of each parameter. In this panel can be choosen between Firsthit-Rendering and Alpha-Rendering. Below is explained how/where to set light position, ambient and diffuse light values, cube rotation and so on. The two sliders determine how long a ray should be (steps) and what treshold should be accepted (treshold).

CPosDlg

This Dialog provides functionality for rotating the data cube, for positioning the light and set its factors and for cut off a piece of the cube. All parameters that are applied are visualized on the OpenGL-window called CPosGL on the top of this dialog.

CPosGL

CPosGL lets recognize the user which settings he has applied and which are turned off. A cube and an arrow - symbolizing the light source - are placed in this window and can be moved (rotated) by the arrow buttons below.

CTexture

This class is needed by CPosGL for loading the textures that are mapped onto the cube.

CFileReader

This class is called by CVisDlg (the main window) when a new file should be loaded. The three dimensional array of data is then passed to CData.