MinVR

MINVR

by Ruiqi Mao and Jacob Leiken

Description

MinVR is an Open Source Project developed and maintained collaboratively by the University of Minnesota, Macalester College, and Brown University.

The goal of MinVR is to facilitate a variety of data visualization and virtual reality research projects by providing a robust, cross-platform VR toolkit for use with many different VR displays (e.g., CAVE's, PowerWalls, multi-touch stereoscopic tables, 3DTV's, head-mounted displays) and input devices (e.g., 6 degree-of-freedom trackers, multi-touch input devices, haptic devices, home-built devices).

For more information, see the GitHub project: https://github.com/MinVR/MinVR

Download

The latest version of MinVR can be downloaded at

https://github.com/MinVR/MinVR

Tutorial for Hello World

  • Windows. Time: ~1.5 hrs
  • macOS. Time: ~1.5 hrs
  • Linux. MinVR is compatible with Linux, but there is currently no tutorial written for it.

Tutorial Effectiveness

People that followed these tutorials did not have any trouble setting up MinVR - all difficulty came from the actual programming. This is because the tutorials included a compiled MinVR library. Although this effectively mitigated the most serious issues with MinVR (those that come from installation), compiled libraries aren't a portable, sustainable solution.

Minimum/Recommended System Requirements

    • Any system capable of installing and running the dependencies listed in the tutorial.

Metrics

Accessibility: The estimated time for someone to create Hello World in VR

  • Beginner: No coding or graphics experience | 12+ hours
  • Intermediate: Some coding or graphics experience | 6+ hours
  • Advanced: Both coding and graphics experience | 2+ hours
  • Expert: A lot of experience with computer graphics, specifically with this software | 1+ hour

Power: The engine's power - i.e. how much one can do with this

  • High: MinVR has extremely high potential, since its feature set is potentially unlimited. However, given the difficulty of using MinVR, for all but the most experienced users, MinVR will be fairly limited in the applications that can be built in a reasonable amount of time.

Usage: Evaluation of software's use for the following purposes

  • Game Design - MinVR can be integrated into existing C++ game engines to create games.
  • Education - Just as game engines can be adapted for education and training purposes, MinVR can also be used along with game engines to create VR educational experiences.
  • Science - Given its API simplicity, given the right scientific visualization libraries, MinVR can also be used fairly easily for scientific applications.

Target Platforms

By default, MinVR comes with configuration files that support Brown University's YURT, Brown University's CAVE, a standard desktop viewing experience, and SteamVR.

MinVR is extensible, and additional plugins can be written to support other platforms beyond the ones provided.

Ease of Use

Out of all development platforms listed, MinVR is the most "barebones". It provides an API for user input and head/location tracking, but all other aspects of VR development are left for the developer. As such, all scene and graphical aspects are handled by the developer, and a developer using MinVR must be familiar with them to build an application. In other words, MinVR is very difficult for an inexperienced graphics programmer to pick up and run with. Tom Sgouros's demo-graphic, linked to below, includes a "baby scene graph" that makes development easier, but most people still report hours of installation issues and extreme difficulty.

How to Develop

MinVR is written in C++, and is primarily a C++ library. There is a plugin, however, which allows for MinVR programs to be written in Python.

Full Installation (more advanced than tutorials)

Mac or Linux

Enter the commands below in a terminal (must be Mac or UNIX, Windows directions at https://github.com/tsgouros/demo-graphic). This will first install MinVR itself, then the demo-graphic library which we will build examples off of. demo-graphic includes the Baby Scene Graph (bsg) which is a simplified OpenGL library. To follow this install instructions, you'll need gcc, cmake, FreeGLUT, GLFW, git, and make, which can all be installed using your preferred package manager.

$ cd ~/Documents # or to wherever you want to install these
$ git clone -b beta https://github.com/MinVR/MinVR
$ cd MinVR
$ mkdir build
$ cd build
$ cmake .. -DWITH_DOCUMENTATION=ON -DWITH_PLUGIN_FREEGLUT=ON -DWITH_PLUGIN_GLFW=ON -DWITH_PLUGIN_OPENGL=ON
$ make install
$ cd install
$ MINVR_ROOT=$(pwd)
$ cd ~/Documents # probably same as wherever you installed MinVR, but it doesn't have to be
$ git clone https://github.com/tsgouros/demo-graphic
$ cd demo-graphic
$ mkdir build
$ cd build
$ cmake .. -DMINVR_INSTALL_DIR=${MINVR_ROOT} -DBUILD_DOCUMENTATION=ON
$ make

If everything installed correctly, you should be able to run examples! Try:

$ bin/treeDemo
$ bin/objDemoMinVR -c ../config/desktop-freeglut.xml

If you had any issues, check the demo-graphic README. I had an issues where the program hung on glutInit because I had impartially uninstalled XQuartz, an X11 client that came with FreeGLUT.

Windows

  1. Download Beta library from MinVR GIT: https://github.com/MinVR/MinVR
  2. Unzip in folder
  3. Start CMake and set src (to unzipped folder) and build folders (make /build folder in src folder)
  4. Press Configure
  5. Select WITH_PLUGIN_FREEGLUT, WITH_PLUGIN_GLFW, WITH_PLUGIN_OPENGL, WITH_PLUGIN_OPENVR; let system download packages
  6. May result in errors; update GLEW library and GLFW libraries (.lib files and include folders)
  7. Configure again
  8. When 'Configuring done', press 'Generate'
  9. Then 'Open Project' to open in Visual Studios; this will open the 'solution'
  10. Right-click ALL_BUILD > build to build the solution
  11. Right-click INSTALL > build to install the software