cancel
Showing results for 
Search instead for 
Did you mean: 

Spatial Anchor Sharing using router without internet

jatalCXR
Explorer

Hello,

I am currently working on a MR app using Unreal Engine 5.3.2 and we have successfully implemented spatial anchor sharing within our app for local multiplayer on an internet connection. However, for security reasons, we need our app to work without internet connection. But after many tests, we have realized that the spatial anchor sharing does not work on a router that is not connected to the internet. Spatial anchor sharing most probably uses Oculus cloud services to save the spatial anchors to be shared on the cloud. 

Using routers without internet is a crucial aspect of our app. Each headset connects to the router and within the app, we are still able to create and join multiplayer sessions using LAN. The fact that the spatial anchor sharing does not work in these conditions is a huge blocker for us. 

Do I have that right? Is there a way to bypass this requirement? If not, what can be done?

Thank you in advance for the help!

6 REPLIES 6

jtriveri
Adventurer

You’re correct - shared spatial anchors rely on meta’s online services 😞

You’ll either have to make a manual alignment system or build your own automatic alignment system using the Scene Room Mesh or Depth API (though that would be a complex task). 

I see. Thank you! Would scanning a QR code work too? The QR code can represent the common world origin for all players.

jtriveri
Adventurer

You would need to get the camera feed from the app which isn’t possible without a janky workaround. Meta doesn’t give you access to the RGB camera feed in your app, only depth, and they don’t provide any API for reading QR codes 😞

it may be possible to run a tool like scrcpy or use the video feed from the built-in streaming feature, but, like I said, this would be a pretty janky workaround. 

jatalCXR
Explorer

You're right. I'm thinking I could potentially ask each player within the multiplayer session to manually position an anchor all at the same agreed physical spot (for example a corner of a wall) so they all share the same anchor that could be used as an origin anchor. That way we can align the worlds correctly. Does that make sense?

I think the easiest setup is have them position the same two points on the floor because

  • the floor is usually in the same Y pos in real space for all the headsets and its easy to point to
  • the point A can serve to anchor the position
  • the second point can serve to anchor the rotation with a vector from point A to point B

Point A and B should be several meters apart to best calibrate rotation. This setup has worked for me before shared anchors were a thing 🙂

I also would love this feature, since this kills every colocation app that just could be used locally. And from a technical standpoint, this would be possible.