It is a known fact, that in software development there are many libraries and kits that aid developers in their work. But what about such a brand new technology as Virtual Reality? Are there dev kits to develop VR apps too? What are the best VR SDK options? In this short 10-minute read post we’ll present the results of our research on matter at hand.
Firstly, things are quite different than of those related to augmented reality SDKs. While AR apps work on any modern mobile device and there are plenty of indie tools/kits, in the world of VR it all is tied to a specific headset/platform. In other words, with PSVR kit you can only make apps for PlayStationVR, and no other VR headset. Some platforms may have several kits.
We’ve selected 6 most popular VR headsets so far, and we’ll go in descending order by price. We’ll make a short review of features of each platform, and then discuss SDKs that developers can use. Rolling!
1. HTC Vive / OpenVR SDK
Motion tracking: It comes with two wireless infrared Lighthouse cameras. Cameras are to be placed in the corners of a room, tracking the headset’s 37 sensors (70 in total, including each controller).
Controllers: They’re basically a vertically bisected version of the Steam Controller, with a trackpad, buttons and a pressure-sensitive grip in each hand.
Camera: Front-facing camera, which means users may overlay virtual objects onto the real world surroundings.
Hardware:
- NVIDIA GeForce GTX 970
- AMD Radeon R9 290
- Intel i5-4590
- AMD FX 8350
- 4GB+ of RAM, HDMI 1.4 or DisplayPort 1.2 or newer
- 1x USB 2.0 or greater port
- Windows 7 SP1 or newer
Best VR SDK for HTC Vive
For developers looking which SDK to use to build VR apps for HTC Vive, there are 3 major options. OpenVR kit, SteamVR kit and VRTK – all official virtual reality SDKs by Viveport community. And by the way, Viveport SDK is definitely a starting point if you want to create and share apps for HTC Vive. Now let’s give a brief review of software development kits:
- OpenVR SDK by Valve is an API and a runtime environment with great samples. It supports multiple VR hardware and applications don’t have to be vendor specific. The runtime is of SteamVR.
- SteamVR SDK lets developers create single interfaces that will work on different VR headsets, including HTC Vive. Moreover, it gives access to controllers, chaperoning, models and it also allows content preview in Unity play mode.
- VRTK, or Virtual Reality Tool Kit, appears to be a collection of handy scripts for VR applications. It works in Unity3d engine.
2. PlayStation VR / PSVR dev kit
Motion tracking: Six-axis motion sensing system (three-axis gyroscope, three-axis accelerometer).
Controllers: DUALSHOCK 4, PlayStation Move motion controller, PS VR aim controller.
Camera: PlayStation VR comes with two cameras (1280×800), each of 30 cm focusing distance, and a field of view of 85 degrees. In such dual setup, cameras can operate in various modes, depending on application.
Hardware: PlayStation 4.
To develop apps and games for Sony PlayStationVR and to have access (!) to PSVR dev kit one has to become a registered developer. Overall, a quite tricky and somewhat mysterious situation here. To register and get this SDK by Sony it seems you have to pay $2,500, though no information on their site, strangely enough. On the other hand, the rumor goes that Sony has been giving out this dev kit for free to hand-selected individuals, and there is a leaked version of it. Anyhow, the only way to know is to join this exclusive club.
One probable alternative is SteamVR and Trinus PSVR pairing. It is only for computers on Windows, though it’s one of the ways to play more games via PlayStationVR. Being an unofficial firmware for PSVR, we should warn that one should use Trinus at his own risk.
3. Oculus Rift / Oculus SDK
Motion tracking: Oculus sensor is able to recognize the motion if you turn your body more than 180 degrees.
Controllers: Three buttons on each controller with X, Y and Menu buttons on the left. A, B and the universal Oculus menu button on the right. Other buttons also include a clickable thumb stick, a trigger and a touch-pad button (for fingers other than a forefinger).
Camera: Oculus headset setup has a tracking camera which works with an infrared light. This allows 360-degree positional head tracking in a pretty broad play area, though in short scenarios.
Hardware:
- NVIDIA GeForce GTX 960
- AMD Radeon RX 470, Intel Core i3-6100
- AMD FX4350
- 8GB+ RAM, Compatible HDMI 1.3 video output
- 2x USB 3.0 ports
- Windows 7 or newer
Oculus SDK
Though developers can use VRTK for Rift to some extent on Unity, Oculus SDK is the best VR SDK for Rift. It includes various engine-specific kits (for Unity, Unreal, WebVR, etc.), samples, asset and audio packages to help build VR apps. There are Oculus PC SDK, for Windows, and Oculus Mobile SDK. This VR dev kit offers lots of features and handles many issues of VR content, like the optical distortion and rendering techniques, for example.
4. Samsung Gear VR / Oculus Mobile SDK
Motion tracking and camera: Gear VR unit acts as the controller, which contains the field of view, as well as a custom inertial measurement unit. This IMU for rotational tracking connects to a smartphone via micro-USB. Gear VR set also has a touch-pad, a back button, a proximity sensor to detect if the headset is on.
Controllers: The device is only 48.1 x 38.2 x 108.1 mm, and accessing the volume controls, Back button, home screen or touch pad.
Hardware:
- Galaxy S8
- Galaxy S8+
- Galaxy S7
- Galaxy S7 Edge
- Note 5
- Galaxy S6
- Galaxy S6 Edge
- Galaxy S6 Edge+
Oculus Mobile SDK
A natural question comes to mind first: why is the best VR SDK for GearVR by Oculus? The answer is pretty simple. The VR headset by Samsung was initially built in collaboration with Oculus, thus their kit fits nicely to build apps for GearVR. Oculus Mobile SDK contains tools and libraries for C/C++ development for Oculus, as well as for Samsung Gear VR.
For those who want to conduct VR development in Unity for GearVR, the setup should include (as advised by the vendor):
- Unity 5.3.2
- Java development Kit 8
- Android SDK 5.0 and tools
- Sample assets for Unity project
- Oculus signature file (osig)
5. Google Daydream View / Google VR SDK
Motion tracking and camera: Generally, your experience using a Google Daydream will depend on which smartphone you lock inside the headset.
Controllers: There are only five buttons including a trackpad that doubles as a button. Below the trackpad, you’ll find an app button. Then there’s the home button below. Lastly, you can find the volume Up and Down buttons on the right side of the controller.
Hardware:
- Pixel / Pixel XL
- Pixel 2/2 XL
- Moto Z
- ZenFone AR
- Mate 9 Pro
- Axon 7
- Galaxy S8/S8+
- Galaxy Note 8
- V30
Google VR SDK
Undoubtedly, the best tools to build VR apps for Google headsets are provided by no one else than Google. Their developer community is vast and has hundreds of frameworks, tools, APIs, SDKs and whatnot. Google VR SDK is not one but many, they have specific kits for Android/iOS, Unity/Unreal engines, etc. For smartphones and Daydream headset developers can use Google VR SDK for Android OS.
This VR SDK is also a NDK (native dev kit) providing an API for native code in C and C++. If you need direct Github repository for a specific VR development environment, check these out:
6. Google Cardboard / Google VR SDK
Google Cardboard is a folding cardboard container, which users can place a smartphone into. It’s universal and supporting a wide range of smartphone models. Google Cardboard viewer includes:
- a piece of cardboard cut into a precise shapes
- 45 mm focal length lenses
- magnets or captive tape
- a hook and loop fastener (such as Velcro)
- a rubber band
- an optional near field communication (NFC) tag
Google VR SDK
This SDK for Androids also supports Cardboard along with Daydream View. Generally, virtual reality SDKs by Google offer any tools to make VR apps for their platforms, e.g. libraries, APIs, samples and design guidelines. The hardware requirements for Cardboard apps are affordable pretty much to everyone – a viewer and a smartphone.
With Google VR SDK developers are able to make virtual reality apps, spending less time and effort on tasks like:
- Correction of lens distortion
- Audio
- Head tracking
- 3D calibration
- Rendering
- Geometry configuration
VR platform comparison
To summarize all of the above, here is the feature comparison of six top virtual reality viewers. These specifications may help you out to determine what kind of VR app you might be able to develop, or what resources might be required for your project.
Product | HTC Vive | Sony PlayStation VR | Oculus Rift | Samsung Gear VR | Google Daydream View | Google Cardboard |
Headset type | PC | Console | PC | Mobile | Mobile | Mobile |
Connections | HDMI, USB 3.0 | HDMI, USB 2.0 | USB 3.0 | USB 2.0, USB 3.0 | None | None |
Resolution (per eye) | 1080×1200 | 960×1080 | 1080×1200 | Native to phone | Native to phone | Native to phone |
Field of view | 110° | 100° | 110° | 101° | 100° | 90° |
Refresh rate (Hz) | 90 | 120 | 90 | Native to phone | Native to phone | Native to phone |
Sensors | Motion, camera, external motion tracking | Motion, external visual positioning | Motion, external visual positioning | Motion | Motion | Motion |
Controls | HTC Vive motion controllers | DualShock 4, PlayStation Move | Oculus Touch, Xbox One gamepad | Handheld remote, touchpad on headset | Handheld remote | Handheld remote |
Software platform | SteamVR | PlayStation 4 | Oculus | Android | Android 7.0 Nougat | Android, iOS |
Engines: | ||||||
Unity | + | + | + | + | + | + |
Unreal Engine | + | + | + | + | + | + |
OpenVR | + | |||||
AppGameKit VR | + | + | ||||
CryEngine | + | + | + | |||
CopperCube | + | |||||
Positional tracking | + | + | + | |||
Head tracking | Accelerometer, gyroscope, structured light | Accelerometer, gyroscope |
Accelerometer, gyroscope, magnetometer | Accelerometer, gyrometer, proximity sensor | Accelerometer, gyrometer, proximity | Accelerometer, gyrometer |
Price (Amazon) | $599.00 | $374.95 | $399.00 | $112.89 | $71.99 | $15.00 |
P.S. Best game engines for VR
One of the most efficient uses of VR so far has been in the gaming industry. So we thought it might be useful to name the top engines to create virtual reality games and apps. We’ve already had few mentions of Unity previously, for example, which is most probably the best one to this date.
- Unity3d – a cross-platform game engine, which is great for VR, as it supports Oculus Rift and all of the above-mentioned platforms. It is very popular among developers, offers the asset store with wide choice, and also allows a free choice of programming language (C#, C Sharp, JavaScript, Python).
- Unreal Engine – a game engine introduced back in 1998, grown since to become an efficient platform to build games, apps, animations for VR headsets and mobile devices. UE4 grants full access to the source code and comes with highly convenient visual scripting mode, has outstanding compilation speed.
- LibGDX – an open-source development framework written in Java. It comes with the unified API for every platform from Windows, Linux, mobile OS to web browsers. Fast iterations and prototyping, rendering graphics via OpenGL ES 2.0, supporting all popular audio formats.
- AppGameKit VR – a game creation system for mobile devices, and working on Oculus Rift, HTC Vive. Commercial use is allowed without the obligation to pay royalties. This kit’s commands allow quick creation of basic VR experiences. Unlike other engines, that are free, AppGameKit costs $20.
- CryEngine – an open-source royalty-free gaming engine, that provides lots of features, some being quite unique, e.g. fog rendering/cloud shadows, weather effects, color grading, etc. It also is a marketplace for developers to find individual assets, 3D models and sounds.
Virtual Reality continues to evolve and take it’s shape. Which tools do you prefer today and which will you tomorrow?