(1) Visual Analytics Scene Tree Organization

The scene is a 4-level tree, each icon and its label are represented by a InfNode, and belongs to one and only one InfGroup. Each InfGroup contains at least one InfNode. Each InfGroup contains exact.y one BoundNode, which represents the boundary of the group. The middle level node: InfTransform is only used to move the icons. For a group with only one InfNode, the BoundNode is invisible. For a group with more than one InfNode, the BoundNode is shown.

When two groups are merged, a new group is formed and the old groups are destroyed. Hence no multiple levels of InfGroups exists.

The hudCamera node is the root of the scene graph. A link between two icons is represented by a LinkNode, which hooks directly to hudCamera. The cursor is represented by VACursor node, which hooks directly to hudCamera. The selecting box is represented by SelectingBox node, which hooks directly to hudCamera.

        

//                             -- BoundNode

//                            /

//                           -- InfTransform[0] -- InfNode[0]   //Group[0] contains two icons

//                          /

//            - InfGroup[0] -- InfTransform[1] -- InfNode[1]

//           /

//          /  ...           -- BoundNode

//         /               /

// hudCamera -- InfGroup[i] -- InfTransform[0] -- InfNode[0]    //Group[i] contains one icon

//         \   ...

//          -- LinkNode[0]

//           \

//            - VACursor

//            - SelectingBox 

 

(2) Files:

VisualAnalytics.cpp:      main(), create scene graph, main render loop

VANodes.cpp:              defines InfNode, InfGroup, LinNode...

InputEventHandler.cpp: callback to handle mouse/key events

ConfigManager.cpp:      read/write scene from XML config file

BasicShapes.cpp:          defines basic geometries like textured quads, billboards, ... to facilitate future development

 


(3) Testbed Functions:

Category

Task

Operation Sequence

Visual Feedback

Comments

Selection

Single Selection

click left mouse button on the icon/group/link

 

Icons highlighted with green boundary. Link highlighted with blue color.

 

Multiple Selection

ctrl + left mouse button

No multiple selection for links.

Box Selection

Push down left mouse button on open space, drag a box on the screen, icons inside the box will be selected

 

Manipulation

Move a single object

Push down left mouse button on a icon/group and drag

Objects highlighted with green boundary and follow the mouse movement

 

 

Move multiple objects

Perform multiple selection or box selection first, then

drag with ctrl key down

 

System Control

Grouping

Perform single/multiple/box selection first, then push ¡°g¡± key.

A grey bounding area appears.

 

 

UnGrouping

Perform single/multiple/box selection first, then push ¡°u¡± key.

The grey bounding area disappears.

When ungrouped, the links to whole group disappears, but links to the group¡¯s children still exist.

 

Linking

Select two icons/groups, push ¡°l¡± key.

Yellow link appears

 

 

Unlinking

Single select a link, then push ¡°d¡± key.

Link disappears