Search Unity

Pros & cons with different APIs in 2020? (VRTK, Oculus SDK, SteamVR, OpenVR etc.)

Discussion in 'VR' started by Avalin, Jan 15, 2020.

  1. Avalin

    Avalin

    Joined:
    Oct 12, 2018
    Posts:
    98
    Hi!

    I've been out of the VR scene for a little more than a year, and back then I was also just learning the ropes of Unity. Now I have a bit more confidence, but I'd love to know what you would suggest I could look into?

    I'd love to fiddle with the Oculus Quest primarily, and especially the builtin Magic Leap functionality I heard is included. If I get confident with that, it would be wonderful if I could expand the functionalities to also work with Rift, Vive etc. down the line. With this in mind, would you suggest that I use any of the above SDKs for this project, or something entirely different maybe? Any specific version of Unity I should use as well?

    If you who reads this have any experience, advice, suggestions, you're willing to share, I'd love to hear it! Thank you ^^
     
    Last edited: Jan 15, 2020
  2. jashan

    jashan

    Joined:
    Mar 9, 2007
    Posts:
    3,307
    Personally, I find SteamVR Unity Plugin 2.5.0 / SteamVR Input 2.0 / the SteamVR Interaction system by far the most interesting system. That one doesn't work natively on the Quest but you can still use it with the Quest when using Link to connect the Quest to the PC. It does support all PC VR systems and has a lot of really smart solutions to issues you run into when developing for VR.

    Like, for example, there's different controllers with different shapes and different button layouts. The way OpenVR / SteamVR solves this is by having driver level controller models that are automatically loaded into the runtime. With this, when a new controller hardware becomes available, as a developer, you don't have to worry about it - it will just work. Having the actual controller model visible in VR does help with immersion because you see with your eyes what you feel in your hands. SteamVR even lets you add skinned controller models (that will then automatically show up in the game, without you, as a developer even having to worry about adding this feature).

    With SteamVR Input 2.0 (included in the SteamVR Unity Plugin), you can map actions to buttons, and again, this can easily by customized by players or 3rd parties. So, when a new unknown controllers arrives, while it may not work immediately, it's not too hard to make it work (and no need to do it as developer - players can do it).

    This also has skeletal input for hand gestures (like what the Touch controllers can do), or finger-tracking (what the Valve Index controllers fka Knuckles controllers can do). In principle, this should also work with Leap Motion but I haven't checked if there's a driver. At some point, this *should* also work with Oculus Quest hand tracking - if Oculus properly supports this with Link (and a proper driver is available).

    The SteamVR Unity Plugin also comes with a really decent interaction system that even has a working example of bow and arrow (to show a comparatively complex kind of interaction). In my opinion, this is the best interaction system currently available for VR (just had a quick look at Unity's XR Interaction System, and while this does have some nice things, it can't quite compete).

    A lot of people love VRTK but personally, I never really got into their approach.

    Oculus Utilities also does have some nice examples but in general, the code quality of what Oculus delivers varies greatly (I ran into quite a few things I found pretty, well, "not-so-smart", to put it diplomatically).

    I'm doing fine with Unity 2019.2 and will probably update to 2019.3 soon ... Unity 2020 currently is a big mess when it comes to VR because they're now doing everything differently (like in so many other Unity systems), and they don't even have OpenVR/SteamVR support in there at all (which makes me wonder who is setting the priorities at Unity Technologies).
     
  3. ROBYER1

    ROBYER1

    Joined:
    Oct 9, 2015
    Posts:
    1,454