Whats the difference between Unity Open XR and Meta Open XR, can I use both?

Hello,

This is probably a lame question. When I go through most tutorials, I end up at the Package Manager installing an XR Pluggin Management. I am guessing this is the Unity Open XR.

I am looking for some functionality that Meta Open XR supports. In particular, I was told this:

Meta’s OpenXR runtime does support projecting passthrough onto a given mesh. You can also manipulate color via compositor layers. More information here: The OpenXR™ Specification

Our Unity OpenXR: Meta package does not integrate these features though. We basically just implement a toggle to turn passthrough on or off. If you’d like to see these deeper integrations in Unity, please leave a note on our road map: https://unity.com/roadmap/unity-platform/xr.

I believe this means that I can’t support passthrough mesh projection with Unity’s Open XR?. Is there a way to have both implementations of Open XR at the same time so that I can support mesh projection?

What does Unity OpenXR support that Meta doesn’t? Like can it run on more devices, while meta only runs on quest?

Thanks!!!

Let’s begin with a definition of terms.

XR Plug-in Management: This package facilitates the Unity XR lifecycle and allows you to enable XR support for various platforms such as Android, iOS, and the Universal Windows Platform. Its code has nothing to do with OpenXR.

OpenXR Plug-in: This package “plugs in” to XR Plug-in Management, and enables your Unity app to run on OpenXR runtimes. When this package is installed, you see an OpenXR checkbox in XR Plug-in Management.

Unity OpenXR: Meta: This package depends on both the OpenXR Plug-in and AR Foundation. It builds on the base functionality of the OpenXR Plug-in, allowing you to build AR Foundation apps for the Meta Quest OpenXR runtime. It defines AR Foundation subsystem implementations for various AR features as explained in its documentation.

With this cleared up, we can answer your questions.

Exactly. Unity OpenXR: Meta is one of many implementations of AR Foundation. When you build an app with AR Foundation, you enable yourself to deploy to ARCore, ARKit, visionOS, Meta Quest, HoloLens, and other platforms as explained in the AR Foundation manual.

For this reason, our first priorities with this package have been to enable support for features that are also available on other platforms, allowing AR Foundation users to port their apps to various different platforms.

Unity OpenXR: Meta does not integrate passthrough mesh projection, but Meta’s OpenXR runtime (C++ code that you don’t have access to in Unity) is capable of this feature.

To access passthrough mesh projection in Unity today, you would need to use some other plug-in entirely, potentially replacing both Unity OpenXR: Meta and the OpenXR Plug-in in your project. There may be a solution for this in the Meta Quest Developer Hub, which is where you should start for advanced Meta-specific features.

It may be possible to mix and match Meta Quest Developer Hub solutions along with our Unity OpenXR: Meta package. I don’t know, and we don’t test this, so I can’t advise you. But it may be possible. Otherwise your options are to use a Meta Quest-specific solution such as Meta Quest Developer Hub, or make a feature request that we support passthrough mesh projection in the Unity OpenXR: Meta package.

5 Likes

Could you explain how any of this relates (or doesn’t relate) to “meta xr all-in-one sdk” ?

[Just as an aside, people at Unity and Meta might want to take note that currently coming to XR development in Unity from the outside right now is monumentally confusing.

The number of different approaches / sdks / versions of sdks / versions of unity / plugins / versions of plugins / misinformation / information overload / toolkits / samples / samples that don’t work / sdks that are buggy / incomplete documentation / out of date documentation / documentation that turns out to apply to something other than the thing you have been trying to get to work / samples that turn out to be for something similar but different / samples that relate to older versions that are now deprecated / samples that relate to different approaches than the one you have been taking / components that depend on other components to work without any easy way of finding out these recipes / etc. etc.

Far as I can tell, there is simply no single place I can go to get the answers that I need. I just have to somehow unpick the last five to ten years of continuously evolving and overlapping approaches and versions and frameworks and sdks and plugins and samples and documentation, and somehow understand ALL OF IT before I am able to make any kind of sensible choices about how to proceed.]

9 Likes

If you want to do it the unity way, unity learn has a solid way to get you started using cross platform tools :slight_smile:
All on one site

