XR (UnityEngine.XR) vs SteamVR (Valve.VR)

Hi All,

I am currently using HTC Vive, but will be developing/publishing to Oculus rift also(just haven’t gotten around to it). From everything I have read I should be OK using the SteamVR for both Oculus and HTC.

So far I have been using SteamVR plugin (SteamBehaviour). I understand that SteamVR is simply extending openVR, but I am wondering what are the advantages/disadvantages of only using XR that is shipped with unity? In another way to put it, are there any advantages/disadvantages to NOT using SteamVR plugin and everything that ships with it?

I am talking about the whole life of the project, not just getting something working in the editor. I mean from starting to finally publishing on Steam and/or Oculus store.

I would really appreciate any input on this, hopefully from someone who has done using both UnityEngine.XR and Valve.VR.

Thanks!

1 Like

While SteamVR supports both the Vive and the Rift, do note that if you use the SteamVR API the game will naturally be locked to that platform and you will not be able to release in any other game store without a rework. In short you wont be able to sell at Oculus Store, or do a release for PSVR or Oculus Quests as few examples.

Unity XR is still pretty limited in some parts so you cant rely on it either.

1 Like

To that end, please take a look at our BridgeXR product on the asset store, it’s an in-editor SDK manager that lets you create apps that can target alternative toolkits. Facilitates using the native components (SteamVR, OVR or other) and switch between them. BridgeXR for Unity — Parkerhill XR Studio

Cheers, Jon

Thanks for the reply. So, do you recommend, is there even an ideal solution this?

Thanks, it looks interesting. I will take a look. With this, will I be able to publish to, for example, Oculus and Steam without having to redo VR related systems of the game to fit each store needs? Also, does BridgeXR, use open vr?

I’m looking to develop for both VR and non-VR. I’m looking to be cross-platform, specifically Win/Mac/Linux. I develop both on Win and on Mac. I don’t expect VR to work on a Mac, but I expect a non-VR experience to. On Windows, I expect the ability to be in either VR or non-VR.

I am prevented from using SteamVR as it can’t even be in the project when compiling for the Mac, even if the asset has only been imported. I’ve the same difficulty with the Oculus Integration package.

However, with Unity’s XR, I’m able to actually build a project and run it on the Mac in non-VR mode. I’m only just starting down this path, and I expect there are a ton of traps and pitfalls. But it’s encouraging.

Also what about VRTK and MRTK (which aims to support other headsets in its Next version?)

Could somebody provide a high level overview of all these SDKs with some information on what platforms you can release on if you use them, and which are alternatives or extensions of others?

Right now it sounds like there is no perfect abstraction layer so the best thing to do may be custom versions or at least a lot of platform specific conditionals. But it’s difficult to plan ahead for this without having a better overview of all the options.

VRTK 3.x, downloaded directly from Github (not from the Asset Store) is 100% usable today. We are using it in new VR projects and works well on the HTC Vive, Oculus Rift (both with SteamVR and the Oculus Store), Windows MR and Oculus Go / GearVR.

Next year we’ll hopefully have VRTK 4.x and MRTK, two projects I’m very excited about. If you need something today I’d recommend VRTK to easily setup different platforms and switch them on / off on one spot.

Have a look as well as Unity native support for hand-tracked controllers with the “new” TrackedPoseDriver component.

Well, I started using Steam. I like how steam takes care of all the grunt work, especially detecting and keeping track of devices, but at the same time I am forced to work in confines of whatever SteamVR throws at me, e.g. future updates that may or may not support current implementations.

It seems like there is no once size fit all solution here. I will be doing my self to keep all that has to do with VR separate from the rest of the project. By keeping VR and related systems as a separate package, when the time comes, all I have to do is just deal with the VR stuff.

I told myself “I will cross that bridge(publishing to Oculus store) when I get there”, but I know will run into problems and regret this.I will keep you posted! :smile:

I have been working with this for a while now. I have gone back and forth between SteamVR and native XR (I spent a lot of time trying to get this to work the way I wanted). Headset is not really the problem, but the inputs from controllers. I have concluded that as of this day SteamVR plugin is far superior anything else I have tried. It just works (not to mention constant updating by Steam).

