Visualisation Research Group
Select the above image to enter the 3D visualisation
or you can view the full size image shown above.
Zebedee is basically an extension of standard 2D graphs into 3D. It was the first of the visualisations created and was intended to allow us to gain a handle on some of the problems involved with 3D software visualisations. These problems include visualising complex information structures, generating automatic visualisations, navigating within a 3D environment, and also more mundane issues such as getting to grips with the VR package we are using.
Zebedee is effectively a recreation of work done by several other researchers and represents no new concepts, though it has been instrumental in the direction of this research project. The development of the concept of the discrete entities, visualisations and representations came about partly from attempting to describe the properties of Zebedee.
Zebedee produces a standard graph within the 3D environment, consisting of nodes which represent functions within a software system, and arcs which correspond to the calls between these functions. The layout of the nodes in the general case is completely arbitrary and is determined by a force-directed placement algorithm. This algorithm effectively treats the nodes as having a repulsive charge, i.e. nodes repel each other with a force inversely proportional to their separation. The links act as springs with the effect of pushing or pulling nodes depending on the extension of the spring. If two linked nodes are far apart then the spring is stretched and it will exert a force to pull the nodes together. If however the nodes are very close together then the spring is compressed and will have the effect of pushing the nodes apart (as well as the repulsive charge on the nodes). The layout is performed by giving the graph some arbitrary initial layout then performing a number of iterations. The graph will eventually settle into a minimum energy state (provided damping is present to inhibit oscillations). This final layout is generally very acceptable with nodes positioned at suitable distances.
The unique nature of the layout algorithm tends to produce some interesting results. Clusters, groups and formations of nodes can be found in the resulting visualisation which perhaps map to some structural attribute of the software system. As with almost any graph based visualisation, Zebedee runs quickly into problems as the size and complexity of the software system to be visualised grows. Even some small scale programs contain horrendously complicated calling structures resulting in complex graphs with a high number of relationships between nodes. Such structures cause problems for the layout algorithm, as tightly coupled function groups tend to bunch together and form complex "blobs". Very rapidly the structure of the graph deteriorates to the point where it becomes incomprehensible.
Other forms of layout were also investigate such as constraining the nodes to move only in certain directions or imposing strict heirarchies on the graph structure. Experimentation with additional layout techniques has also been attempted. More information can be found in the earlier documentation mentioned below.
Sadly, Zebedee is of little use as a software visualisation tool. It offers marginal advantages over standard 2D techniques, but the disadvantages far outweigh them. If you would like some additional information and screen-shots of Zebedee then you can take a look at some earlier documentation on it. This documentation is very rough and out of date, it serves only as an archive to the screenshots.
This demo visualisation (as above) which was produced using Zebedee integrates three sources of information using available WWW technology. In order to view this demonstration you will require a frames compatible browser with Superscape's Viscape VR plug-in installed. It would also be an advantage to have a high color display configured.
The demo presents three frames each containing a different source of information. The original aim in producing this demo was to gain experience linking various information sources together with the VR world. One frame shows the syntax coloured source code of a trivial program, another shows a standard 2D call-graph of the same program, and finally the third shows the 3D call-graph produced by Zebedee. Each of these frames is linked together via the VR world. Selecting information in one frame leads to the other frames displaying the corresponding information. For example, selecting a node in either the 2D or 3D graphs will result in the source code window moving to the point where the corresponding function is defined. Selecting a function definition in the source code window will result in the corresponding node in the 3D graph to pulsate, indicating it's position.
Navigation through the 3D environment can be facilitated simply by using the directional control icons at the bottom of the frame. Alternatively, a more efficient though trickier control method can be activated by selecting the 3D frame then pressing the space bar. This produces a white box called the dead zone. Moving the mouse out of this box will result in movement through the 3D world. Various methods of movement can be facilitated by using the left and right mouse buttons in conjunction with moving the pointer. The left mouse button allows rotation control over pitch and yaw (i.e. turning on the spot) and the right mouse button allows translation horizontally and vertically (moving left/right, up/down while facing the same direction).
This page is maintained by Peter Young, please send any comments, jokes, insults or general abuse to (email@example.com).
Last updated: Tuesday 13 May, 1997.