18 Open source Virtual reality (VR), Augmented Reality (AR) & Mixed Reality (MR) Frameworks & Projects

18 Open source Virtual reality (VR), Augmented Reality (AR) & Mixed Reality (MR) Frameworks & Projects

Virtual Reality (VR)  is trending nowadays, in the gaming industry, simulation, education, and industrial sector.  Over a decade ago, Second Life was trending as an online virtual world. Since then some games and application emerged in the same context, but the virtual world is not the same as virtual reality, augmented reality or mixed reality.  So what are the differences?

What is Virtual Reality?

Photo by Eugene Capon from Pexels


Virtual Reality is a computer-generated simulated environment. It simulates 3D motion graphics that appears to be realistic from the perspective of the user.

Virtual Reality uses the head-mounted display (HMD); A helmet-sized device that has a small display optic directly in front of one or both eyes.

The major players in Virtual Reality include HTC Vive, Oculus Rift and PlayStation VR (PSVR). However, Samsung, Apple, Google & Lenovo has been pushing forward with gadgets.

Virtual reality was a hype, some may consider it dead or struggling, but it's alive and well. But it's not for everyone.

What is Augmented Reality?

Pokemon Go [src:Pexels]

Augmented Reality (AR); Is an enriching real-world scene with computer generated graphics, like 3D models, text, video, or audio. It's already used in many games like Pokémon GO, Ingress, Jurassic World Alive & the famous treasure hunting game Geocaching.

What is Mixed Reality?

Watch your funny coffee while drinking it [Photo by Eugene Capon]

Mixed Reality (MR) is about mixing virtual reality with the real-world view in real-time, ending in creating new enrollment with computer generated objected simulated into the real scene.

About this list

There are many commercial highly priced VR platforms, aiming for the gaming industry, & simulation, so We have collected here the most promising open-source virtual reality (VR) projects, aiming to provide open-source VR software developers with a comprehensive list of options to choose from for their projects.

Many of the framework, platforms, VR graphics engines we have listed here supports most of the VR gadgets, but some projects we have added here are providing open-source instructions, tools to help to build low-cost VR gears, aiming to help engineers, startups to lower the cost their products and innovate.


1- GuriVR

GuriVR

GuriVR is an open-source virtual reality (VR) editor, that comes with a unique way to convert text description of a 3D scene into 3D VR-Ready scene. It's based on Mozilla's A-Frame and works as smoothly on the modern WebGL-enabled web browsers like Mozilla Firefox, Google Chrome. GuriVR generates a rich virtual reality experience that can be exported into a standalone web app or embedded into a  website. It can also be generated to desktop apps and uses OpenGL.

GuriVR supports text, 3D models, images, audio, voiceover, sky,  panorama, video-sphere, video cover, 3D charts, & links. It's easily created and can be shared easy at websites, or through a hosted service.


2- OpenSpace3D

OpenSpace3D Screenshot [src: OpenSpace3D]

OpenSpace3D is a free open-source virtual reality development platform, for building rich virtual reality experience applications and virtual reality powered games. It supports a wide variety of control and simulation devices like Leap Motion, HTC Vive/ Oculus headset, Google cardboard,  Myo, Toii eyex, & 3D rudder.

OpenSpace 3D also supports creating augmented reality (AR) apps which can be used for creating functional entertaining, & educational games for kids.

OpenSpace is a complete virtual reality development environment, it provides a scene editor, a visual programming editor (PlugITs System), multi-media support,  3D models' exporter that supports 3DS Max, Maya, Cinema 4D, & Blender.  It also supports a wide variety of devices, with an out-of-box physics engine.

Platforms:

  • Windows
  • Linux
  • macOS
  • Android
  • iOS
  • RaspberryPi

3- Google's ARCore

[src: Google ARCore]

ARCore is an open-source SDK for augmented reality (AR), & virtual reality (VR) released and maintained by Google. It supports mobile development environments for iOS/ Android (Java) and works with the most popular game engines created Unreal, & Unity.

ARCore is released under the Apache 2.0 license, in early 2018. It supports mobile sensors, allows the phone to detect the size and location of all type of surfaces, and use current light conditioning within the dynamic active experience.

Highlights

  • Community-supported
  • Used to create many applications
  • iOS support
  • Android support
  • Unity support
  • Unreal Engine support

4- Holokit: Build Rich Mixed Reality (MR) experience

Holokit presentation [src:Holokit]

HoloKit is an open-source mixed reality (MR) that provides a comprehensive mixed reality software and custom HeadKit cardboard headset to enrich the experience.  Holokit supports iOS (iPhone), &  Android.

Holokit cardboard is available for developers with a demo project for iPhone (iOS), & Android. It's available only at their website.

Supported platforms

  • iOS: iPhone 6S, iPhone 6S+, iPhone SE, iPhone 7, iPhone 7 Plus, iPhone 8, iPhone 8 Plus, iPhone X
  • Android: Samsung Galaxy S8, Google Pixel / Google Pixel XL
  • Tango Phone: Asus Zenfone AR

