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