Can an app switch between bounded and unbounded without starting over?

I want my users to be able to hit a button in a bounded volume app, and have it seamlesly transition to an immersive app (not full VR, but just a fully immersive experience that is still mixed reailty) is this possible?

1 Like

Yes, the visionOS template does this. More info here.

You can either change the volume camera configuration in a scene or a load a new scene with an unbounded volume camera configuration.

There’s a new API coming in the beta version of visionOS that will give you the position of a volume when opening an immersive space (to create a more seamless transition) but we haven’t exposed this yet.


If you change the camera config instead of loading a new scene, do you need to add an XR rig etc… to get access to head position, hand tracking, world mesh, etc…?

Yeah any additional capabilities can also be enabled at runtime, if your app hasn’t asked for permission yet it will pop up permission dialogues when you enable those features / objects.

does this mean that you can have your bounded volume app (which does not support arkit hand with joint tracking) use arkit hand tracking when in unbounded mode?

Yes that’s what the visionOS template does.

this is great - does this also mean you can switch from a bounded volume to a immersive unbounded VR?

also how do you set the camera position when you switch from bounded to unbounded? it seems that it always starts at 000?

is it possible to have the objects in the bounded volume stay in the same place, relative to the user in the unbounded mode?

Not at this time but we’re looking into the work required to enable this. It’s not as straight forward because of how we support VR vs MR.

Do you have it as part of a rig? ie: transform hierarchy? You might be able to move the parent object. I know there have been some issues with this in the past.

Not in visionOS 1.0 but they added this API in visionOS 1.1 beta. We haven’t exposed this yet.

Just using the default XR origin prefab that contains the camera…

Even when setting camera elsewhere the entire volume always appears at 0,0,0 where the camera is. Is this a bug (?)

hmm - do you have a solution for a “seamless” transition from bounded volume to unbounded

No, we haven’t exposed this API yet.