5- ApertusVR

ApertusVR 


ApertusVR is an open-source modular, distributed virtual & augmented reality library. It's written in C++ which provide better performance on normal and advanced hardware specifications. It's also embeddable, platform-independent, & easy to configure, and use. ApertusCore the core library has extensions to specific computer-generated reality experience/ simulation domains like mixed reality (MR), & augmented reality (AR).

Apertus has plugins for most of the popular virtual reality devices like OpenVR / SteamVR based glasses (i.e. HTC Vive), Oculus DK2 and CAVE systems. Developers also can build plugins to certain controllers, devices, & headsets.

Though ApertusCore/ ApertusVR is written in C++, it also supports JavaScript (NodeJS), and its developers are working on providing support for Python, & Swift.

ApertusCore supports many 3D models extensions and provides wide options for hardware specifications including RaspberryPi.

Highlights

  • VR, MR (Mixed Reality), AR (Augmented reality) modules
  • RaspberryPI support
  • Supports many VR peripherals and control devices.

6- Relativty: Build your own VR Headset

Build your own VR set



Relativty is an open-source project helping developers to build their own VR hardware with less than $100.  The project is providing 3D models set, schematic, and instructions to assemble a VR headset.  The project started by a team that evolves into a powerful community which provides support for developers all around the world.

