Back in October, I had a lot of fun developing some Virtual Reality samples using Autodesk’s View & Data API. The samples instanced the A360 viewer component twice in a web-page and controlled the views on these two instances – maintaining a stereoscopic effect – as the mobile viewing device changed orientation.
Here’s a video we saw in a previous post to give a sense for how these demos work…
The original samples were developed for Google Cardboard – which many of you will have received at the recent DevDays events around the world – but they’re just as applicable for other mobile VR platforms.
One such platform that’s been getting a lot of interest over the last couple of months is the Samsung Gear VR. This is similar in concept to Google Cardboard, but goes way above and beyond in terms of comfort and visual quality. Gear VR currently works with only one model of smartphone, the Galaxy Note 4, although you can get a sense for the quality of the optics by holding other devices in place.
The ADN team has bought at least one of these to play with. Philippe Leefsma had one shipped across to the Neuchâtel office, but then went on vacation for the best part of January. I hate to see toys going unplayed with, so with Philippe’s permission I cracked the box and got stuck in. :-)
It’s very important to note that the samples we’ve developed, so far, are for web-based VR: they make use of Three.js and WebGL via the View & Data API’s viewing stack to create a VR experience in the browser. This has certain benefits in terms of portability, of course – the samples work well on certain iPhones, although interestingly seem to have issues we so far haven’t been able to resolve on the iPhone 6 – but there are downsides in terms of native device integration: for Google Cardboard this only means you don’t get access to the information from the magnet-based switch on the side of the headset (as that’s only available in the Android-native Google Cardboard SDK) but for Gear VR the impact is more pronounced.
Gear VR has a micro-USB plug that connects the headset with the Note 4 when you mount it. This allows VR applications running on the Note 4 to use the Oculus Mobile SDK (yes, the Gear VR software was developed in conjunction with Oculus) to gain access to some additional capabilities. Rather than a simple toggle switch, Gear VR has volume & back buttons as well as a separate gamepad with which it connects via Bluetooth. There’s also a proximity sensor so that the device can turn off when the headset is taken off (at least that’s what I think it does).
I’d like to use to the SDK to add some additional capabilities to the web-based samples, at some point, but right now there are a few things getting in the way. Firstly, at the time of writing the Note 4 is still running Android KitKat (4.4.4), while the Gear VR software stack is all based on Lollipop (5.x). [It turns out this isn’t true: it’s just that not all Note 4 devices have a compatible chipset & firmware. More on this at the end of the post.] So even plugging the phone into the Gear VR device tells me I need to install the software… and then trying to do so results in this message.
Secondly, Android’s WebView component apparently doesn’t support WebGL in versions prior to Lollipop, either. This wouldn’t necessarily be an issue if we were using a native viewer component – which would no doubt give better performance/higher framerates – but doesn’t make sense for a prototype implementation. Better to take advantage of the existing web-based viewer, building a native wrapper around it, for now.
So really we’re stuck with trying out the existing web-based samples with Gear VR. These actually work surprisingly well, although I had to jump through some hoops to get them working.
The initial hoop related to WebGL support. After finding out that the samples didn’t load – and then using USB debugging to determine that WebGL wasn’t being found – I worked out that I could check on the WebGL status of the device by using chrome://gpu and then override the setting by using chrome://flags, as per the below animation (I think it’s only missing a “re-open the browser” step):
The second hoop was more physical: I had to mount the Note 4 in the device without inserting the micro-USB plug. This turned out to be easy enough to do: it seems to be designed for the plug to flap up and allow the phone to be mounted – but remain disconnected – underneath.
One final hack – rather than a hoop, in this case – was to tape across the speaker on the back. With the Nexus the microphone beep is controlled by the system volume, but this isn’t the case with Samsung devices: and – as you will know if you’ve played the above video – the speech recognition sub-system does cause a beep at regular intervals. A physical block seems the only way to address this, right now.
In terms of the overall experience… the visual quality and field of view were excellent: you can also adjust the focal length, which is great for people who wear glasses. The fit is comfortable, and the level of immersion is much higher than with Google Cardboard.
Here’s a photo of my colleague Simon Freihart having fun with the demo:
Ultimately, though, for the use-cases that interest me most – i.e. using the technology for design visualization, rather than for immersive games where you may stay for hours at a time – it may end up being somewhat redundant. The flexibility you get with Google Cardboard – the ability to use pretty much any smartphone – does make it very valuable, and the quality is probably “good enough”.
Which leads me to the next big debate. Is the Gear VR experience good enough to make me want to buy a Note 4 as my next smartphone? I’m a big fan of stock Android, à la Nexus line of smartphones & tablets… I really don’t like the Samsung software layer. Maybe the native experience with the Oculus Mobile SDK will blow me away, when I get to try it, but for now I’m not quite feeling compelled to take the plunge and order a Note 4 as my primary device (I suspect that’ll be the Nexus 6, but we’ll see). If I can persuade someone to buy it for me as a secondary device, that’ll be a-whole-nother story, of course. :-)
Update:
It turns out it’s possible to run Gear VR with an KitKat-fuelled Note 4. I may just have to upgrade (or downgrade?) the firmware for it to work. The Over-The-Air upgrade process certainly doesn’t recognise an update as pending… will post another update if/when I get it working.
Update 2:
Interestingly I have (or rather Philippe has ;-) an unlocked Asia-Pacific Note 4 with the Exynos (rather than Snapdragon) processor. This page allowed me to install an older version of the Oculus runtime that supports this CPU. This should keep me going until a properly compatible firmware is available. Many thanks to HomerS66 for helping figure this all out!