
Ask HN: How to get started with VR? - rayalez
I&#x27;m really excited about VR and Oculus, and I&#x27;m wondering how to get into it.<p>I&#x27;m pretty good with computer graphics and programming, but I&#x27;ve never done anything with VR. Where should I start?
======
sayangel
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/](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!

~~~
bkmn
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.

~~~
moron4hire
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.

------
ndesaulniers
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/](http://mozvr.com/downloads/) [1]
[http://mozvr.github.io/webvr-spec/webvr.html](http://mozvr.github.io/webvr-
spec/webvr.html) [2]
[http://nickdesaulniers.github.io/joshVR/](http://nickdesaulniers.github.io/joshVR/)

~~~
mrspeaker
I made "Internet Explorer": a tool for walking around subreddits
[https://github.com/mrspeaker/InternetExplorer](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!

------
greggman
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).

[https://developers.google.com/cardboard/unity/](https://developers.google.com/cardboard/unity/)

------
brador
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.

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

------
Bjorkbat
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.

~~~
moron4hire
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.

------
moron4hire
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](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/](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](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.

~~~
doublerebel
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).

~~~
moron4hire
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.

------
pavlov
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.)

------
bkmn
I'd recommend the Zeiss VR One
([http://zeissvrone.tumblr.com/](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](https://bitbucket.org/vrone/unity3d)).

~~~
moron4hire
The Zeiss VR One is very overpriced.

------
soylentcola
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](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.

------
Gounemond
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...](https://developer.oculus.com/documentation/intro-
vr/latest/concepts/bp_intro/)

and

[http://static.oculusvr.com/sdk-
downloads/documents/OculusBes...](http://static.oculusvr.com/sdk-
downloads/documents/OculusBestPractices.pdf)

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 :)

------
makuchaku
Build a hello world for Google Cardboard.

------
bambang150
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'.

------
gautamb0
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/](https://vr.chromeexperiments.com/)

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

------
alexisnorman
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.

------
lux
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).

~~~
lux
Links to both:

[http://unity3d.com/](http://unity3d.com/)

[https://www.unrealengine.com/](https://www.unrealengine.com/)

------
jesuslop
You can also look at www.osvr.org

------
rudyjahchan
Try WebVR. I gave a talk here:
[https://www.youtube.com/watch?v=oroAoCuCc74](https://www.youtube.com/watch?v=oroAoCuCc74)

