(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 |
|