In this section we will describe the basic organization of a DataViewer scene.
DataViewer allows one to easily display and interact with data on a computer screen. DataViewer can display, rotate, zoom, etc., one image, or use animation to display multiple (time--dependent) images.
Currently DataViewer allows images to be made up of the following basic graphics shapes: spheres, polygons, lines, cylinders, and cones. It also provides some basic use of texture mapping.
More specifically, DataViewer (currently) has the following graphical types:
More types may be added later.
All the graphical classes in DataViewer are derived from one class, DVobject.
This class defines a number of properties common to all the objects in DataViewer. The translation and rotation properties are directly defined in the DVobject class. As DVobject is derived from the DVselectProperty class, all its properties are available in any DataViewer object:
All these properties will be described in more details further in the document.
The most important feature of DataViewer2.0 is its scene graph. In a scene graph, a geometrical object is represented in a hierarchical fashion using a tree. A given object is divided into pieces, each of which is either a leaf node (i.e. a geometrical object which can be represented as an atomic data type) or a group node which itself contains other nodes. DataViewer2.0 implements a scene graph by using two main types of nodes.
The first type of node in DataViewer2.0 is the geometry . Geometry nodes are the leaf nodes of DataViewer2.0 and they represent geometrical objects. DataViewer2.0 differs from most libraries that use scene graphs in that DataViewer2.0 not only provides simple leaf nodes, but also leaf nodes which are quite complex geometric objects.
The second type of node in DataViewer2.0 is the container node. Container nodes group together other nodes into a set, which may be used as a single node. In a container node, the other nodes which are contained within the container node are known as its children. Similarly, the container node itself is known as the parent of the nodes which it contains.
DataViewer divides container nodes into two classes. The first class is the normal containers, with the property that each time the draw function of the parent is called the draw functions of all of the children are called.
The second class is the selection containers, with the property that each time the draw function of the parent is called only some of the children's draw functions are called. Generally, the selection containers are used for special affects, such as animation and level-of-detail.