This project is due on January 29th at 2pm. It needs to be demonstrated that Friday afternoon to the course staff in CSE basement lab 220. Like project one this is a team project for two people.
The goal of this project is to create a scientific data analysis application to learn more about the data collected about a group of 62 dolphins in a community living off Doubtful Sound, New Zealand. What is known about the dolphins are their names, as well as those other dolphins which they have frequent social interactions with. Here is a picture depicting the data as a 2D graph:
The dolphin network data is available as a GML file. The GML file describes a node-edge graph with the nodes being the dolphins and the edges their interactions. You will have to write a parser to load the file into your visualization application and then provide certain functionality to analyze the data. This GML parser in the C language can be used as starter code.
This project is for the Leap Motion or the Microsoft Kinect. Once your application runs you are only allowed to interact with it through gestures your device recognizes, no keyboard or mouse interactions are permitted.
You will find the drivers for the Leap Motion at this link. There are drivers for Windows, Mac OS and Linux. Note that while the is a Leap package in the Unity Asset Store, but it is outdated. The up to date Unity package is at the same link as the drivers.
For the Kinect you will find drivers and Unity packages at this link. Note that these drivers are only for Windows. If you need to use Mac OS or Linux the OpenKinect project provides the necessary support.
Displaying the Graph (30 Points)
For the layout of the graph you should use a 3D force directed algorithm.
But you don't need to use the above referenced algorithm, you are welcome to use any other force directed algorithm as long as it lays out the nodes in 3D space.
- -20 if your layout algorithm is not a force directed one
Interaction Tasks (70 Points)
This homework project is mainly oriented around selection and manipulation. Therefore, you will need to implement the following functionality for your visualization application. It is important that the interaction methods you implement are as intuitive as possible.
- Rotate the entire graph like with a trackball (rotation about more than one axis) around the center of the screen. (10 points)
- Zoom in and out of the data set. Repeated zoom steps should make the data set successively larger or smaller. (10 points)
- Show all: when triggered, it will automatically zoom in or out to show the entire data set on the screen. (10 points)
- Select a node and highlight it. This should display the dolphin's name somewhere on the screen (5 points). Additionally, three manipulation options should now be possible with the highlighted node:
- delete the highlighted node (and its connections) and re-layout the remainder of the graph (5 points)
- show the direct connections (edges) as well as directly connected nodes of the selected node (5 points)
- shift the graph (no zoom) so that the selected node is in the center of the screen. (5 points)
- Multi-select: the user should be able to select multiple nodes in two ways (selection can be done in 2D, 3D is for extra credit) in order to then delete all those nodes or show all their direct connections (centering is not necessary for multi-select):
- Volume select: the user selects a rectangle or circle and all nodes within these get selected. (10 points)
- Sequential select: the user can select multiple individual nodes, one at a time. (10 points)
- Up to 50% penalty for unintuitive interactions.
Extra Credit (10 Points)
Up to 10 points of extra credit can be earned for the following functionality:
- Both volume select and sequential select need to be done in 3D. This means that volume select is based on a 3D box which the user draws/places or a sphere with center point and radius. The sequential select must allow full 3D control of which node is being selected. This implies that if one node is behind another the user should be able to select the node behind the one in the front. (5 points)
- Selecting in 3D on a monoscopic monitor is quite difficult. Therefore you will need to implement one of the multiple methods discussed in class to emphasize the three dimensional structure of the graph network. (5 points)