Skip to content

Instantly share code, notes, and snippets.

@add2point71dots
Last active July 3, 2017 08:50
Addie's Capstone Product Plan

Product Plan - Addie Land

Learning Goals

  • Practice writing in a strongly typed language (C#).
  • Get comfortable using Unity.
  • Learn how to make a VR experience with user interactions.

Problem Statement

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.

Market Research

  • 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.

Target Audience

My app targets people studying graph theory (or mathematicians in general) and anyone who likes to play with shapes in 3D.

Trello Board

Graph Theory VR Board

Technologies

  • Unity (Game Engine)
  • C#
  • MonoDevelop
  • HTC Vive
  • xUnit.net (for testing, possibly)

Wireframes

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.

MVP Feature Set

  1. User can create vertices.
    • User should be able to create vertices (represented as spheres).
  2. 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.
  3. User can manipulate the graph.
    • Graph should be moveable as a whole.
    • Should be able to rearrange vertices without losing connections.
  4. User can delete vertices and edges.
  5. Instructions will be displayed to user.

Potential Additional Features

  1. 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.
  2. User can label vertices.
    • Can give vertices distinct labels (letters/numbers/words).
    • They can be relabeled.
  3. 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).
  4. User can pull up examples of famous graphs.
  5. Graphs and environment look cool.
  6. Silly "modes" where vertices turn into non-sphere shapes like cats, or shoes, or...whatever else.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment