- Practice writing in a strongly typed language (C#).
- Get comfortable using Unity.
- Learn how to make a VR experience with user interactions.
Graph Theory is a field of mathematics that would greatly benefit from 3D renderings of graphs (collections of vertices & edges). I would like a way to create, visualize, and manipulate graphs in virtual reality.
-
As described in this University of Lethbridge paper, GLuskap is a "software package [that] allows for the creation and editing of graphs in 3D". It's written in Python and is compatible with the Oculus Rift.
-
As GLuskap was not originally built for VR, it can be used for viewing 3D graphs in VR, but a user cannot make or manipulate a graph within VR. It also uses a game controller to move through a graph, as opposed to being able to walk around it.
-
My app will allow users to create their own graphs and manipulate them, and they will be able to walk around and through a graph instead of using a controller for that functionality.
My app targets people studying graph theory (or mathematicians in general) and anyone who likes to play with shapes in 3D.
- Unity (Game Engine)
- C#
- MonoDevelop
- HTC Vive
- xUnit.net (for testing, possibly)
Not quite sure how to wireframe a VR experience. It will be a space with instructions displayed to one side, and then whatever graph is being created at the center of the space.
- User can create vertices.
- User should be able to create vertices (represented as spheres).
- User can make connections between vertices (edges).
- User can select two vertices to make a connection between them.
- Should look like a line between two spheres that can (ideally) be of variable length.
- User can manipulate the graph.
- Graph should be moveable as a whole.
- Should be able to rearrange vertices without losing connections.
- User can delete vertices and edges.
- Instructions will be displayed to user.
- Graphs can arrange themselves nicely.
- This could be default behavior, or happen when the user specifies.
- It would involve vertices being repelled by each other, forcing them to spread.
- User can label vertices.
- Can give vertices distinct labels (letters/numbers/words).
- They can be relabeled.
- User can color graphs.
- Assign colors to different vertices.
- Perhaps a feature that tells you if it's a "valid" coloring (meaning no two connected vertices are the same color).
- User can pull up examples of famous graphs.
- Like the Petersen Graph!
- Or some Kn Graph!
- Graphs and environment look cool.
- Silly "modes" where vertices turn into non-sphere shapes like cats, or shoes, or...whatever else.