[Walrus-dev] Walrus API ?

Young Hyun youngh@caida.org
Fri, 24 May 2002 14:45:41 -0700 (PDT)


On Fri, 24 May 2002, Guillaume Pothier wrote:

> As far as I am concerned, I would like to be able to
> use the Walrus engine for displaying a dynamic graph of objects (for
> visualizing runtime Java program memory). Is such a thing feasible?

You can use Walrus to visualize a single snapshot of such a graph, but it
probably won't work so well for visualizing change over time.  The main
problem lies in the layout algorithm.  You'd want small changes in the
graph to result only in small changes to the layout, but there can be
dramatic changes in the layout.  Also, it's difficult to maintain the
same view/orientation between two graphs, in part because of the unique
properties of hyperbolic geometry.  You'd want to do this so that a
person's mental map isn't disrupted with each change of data set (it would
be hard to assess the difference between two graphs if a person must also
take into account a difference in view/orientation).

Walrus may not be well-suited to displaying your particular data--a graph
of Java objects live in memory.  Walrus needs a meaningful spanning tree,
but it may not be possible to find one in a graph of arbitrary Java
objects (where you may not even know what some of the objects are, being
3rd party or system code).  However, it's possible that most objects are
connected hierarchically, since many data structures are hierarchical.

> Would it be possible to customize the nodes, ie giving to walrus a
> Java3d node to use as a particular graph node ?

This isn't supported right now.  There are actually some subtle issues
that need to be worked out before this feature can be implemented.  You
also have to remember that one of the main goals of Walrus is good
interactive performance, and drawing a geometry (vs. a point) for each
node will dramatically slow down the rendering.

> Other topic: what prevents the use of Java3D scenegraph structures? Is
> it related to the hyperbolic transformations?

Yes, Java3D requires all transformations in the scene graph to be affine,
but some hyperbolic transformations are non-affine.  Also, I wanted to
ensure good interactive performance, but as far as I could tell, it wasn't
possible to implement the kind of guaranteed framerate rendering that
Walrus currently supports with scene graphs.

 --Young