Meta SDK is, well, an sdk specifically for meta devices. If you use it, it might not always work on other headsets. See these as meta specific features/code/workflows. If you only target meta, this is fine. If not, there might be issues.

The meta/oculus xr plugin is a plugin that allows you to run unity projects on meta headsets. This can be abstracted by XR interaction toolkit or other systems (they can just use the new input system to manage all input from different hardware) to actually make the features

1 Like

Meta’s All-in-One SDK is a Meta product. It’s built by Meta, and only runs on Meta Quest devices.

AR Foundation, the OpenXR Plug-in, and XR Plug-in Management are all Unity products that work across many different devices including Meta Quest.

Nor should there be! :slight_smile: XR is a rapidly evolving space with many different groups of engineers independently working on new ideas. If you are looking for a Quick Start Guide for Unity XR, I recommend the Mixed Reality Template available in Unity Hub: Mixed Reality Template Quick Start Guide | Mixed Reality | 1.0.1.

2 Likes

How does the Oculus XR Plugin fit into all of this? Is it a legacy plugin that we should probably ignore in favor of the OpenXR: Meta plugin?

While true, I also think this is a bit dismissive of how confusing the situation is with documentation. It would be nice if the quick start guide provided some of the additional context that’s been discussed here.

2 Likes

Yes. It’s fine for people who have been following along with that evolution, but if you come into this fresh from the outside and without all that context it is a confusing mess… allbeit that it can be entertaining trying to unscramble it all. Some people enjoy untangling knots!

The Oculus XR Plug-in is indeed a legacy plug-in. We are working toward feature parity in the Unity OpenXR: Meta package, at which point we will advise everyone to move to OpenXR / Unity OpenXR: Meta.

It would be nice if the quick start guide provided some of the additional context that’s been discussed here.

The quick start guide of which product? Any such guide that includes information about both Meta’s All-in-One SDK and Unity’s AR Foundation products would need to be maintained by a third party. Meta does not share their entire road map for the All-in-One SDK with us, and any attempts by Unity to maintain a quick start guide with links to Meta’s products would quickly go out of date.

I recognize that getting started as a Meta Quest developer in 2024 requires more homework than it should given all the competing SDK’s out there, but at Unity all we can do is make Unity products easier to navigate. Our investments are in OpenXR and Unity OpenXR: Meta moving forward, but the All-in-One SDK may be a better choice for you depending on the release date of your app, the features you wish to use, and any other platforms you wish to target.

1 Like

The Mixed Reality Template Quick Start Guide.

I wasn’t suggesting this guide should include detailed instructions for using the Meta All-in-One SDK. I was suggesting it provide the same high-level context included here in this thread for how the various options relate. Without context, a user can easily see this section in the guide:

click the link, and go down route of using the Oculus All-in-One-SDK setup guide, without understanding how it relates to the OpenXR / Unity OpenXR.

The guide could instead say something like:

Similar info would be useful on the Unity OpenXR: Meta and Oculus XR Plugin package pages.

4 Likes

That certainly makes a lot of sense to me.

To be fair, the whole area of AR/VR is constantly changing and shifting as new technologies come to devices. Unity could stick to 5 year old techniques and make the whole experience much smoother and more consistent, but typically people really want to implement the latest and greates. Thus, the extremely confusing scenario that you describe. I’ve been using Unity for 10 years for AR/VR work and I still get confused each time I start a new project.

1 Like

That’s reassuring ! :slight_smile:

1 Like

Thanks for this feedback @trent_213. I’ll pass this along to the Mixed Reality Template team and see what they think. I agree that a note to this effect could be helpful.

1 Like

Hello @trent_213, I stumbled upon this thread and just wanted to provide a little more context on the status of OculusXR since the term “legacy” can carry different interpretations.

Specifically, for the upcoming releases of Unity, we expect OculusXR Plugin package to continue to be a supported package alongside the Meta OpenXR package. In the medium term however, we plan to build feature parity on the Meta OpenXR package as we work towards consolidating the developer experience and reduce the difficulty involved in working across multiple packages with overlapping functionalities.

That said, do keep the feedback coming in, so we can know to invest in consolidation efforts such as these. Hope that provides more clarity!

4 Likes

It certainly is helpful information to know about these intentions and directions of travel.