Relativty uses Arduino, among many open-source tools/ libraries like OSVR (Open-source VR http://www.osvr.org/) to build high-quality VR set with minimal cost.


7- IdeaSpace VR (CMS): Virtual Reality Content Management System

IdeaSpace VR (CMS). [src: IdeaSpace]


IdeaSpaceVR is not a development framework or hardware-focused platform, it's an open-source custom CMS (Content Management System) that manage, publish virtual reality content.

IdeaSpaceVR is self-hosted, user can install it on their servers, it's built with PHP/ MySQL (MariaDB), modular, with built-in virtual reality content player/ viewer. It uses A-Frame to create a rich virtual reality and augmented reality experience.

The project IdeaSpaceVR supports desktop, mobile, VR headsets out-of-box, it works smoothly on modern browsers like Google Chrome, Mozilla Firefox, with WebGL support as it uses WebVR.

Feature

  • Easy to use
  • Theme support
  • Assets management
  • Works with any VR headset
  • File-types support
  • Multi-lingual
  • Built-in Image manipulation

8- OSVR: Open Source Virtual Reality Platform


OSVR is an open-source software platform for virtual and augmented reality. It allows discovery, configuration and operation of hundreds of VR/AR devices and peripherals. OSVR supports multiple game engines, and operating systems and provides services such as asynchronous time warp and direct mode in support of low-latency rendering. OSVR software is provided free under the Apache 2.0 license and is maintained by Sensics.

OSVR is an open-source software platform for virtual and augmented reality. It provides built-in functions to discover, connect, & manage devices and peripherals for virtual reality (VR), & augmented reality (AR).

OSVR is used to build many VR projects, including the Relativty: Open source initiative aiming to help developer build their own VR headset with low-cost.


9- A-Frame (MR/ VR)

A-Frame


A-Frame is an open-source browser-ready WebGL framework for creating rich virtual reality (VR) and mixed reality (MR) experience. A-Frame has been marked as a top WebGL framework in our article: (xxx). and it's the recommended library in Mozilla Mixed Reality project.

A-Frame works smoothly on many virtual and mixed reality gears like Vive, Rift, Daydream, GearVR, & it works very well on desktops as well.  It is used by the world top companies like Disney, Google, Mozilla, NASA, Samsung, Sony, & Toyota.

Highlights

  • Built for Virtual Reality (VR) & Mixed Reality (MR)
  • Performs well on Mozilla Firefox, & Google Chrome
  • Works on mobile
  • Works with many VR platforms
  • Used by big companies, & brands in their VR/ MR projects

10- Lovr: Lua-based AR game engine

If you are a fan of Love 2D game engine which uses Lua programming language, You will like Lovr, Love uses the same concept but it aims to create rich virtual reality experience-rich that works smoothly on all platforms as Love does.

Lovr is simple to learn, easy to use and to master, It comes with a set of powerful modules like audio, headset module, built-in physics module, and a powerful graphics engine. Lovr is like Love it works on Windows, Linux (Debian, Ubuntu, Fedora, LinuxMint) and has a rich libraries repository. Lovr supports WebVR out-of-the-box.


11- JanusVR

JanusVR



JanusVR is an open-source virtual reality VR development, it aims to provide collaborative real-time virtual reality experience to build, customize VR space. Janus has server-side which is built with NodeJS (Open source), and client which is built with QT5 library (Closed source). JanusVR allows the developer to create collaborative virtual reality space easy, which can be used for meeting,  gaming, or creating virtual reality-powered classrooms.

Highlights

  • Web-based
  • real-time content creation
  • The built-in editor allows users to join together to create content in real-time.
  • Embeddable into web pages
  • Media support
  • Decentralized
  • Customizable server
  • Multi-user support
  • Collaboration-ready
  • Full support for Oculus Rift
  • Leap motion support
  • HTC Vive support
  • Razor OSVR support
  • Custom Markup language to built VR scenes (Janus Markup Language)

12- PlayCanvas

PlayCanvas Editor


PlayCanvas is a lightweight fully featured 3D web game & graphics engine. It's the favorite WebGL 3D game engine among developers.  It has an impressive list of features that provides game developers with everything they need to build browser-based games, and virtual reality experience. PlayCanvas is used by many games developers, there are several successful games on the market. PlayCanvas is not built only for games but it can be used to build AR (Augmented Reality) & VR (Virtual Reality) applications.

Highlights

  • lightweight
  • Fast loading
  • Mobile-browser support
  • Web-based graphics editor
  • Supports building AR (Augmented Reality) & VR (Virtual Reality) apps
  • GPU Particle engine with editor
  • Static, skinned and morphed meshes
  • Full model export pipeline from Maya, 3DS Max, Blender
  • Powerful audio library
  • Full integration with 3D rigid-body physics engine ammo.js
  • Input: Mouse, Keyboard, Touch, Gamepad, VR
  • Rich API documentation
  • Several games examples with the source code

13- Babylon.js: Web 3D Graphic Engine

Babylon.js Mesh rendering



Babylon.js is a powerful, beautiful, simple, and open game and rendering engine packed into a friendly JavaScript framework.

Babylon.js is a simple yet powerful WebGL powered 3D graphic engine, it provides easy-learning curve for JavaScript developer, simple API, and rich documentation and tutorials list. It can be used to build interactive 3D showcase/ presentation, 3D web-ready product presentation, games, VR (Virtual Reality) apps, and complex architecture simulation.

Babylon.js has a very large community of developers that supply its inventory of code snippets, tutorials, and of course re-usable extensions to extend its core functionalities.

Highlights

  • Sandbox
  • Online editor
  • Easy to setup
  • Rich examples list
  • Supports JavaScript  & TypeScript
  • Rich snippets library
  • Modular and packed with many useful extensions
  • Extensible Modular online viewer
  • Features-rich engine
  • GUI tools.

14- ARToolKit

ARToolkit is an open-source tracking library that helps the developer to solve video/ object tracking to create a real-time augmented reality experience. ARToolkit uses computer vision algorithms to provide fast tracking functionality for augmented reality applications.  ARToolkit is available for Unity gaming engine, C++, and JavaScript developers. It has a large community and well-documented instructions for installation and development.

Highlights

  • Free/ Open source
  • JavaScript support
  • C++ Support
  • Unity Gaming engine support
  • Large community
  • Well documented

Features:

  • Single camera position/orientation tracking.
  • Tracking code that uses simple black squares.
  • The ability to use any square marker patterns.
  • Easy camera calibration code.
  • Fast enough for real-time AR applications.


15- Argon.js

argon.js

Argon.js is a JavaScript framework for adding augmented reality (AR) content to web applications. Argon.js allows web developers to add interactive 3D/ 2D, audio, images content to a live scene. It works on desktop web browsers and mobile browsers.


16- Primrose VR

PrimroseVR demo



PrimroseVR is an open-source browser-based framework for creating virtual reality (VR) applications, like product showcase, virtual meeting, or virtual classroom.  It's using JavaScript and render the virtual reality graphics using WebGL. Primrose is compatible with any new browsers like Google Chrome, Safari, & Mozilla Firefox.

PrimroseVR works on mobile browsers as well, like Safari on iOS, & Google Chrome on the new Android devices.


17-VREmbed

VREmbed


VREmbed is a super lightweight JavaScript library that allows the developer to embed VR web-ready projects in any webpage. It works on all modern desktop web browsers and works as well on mobile browsers. VrEmbed is an open-source project, it's aiming for developers who want to enrich their web projects with virtual reality experience.


18-Mixare

Mixare is short for (mix Augmented Reality Engine), it is an open-source augmented reality (AR) browser built for mobile Android, & iPhone.  It's available for download from Google Playstore, & Apple AppStore. It's an old project, started back in 2009, & released under GPLv3.

Mixare apps for Android/iOS are available for download at Gitlab.


Bonus

KronosOpen Standards

Khronos royalty-free open standards for 3D graphics, Virtual and Augmented Reality, Parallel Computing, Neural Networks, and Vision Processing.

An open industry consortium of leading hardware & software companies creating advanced acceleration standards for 3D graphics, AR/VR, vision & machine learning.

Please check them out.


Conclusion


There are many great tools to create virtual reality experience, which lower the cost for developers and startups. Some of them are backed by companies like Google, & Mozilla, and supported by powerful communities. This is merely a list to help developers, and students to find their right tools for their projects.

We didn't list some specific open-source VR tools which built for medical education, clinical usage, or industry-specific platforms, as we plan to separate them in another article.

If you know of another tool, platform, or framework that we didn't list here, please email us, and we will gladly update this list.


Resources and Recommendations

: A great resources article written by Ivan Stevanovic. We really enjoyed reading it.