Fast Pyramid Modules

Three new modules are available to give improved performance when handling large unstructured data sets. Two modules are direct replacements for the existing IsosurfacePyr and SlicePyr modules; the third is a utility module which creates shared data objects for use with both these modules.

The acceleration is achieved by updating the algorithms used from a brute force approach, where every Pyramid element has to be inspected, to using a search tree to select only those Pyramid elements which are required. Each Pyramid structure requires its own search tree which obviously must be calculated before use. Having computed the search tree, however, it can then be used repeatedly in the generation of many isosurfaces , or many slices. Hence the overall cost is quite low.

The two visualization techniques require different tree structures for acceleration. The isosurface algorithm uses a tree constructed around the values of one of its data variables and hence is called a "Value Tree". The slicing algorithm requires a tree constructed around the spatial arrangement of the Pyramid elements in relation to the orientation of the slice plane. This tree is called a "Volume Tree". The sections below give more details of the individual modules.


download

This module offers significant performance improvements over the original for large data sets. Diagram 1 shows a graph of time comparisons between the original module and this new module as the number of pyramid cells increases. The graph shows the time taken to generate 10 isosurfaces of the same variable: line 1 is the original IsosurfacePyr module available in the current release of IRIS Explorer; line 2 shows the time taken for the new module without using the search tree, the

Diagram 1 graph Click to enlarge

performance gains come from basic improvements of the original code; line 3 shows the performance of the new module using the search tree, and includes the time taken to compute the tree.

This IsosurfacePyr module also offers new features over the original. If the pyramid contains more than one data variable at a node, it allows the user to select which data variable to use to construct the surface. If a colormap is attached, it allows the surface to be constructed from one data variable and coloured by another. The min/max range of the threshold widget is automatically set to the min and max values of the data. If the data set is very large, then the module allows the output of partially completed surfaces as they are created, rather than having to wait for the whole surface to be complete.


SlicePyr

The SlicePyr module gives improved performance over the original, even more so when used in the correct fashion. Since the Volume Tree is related to the orientation of the slicing plane, if that orientation is altered then the tree must be re-computed. However, many slices may be quickly calculated using the same tree if they are parallel to the plane used to construct the tree. The mechanism for generating slices in IRIS Explorer is to rotate a plane around a point using the TransformGen module so altering its orientation. This is clearly at odds with the aim of improved performance using this technique since new slices will always require a re-computation of the tree, Also, generating slices around a point is not the best way of investigating data using slicing planes. It is more productive to first set the orientation of the plane, and then generate successive slices parallel to this plane.

To allow data to be investigated in this fashion, this new slicing module attempts to promote an alternative style of working with slices in IRIS Explorer. The user sets the distance of the slice from the origin (along a direction orthogonal to the slice plane), by adjusting a distance slider. The min/max distances available are computed and set as the min and max values of the slider. Additionally, the orientation of the plane can be set in different ways. Firstly, the module offers the choice of the basic axially aligned planes, computing the correct transformation matrix without the need for a TransformGen module. Using one of these three planes, the user just uses the distance slider to move the slice quickly without the need to re-compute the tree. Secondly, an arbitrary plane can be set by taking the input from a TransformGen module and a suitable tree calculated along with the min/max distances along the normal to that plane that remain within the bounds of the data set. The user can then quickly generate slices by moving the distance slider.

Additional functionality is also offered by this module. As with the IsosurfacePyr module, if there is more than 1 data value at each node, then the user can select which data value to use for colouring the slice. Also, if the data set is very large then partially completed slices can be output to the Render module while it works its way through the data so the user does not have to wait until the complete surface has been calculated. As mentioned above, certain planes can be produced without the need for a TransformGen module.


BuildPyrTree

The new BuildPyrTree module is designed to aid efficiency when using large data sets. If a number of isosurfaces of the same surface variable are required, then rather than each module building and storing its own Value Tree, shared resources can be made. Diagram 2 illustrates how using this module with shared memory allows just a single instance of

Diagram 2 example Click to enlarge

the Value Tree to be used to create multiple isosurfaces. Similarly, in conjunction with multiple SlicePyr modules, a single Volume Tree can be used to accelerate the creation of multiple parallel slices through the data.

download download
Banner Banner Banner