I created an interface/intermediary between my game and steam VR. I guess I can call it an InputManager, which also handles keyboard commands etc… This greatly made things easier to manage.

So… hi.

I came across this post as I’m stuck too.

Last year I started using steamVR. It was easy, quick, and did everything I wanted. Hand poses were great and easy to setup…BUT I had no idea where which platform I expected people to use it on.

Granted, it’s a pretty simple game … which would work well on a quest or probably even a phone as it’s pretty low poly and has 1 material for the whole game… but what about all the other platforms.

I started with Oculus Integration and it was also great, just deep and big.

I’m back at Unity XR now, but after today I can see it’s still a tad trickier to get some good custimzation compared to Steam.

Does anyone have any advice about how to make the decisions? Is there one?

Its.clear Unity XR is not the one size fits all I thought it was.

Hi, as of today (I am speaking for myself of course, and others may have different requirements and opinions) its a very easy decision for me, I’d use XR Plugin Management +OpenXR plugin (and it just came out of preview!) +new input system. I will not be using anything but those regardless of what I do.

After being frustrated by this for the last few years these together work like how they supposed to, like a well oiled machine with all parts in-sync with each other. They just work, no if or buts, at least in my experience, it has been nothing but a pleasant experience.

Actually it is! But the beauty of this is its not bloated like other systems. You can activate only the features you need.

One thing I should warn you though is I am not sure about Oculus quest (I only work with PC VR). You might want to check and see if it is fully compatible, although I think it is. Also, you will have to use Unity 2020 (which I think is going on LTS very soon so that is also a good thing), so if you use 3rd party assets make sure they support 2020 and the latest URP/HDRP packages.

Also, if you are new to to this stuff, there will be a slight learning curve but it is well worth the investment. I recommend spending few days getting to know each of those systems (New Input, OpenXR plugin, and XR Management). Good news is, since they have been around for a little while now, there are plenty of tutorials on those now. Check out Andy VR (I think), he’s got some very good, easy to follow videos on these subjects.

Good luck!

1 Like

first you say openXR(the new XR api that only does very basic stuff) plugin…

then you say openVR (the steamVR thingy right?)

These two alway get confused, which one did you mean?

You are right, I meant to say OpenXR Plugin. I edited the original.

OpenXR is actually the standard (everyone is agreeing upon, https://www.khronos.org/openxr/) and the OpenXR plugin (uses the OpenXR standard) is what you would use (and I was referring to).
https://docs.unity3d.com/Packages/com.unity.xr.openxr@0.1/manual/index.html

I am not sure what you mean by “only does very basic stuff”. It handles all the low level VR related stuff. Essentially everything you need is there. Far from basic. If you mean other things like interactions, locomotion stuff, then you might want to take a look at the XR tool kit.

P.s. Personally, I created my own systems for these stuff because it’s simpler and I don’t want the bloat. However, if you are new to this stuff, you may want to start out with the tool kit.
https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@0.9/manual/index.html

1 Like

Does the UnityXR/OpenXR combo currently work with the Vive Trackers?

With basic I meant low-level, i am not english native so forgive me pls.

I am new to VR dev and I started with Open XR plugin and XR Interaction Toolkit, but all of a sudden my controllers wouldnt move anymore. I really tryied to fix it for a long time, but gave up wrote this post:

https://answers.unity.com/questions/1824140/xr-interaction-toolkit-controllers-not-getting-tra.html

Since then i use the steamVR plugin.

I started out with SteamVR too. Be careful though, as the might depreciate it. Take a look at this guy’s tutorials. I think there are a few on XR tool kit. https://www.youtube.com/c/VRwithAndrew/videos

I would try on a new test project first, just the toolkit and vr stuff. It will be easier to troubleshoot.

No worries, your English is just fine :slight_smile:

Yep. I startd on SteamVR too, but now Unity’s XR Integration kit is maturing, I am gravitating towards that. There is only one real great bones on Steam VR and that seems to be the HandPose kit, its brilliantly done.

1 Like

Hi guys,
so do you HAVE to use the SteamVR plugin if you want to publish on their platform?
Also does the SteamVR kit for unity already come basic stuff like walking/teleporting, interacting with stuff etc.?