Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How to get started with VR?
76 points by rayalez on Aug 31, 2015 | hide | past | web | favorite | 29 comments
I'm really excited about VR and Oculus, and I'm wondering how to get into it.

I'm pretty good with computer graphics and programming, but I've never done anything with VR. Where should I start?

As others have stated, there are several options.

Here's a general breakdown:

-hardware- cardboard, Oculus Rift Development Kit (DK2), GearVR (ionly compatible with Galaxy S6 or Note 4), mobile VR viewers (durovis, wearlity, DIY 3D printed headset, etc.)

-software- Unity, Unreal Engine, ThreeJS + WebVR

The most lightweight route is probably getting your hands on a google cardboard and using Unity to get your hands dirty. For basic things you can just use Unity's visual interface. The challenge is really just learning to navigate Unity, not so much understanding graphics. It's mainly C# or UnityScript, which is essentially Unity's javascript mutant child.

For me, one of the best ways to get assimilated with VR was actually using the webVR API (http://webvr.info/). It's a JS based way to interface with the Oculus Rift or Cardboard. Using Three.JS to set up scenes and then using the webVR API to render stereo, get sensor data, etc. was a fast way for me to learn VR development.

Since you've mentioned you're adept with graphics and programming then maybe it's worth exploring Unreal as it's a bit more advanced, but can produce some awesome results.

Happy to answer any other questions!

I agree about WebVR, but the last time I tried developing for it Oculus drivers had changed and the browser plugins weren't working. I'd make sure it works before getting a DK2 with the intention of doing WebVR work.

Make sure you're using no later than Oculus Runtime v0.6 if you want the current versions of WebVR-enabled Firefox and Chromium to work. They're both currently built against Oculus SDK v0.5, and they only support one previous version at a time with the betas.

I don't think there is a link to it directly from the Oculus developer's site. But it is available if you Google it.

I believe the WebVR teams are looking into using OSVR to avoid having this issue in the future.

Make sure whatever hardware you get is compatible with the toolset you choose. Last time I checked there was still no support for webVR on GearVR

There is no official support, but from what I understand, it's possible to get it working.

You should check out WebVR! JS might not be your preferred language, but WebGL is solid! The number of 3D JS/WebGL libraries also make it a bit easier to get started than learning a large but more powerful game engine like Unity or Unreal.

Check out: [0][1][2]

[0] http://mozvr.com/downloads/ [1] http://mozvr.github.io/webvr-spec/webvr.html [2] http://nickdesaulniers.github.io/joshVR/

I made "Internet Explorer": a tool for walking around subreddits https://github.com/mrspeaker/InternetExplorer. I had previous experience with three.js, but still - it was a lot easier than I imagined it would be!

+1 for WebVR. We have a small community going over at http://www.reddit.com/r/webvr. Also, there is the MozVR mailing list, though it isn't as active as the WebVR subreddit.

I'd look into Unity + Google Cardboard. You can be up in just a few mins at nearly zero cost and zero time (well you need a Google Cardboard which is < $20).


Step 1: Don't make this too complicated: Get a DK2 and get Unreal Engine (it s free!). That's the basics you'll need to get started.

Skip the DK2. Get Google Cardboard to hold you over until the Vive or CV1 get released.

I personally use an Oculus DK1 (it was the only thing available at the time) and play around with three.js + WebVR. You'd be surprised the fun you can have with WebGL.

I can't show it off just yet unfortunately, but I made this web player for 360 photos and videos that has a VR mode. It came out better than expected.

Thinking about moving to Unreal next, not necessarily because it can do something that WebGL can't, but because I'm simply interested in that route.

While I'm sure Unity is a fine tool, I've had bad luck with them. I was interested in developing a mobile VR video player for 360 video, unfortunately Unity can't exactly map a video texture onto a 3D sphere, which is pretty much the standard way of making a 360 VR video. You can try taking the individual frames and mapping them onto the sphere as fast as possible, but the frame rate was a poor ~20fps, which I wasn't impressed by. It might be different for video, but last I recalled you should shoot for at least 60fps for VR experiences if you want to avoid the whole motion sickness issue.

I've also played around a bit with Google Cardboard, and I have to admit, it's alright, but at the end of the day it's still a cardboard shell for your phone with special lenses, so if you really want to play around with VR an Oculus DK1 or DK2 isn't that bad.

The Samsung Gear VR is a fine choice too, but only if you already have a Samsung smartphone, otherwise I'd still just recommend you go for the Oculus.

So, those are my thoughts.

There's framerate and then there's framerate (heh).

You want to be able to respond to the user's head movements as fast as possible--16ms max (which is 60FPS), but even at that point some rare people get sick. At 11ms, the number of people who get sick drops so dramatically that Valve claims they haven't met anyone yet who does get sick. But clearly, the lower, the better. Some people are claiming 8ms is "necessary"--I think calling it necessary is ludicrous--but I'm sure it would be an incredible experience.

How often the scene actually updates is besides that. You could animate the video on the sphere at 15fps and it's not going to make the user sick, as long as you can react to their head movements faster than that. That's kind of the point of the TimeWarp feature that the Oculus Rift provides. You render the scene larger than the Rift is capable of displaying, and then the display driver shows different subsets of it based on the latest motion data, regardless of how old the frame actually is. It's not perfect, but it makes up for a lot of sins.

I made a video not too long ago about all the different methods for stereo view that I've played with over the years (https://www.youtube.com/watch?v=5sxhMOOHuqc)

The start for me was building my own cardboard smartphone viewer from lenses I already had in my house. It was fun, wasn't very hard, and didn't take a lot of time. If you want to try this yourself, you the typical lenses to get are spherical, 50mm diameter, 50mm focal length, glass lenses.

Or, just buy Unofficial Cardboard 2.0+ (http://www.unofficialcardboard.com/). They have a number of additional features over the stock Google Cardboard that definitely warrant the price.

I also have a Wearality Sky. They advertise a 150 degree field of view. I've gotten into arguments with their CEO over their exact definition of "150 deg FOV", but it's definitely the best smartphone-based viewer I've ever had. There are some issues with lens flare if you have any bright lights near you, but overall I think they are worth the effort.

Finally, I do have an Oculus Rift DK2, but you should skip it (unless you can get one donated by someone). Stick to the Google Cardboard-like solutions for now, while you're still learning and getting a feel for the design of VR applications. In 6 to 8 months, the HTC Vive and Oculus Rift CV1 will be available. They will be very similar to each other, but completely outclass the DK2.

And then, when you're all setup, check out my project, https://www.primroseeditor.com :D

As for writing code, if you want easy programming, go with WebVR (Three.JS + a WebVR build of Firefox or Chromium). I do suggest getting a physics library of some kind, though. I've been using Cannon.js. It's pretty easy to use, especially alongside Three.JS.

Does the Wearality Sky have any kind of input mechanism like the Google Cardboard magnet? I wish Wearality was taking preorders, I like so many aspects of the product (open-source, wide FOV, low price).

Only the lens holder is "open source". They don't provide design files for the lenses themselves.

Interactions with the company have been very disappointing. They don't pay attention to their own Twitter account or the common VR subreddits (/r/virtualreality or /r/oculus, though they post their own press releases to them, so they certainly know they exist) and they had the spam filter on their own support email line configured poorly. There were about two weeks between when the Sky first started going out and when Wearality started answering questions about what exactly they meant by "150 deg FOV". Their official replies were very derisive towards anyone who had done their own measurements and complained about people not signing up on their private forums to ask questions. Sorry, I personally think private vendor forums are a dead concept. I'm certainly not going to sign up to ask one question in a forum that has 0 posts. They've not updated any of their marketing material to even mention 7" displays, let alone that it's necessary to get the full 150 deg FOV. It's not even entirely clear from just their own information that 5" displays won't show as wide of a view as 6" displays, you're left to either figure that out on your own or hope that the separate set of clips change the focal distance (they do not).

In the end, they define 150 deg FOV as the visual angle between the eye and the rear lens aperture. You lose some view around the edge where the lenses only show the internals of the frame. Also, a 6" screen phone is not large enough to fill the view of the lenses, even though the max size of clips they provide is for 6" phones. My own measurements put the Sky with a 6" phone at about 110-120 deg FOV. That's certainly better than Google Cardboard. Wearality claims you have to use a 7" screen to fill the lenses. I suppose the holder will stretch to fit such a tablet, but it's very much not designed for it, and considering they provide separate holders for 5" and 6" phones, I would expect a 7" tablet to need a clip scaled for it.

Let me reiterate: it's the best smartphone-class viewer I've ever used, even if it doesn't live up to the claims. And I believe one could expect to get very close to 150 deg FOV out of a 7" phone. Of course, that extra inch will be so blurred you won't be able to make out any details, but the extra light is nice for the periphery. You'll have to modify the holder clip 3D models and print them yourself. Wearality does not provide a full package that is capable of 150 deg FOV out of the box.

It's also not so cheap. I Kickstarted at $130 to be able to get the very first shipment of the lenses, spacing frame (there are 4 lenses, two per eye, and they have to be spaced correctly), the 5" and 6" mounting clips, a carrying bag, a hat (with a flat brim to be able to clip on the device so it can be used hands-free), t-shirt, and a patch. They now are offering additional purchases to some backers of the lenses and frames with one set of clips and no mention of hat for $99. I have no idea what the retail price will be, but I'm assuming it's going to be more than $100.

As for your other question, there is no integrated input mechanism. That's not a problem, though. The framing of the Wearality is completely open, so you're encouraged to touch the screen with your finger. That open frame design is great for portability. I recently showed it off to a bunch of friends and family at a party. Had it in my pocket right next to my phone, just pulled it out of the provided bag of holding and clipped it on while I waited for the Tuscany demo to load.

Also, Google Cardboard has gotten away from the magnet. Turns out magnets aren't nice to compasses, who knew? In the 2.0 version, it's now a strip of copper tape that connects the finger to the screen through an origami bumper button.

Finally, most people who use their smartphone viewers frequently end up buying a headstrap of some kind and a bluetooth gamepad or keyboard.

The Samsung Gear VR is worth it if you have already have the phone that it requires (or you need a new phone, in which case the Galaxy S6 is a totally decent choice).

The Gear VR's software ecosystem is an Android port of the Oculus SDK. It's a no-nonsense, rather '90s style C++ affair, mostly written by John Carmack.

I've enjoyed playing around with it, although if you're used to modern cutting-edge PC game engines, you may find it limited or old-fashioned. (Naturally the Android phone isn't a match for a modern PC, but it goes surprisingly far in VR, IMO.)

I'd recommend the Zeiss VR One (http://zeissvrone.tumblr.com/) and start doing development for mobile VR! Works for iPhone 6 and Galaxy S6 by default, or you can print your own tray for a specific smartphone. Zeiss also provides a great Unity "developer starter package" (https://bitbucket.org/vrone/unity3d).

The Zeiss VR One is very overpriced.

If you do any 3D work now (and have a computer capable of that sort of thing), it should be fairly easy to work on projects in Unity and Unreal with something like the Oculus dev kit.

I have next to no proper programming skills but I've done a bit of work in 3d graphics alongside my video work (stuff like Cinema 4D). At first I was focused on trying to build things in Cinema and translate that to VR but I've found it easier to just start learning and experimenting with Unreal Engine. You can immediately view what you've created inside the Rift for testing and learning purposes.

Still, I'm not sure what you're going after. For me it was yet another thing to play around with and learn a little about but while I could cobble together a neat little game or interactive environment, I don't have the skills to do something like this (https://www.youtube.com/watch?v=Ghgbycqb92c) which uses depth cameras to develop live, 3d video and telepresence.

Not sure what tools are available for simpler setups like Cardboard but I believe there is at least some level of support in Unity and Unreal.

If you're good with computer graphics and programming, you're halfway done for doing your first demos / experiments :)

If you have an OculusRift, I think that's probably the easier start. Not because "mobile" is harder, but because you can focus more on doing stuff instead of optimizing / cutting stuff because mobile devies still do not have so much computational power.

Unity3D / Unreal engine are really easy to set up for VR. So easy to set-up that most people lose sight of VR.

I HIGHLY suggest you to give a read here https://developer.oculus.com/documentation/intro-vr/latest/c...



You may think this is simple, everyone do it but... no. There are so many useful hints about how to reduce sickness and produce a better product, and so easy to find, that is mandatory to know.

This will get you started pretty well :)

Build a hello world for Google Cardboard.

You'll want to learn about traditional video game development. Programming wise it isn't much of a jump, it's a matter of rendering everything twice with slightly different positions each time. Which would involve using two different View matrices. Each render is then shown to its respective eye. This gives us depth perception the same way it works in real life, which combined with head tracking (using gyroscopes in the HMD), tricks our mind into accepting the images as 'reality'.

I would highly recommend Cardboard. I haven't used WebVR, and I'm not certain how good its Cardboard support is. I'd suggest just starting with Three.js as it is, and then use StereoEffect to get the pseudo-stereoscopic view for Cardboard. There's sample code here, and it works on Chrome, Safari and even Edge. https://vr.chromeexperiments.com/

Unity with the Cardboard SDK is very easy to dive into as well.

I've developed a couple games for the Rift (both DK1 & DK2) and I highly recommend starting with Unity. It's kind of ridiculous how fast you can get off the ground with your own FPS game using the Oculus SDK plugin. There's a lot of great video tutorials out there that can really speed up learning everything too. Note!: If you're developing on OSX, heads up as Oculus has stopped releasing new versions for it so you can only grab previous SDKs at the moment.

I would recommend downloading Unity or Unreal as a starting point. They both give you an entire framework to develop on top of, and their VR support is getting better with each release.

We use Unity because it's way more popular with the local dev community here, but I actually prefer Unreal's licensing terms, as well as their documentation (I'm not a video person, and Unity relies on video tutorials a bit much).

You can also look at www.osvr.org

Try WebVR. I gave a talk here: https://www.youtube.com/watch?v=oroAoCuCc74

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact