Search Unity

Question Unity VR concept and terminology question

Discussion in 'VR' started by xJulen, Apr 1, 2021.

  1. xJulen

    xJulen

    Joined:
    Jun 14, 2017
    Posts:
    3
    Hello,

    I am working on my Master Thesis and I have started a new VR project using Unity. I am a little bit confused with all concepts about virtual reality.

    First of all, there are several SDK that I can use in a project, such as OpenVR, Oculus SDK, Cardboard SDK or GoogleVR SDK. As far as I understand, those tools help to connect Unity with the hardware (HTC Vive, Oculus Rift, etc), and allow me to run a VR application. I mean, it help to "talk" with our VR system in our VR application. But if OpenVR and Oculus SDK supports Oculus Rift, what is the point of having two SDK? Does the runtime environment affect in the SDK election? I mean, if I use SteamVR as platform, I need to use OpenVR, while if I use Oculus Home, I have to use Oculus SDK.

    An other question. I have read that Unity XR plugin management and XR Interaction Toolkit provides a framework to create an Unity VR project that will work with all VR Headset. I have read too that OpenXR provides a single cross-platform API between applications and compatible devices.
    Is not the same? What is the point of use both things?

    Last question. Oculus Integration package has a lot of interesting prefabs to use in the project, such as OVRPlayerController or OVRHandPrefab. Can I still use it with XR plugin management and XR Interaction Toolkit? Maybe it has not sense to use it with XR Interaction Toolkit...

    Thank you very much in advance,
     
  2. joejo

    joejo

    Unity Technologies

    Joined:
    May 26, 2016
    Posts:
    958
    > But if OpenVR and Oculus SDK supports Oculus Rift, what is the point of having two SDK?

    OpenVR supports running on the SteamVR platform. The SteamVR platform is capable of interfacing with Valve, Oculus and WMR hardware devices. My guess is that if you are targeting just immersive desktop VR then that would give you the broadest reach although probably the least overall API coverage of any particular platform.

    The other platform specific providers will give deeper access to more API surfaces and, with Oculus, more varying hardware platforms (Quest, Quest2, etc.). For Oculus, if you want to ship an app in their store, you have to use the Oculus SDK only.

    > I have read that Unity XR plugin management and XR Interaction Toolkit provides a framework to create an Unity VR project that will work with all VR Headset.

    Yes, they provide higher level abstractions over any specific XR SDK platform provider. This allows you to deal with XR aspects at a higher level without regard to any specific platform you may target.

    > I have read too that OpenXR provides a single cross-platform API between applications and compatible devices.
    Is not the same? What is the point of use both things?

    OpenXR is a common, shared API for platforms to develop runtimes that present a single API to developers. This means that developers can target one low level API and guarantee the ability to run on any conformant OpenXR platform regardless of hardware or device. This is a low level API that smooths out the differences between platforms in the way that the current XR SDK attempts to do with it's concept of providers and subsystem abstractions.

    You can think of it layered like this (hopefully this formats OK. You may want to widen your browser window):
    Code (CSharp):
    1.  
    2.  
    3.                                                               -------------------------------------
    4.                                                               User Application
    5.                                                               -------------------------------------
    6.                                                               XR Interaction Toolkit
    7.                                                               -------------------------------------
    8.                                                               XR Management
    9.                                                               -------------------------------------
    10.                                                               Unity
    11.                                                               -------------------------------------
    12.                                                               Unity XR SDK API
    13. ------------------------------------- -------------------------------------     -----------------------------------   -------------------------------------
    14. Windows XR SDK Provider    OpenVR XR SDK Provider     Oculus XR SDK Provider     Open XR XR SDK Provider
    15. -------------------------------------   -------------------------------------    ------------------------------------- -------------------------------------
    16. ------------------------------------- -------------------------------------      -----------------------------------    -------------------------------------
    17.  Windows Mixed Reality           Steam VR                                   Oculus                                  Any conformant
    18.                                                                                                 (Desktop, Quest)                       OpenXR Runtime
    19. -------------------------------------  -------------------------------------    ------------------------------------- -------------------------------------
    20.  
     
    xJulen likes this.
  3. xJulen

    xJulen

    Joined:
    Jun 14, 2017
    Posts:
    3
    Thank you so much joejo!

    If I have understood correctly, Unity XR SDK contains other SDKs such as Windows XR SDK, Open VR SDK, Open XR SDK, Oculus SDK, etc. And allows me to choose which SDK is most convenient for the hardware I am using. In addition if I have XR Interaction Toolkit, I can work with every single VR headset.

    On the other hand, OpenXR let me run any app for a VR headset in any platform, for example in SteamVR or Oculus runtime.

    Is that correct?

    Thank you again,
     
  4. joejo

    joejo

    Unity Technologies

    Joined:
    May 26, 2016
    Posts:
    958
    > On the other hand, OpenXR let me run any app for a VR headset in any platform, for example in SteamVR or Oculus runtime.

    In time. Not all platforms support OpenXR yet, but I believe most are moving in that direction.
     
    xJulen likes this.
  5. xJulen

    xJulen

    Joined:
    Jun 14, 2017
    Posts:
    3
    Thanks, I appreciate it very much =D