As the VR market continues to push forward, there is an increasing amount of tools available to VR developers. While this is not an exhaustive list, I've compiled the most commonly used VR tools and platforms used today in hopes of making it easier for you to find what works best for your needs.
This is a collection of tools VR developers are using to create native application experiences, typically for Windows machines.
Unity is by far one of the most ubiquitous of tools being used today for VR development. At its heart, it’s a game engine. It has a direct VR mode to preview your work in an HMD (Head Mounted Display) which can really boost productivity by designing for VR within a virtual environment. Unity is quickly becoming the default tool for VR development due to its ease of use and ability to quickly prototype VR applications with it.
Unreal Engine (UE4)
One of the main competitors of Unity 3D, Unreal Engine is also a gaming engine with VR integrations, an asset store, and great documentation. The graphics are debatably more advanced and realistic and the learning curve is similar to Unity. Many of the VR demos built with UE4 are much more life-like and smoother to navigate within. It provides great performance with the conveniences of a modern editing environment. UE4 also exports to most platforms but exports to slightly less than Unity.
3DS Max & Maya
These are Autodesk products for modeling, animation, lighting, and VFX. They don’t have VR support by default but through pricey plugins instead. AutoCAD and 3DS Max are long-time standards in the architectural design industry and have some of the most precise tools in their UI. Like almost all GUI’s for building 3D environments and drawings, these tend to be quite massive UI’s with a lot of tools hidden behind menus, sub-menus, and toolbars.
Blender is quickly becoming a favorite modeler for many VR developers. It’s free and open source software written in Python and is available for Windows, Mac, and Linux. There’s a huge community of people devoted to this software and its use. Many websites provide tutorial videos, forums, and documentation.
The software’s official documentation is also quite comprehensive. Mainly for modeling, UV mapping, lighting, rigging, and animation, you can export your models to a multitude of formats that can then be used with many other tools. There’s even a great plugin for exporting your creations into JanusVR with a free open source plugin called FireVR.
Google’s SketchUp is a basic modeling application with a very low learning curve that can get anyone up and running in a short amount of time. The tutorials on the website are excellent, not only teaching the basics of the software but also as introductory lessons to basic 3D modeling concepts. You can quickly learn the basics of modeling with SketchUp and then move onto more advanced tools like Blender if you desire. It’s really great for modeling, quickly learning the lingo, and then moving onto bigger and better things. There's a free trial version of this software.
These are tools used for developing WebVR in the various browsers. Most browsers are still struggling with headset device support, but they’re getting much closer to be included in the main builds of modern browsers like Chrome and Firefox. However, most phones can be detected with the WebVR-polyfill and if turned sideways, switched to a dual display mode that you can use with Google Cardboard, Samsung VR, or other headsets that are built to be used in conjunction with a smart phone.
If you’d like to skip learning Three.js and WebGL directly, check out the open-source project A-Frame by Mozilla. This is a web framework built on top of Three.js and WebGL to build virtual reality experiences with HTML using an Entity-Component ecosystem. Works on Vive, Rift, desktop, and mobile platforms.
If you’re coming from the web development world, this is a great place to start as it has an HTML-like syntax and you can use all of your typical web development tools. It’s hands-down the easiest to pick up and so far the framework of choice at Lullabot.
Promising to be the next big thing in WebVR, React VR promises rapid iteration and a syntax that is similar to A-Frame’s but hinges on the benefits that React brings. You can read more about how to get started in their documentation.
Vizor is an interesting take on a WebVR editor in your browser built with NodeJS and Three.js. It’s a visual programming environment for WebGL, WebVR and other HTML5 APIs. It features live preview, data flow visualization, network communication, publishing, unlimited undo, and a catalog of presets that can be used as modular building blocks. Complex logic can be nested in subgraphs and they can be rendered directly to a specific render target, or simply used as a texture. Loops are modeled as nested graphs that are evaluated once per loop iteration. All within your browser.
Janus is more akin to a web browser for VR than a development tool. It’s a platform and while the client is closed source and built in QT5, the server side component is open source and written in NodeJS. Janus has full Oculus Rift support with avatars and some hand control via the Leap Motion controller. HTC Vive is also supported and Razor OSVR support is on the roadmap.
Within Janus you can hit ‘tab’ to create a portal to a new website, much the way you enter an address into your traditional web browser. Just click the portal and walk through to a new website, or “room”. You can even place the Janus markup inside of a traditional website within comment tags so that when you view the site with a typical browser, you see your regular website which parses the HTML, and Janus will see the 3D version of the site.
Janus has a means of editing the code of the room from directly within Janus and saving. This is one feature that’s making it become a popular option for web developers to start the transition to building virtual environments. Janus even has built-in multi-user support so you can walk around the internet with your friends, and talk to them via the built-in voice chat support. It’s a lot of fun and has a very low learning curve, especially if you’re already familiar with web technologies. You can learn more about Janus and its many uses or refer to the ever-helpful subReddit.
Janus also has a WebVR counterpart which aims to support everything that the browser does within WebVR. Check out the open source code.