Anchoring Objects to Surfaces in the Shared Space

Hi there!

I am working on an app that is designed to be a 3D “widget” that could sit on someone’s desk or shelf and continue to sit there even when a user isn’t actively interacting with it, as if it was a real object on a shelf.

Is there any way to place objects on surfaces for apps running in the Shared Space? From what I understand the position of a volume is determined by the user, and cannot be changed programatically. I understand Full Space apps have access to anchors and plane detection data, but I don’t want people to have to close everything else to use my app.

A few questions:

  • In the simulator, it seems that when I drag the volume around to try to place it on a surface, geometry inside of a RealityView can clip through “real” objects. Is this the expected behavior on a real device too?
  • If so, could using ARKit in a Full Space to position the volume, then switching back to a Shared Space, be an option?
  • Also, if the app is closed, and reopened, will the volume maintain its position relative to the user’s real-world environment?

Thanks!

I stumbled upon the same limitations. I decided I'll just make two versions of my app, leave the choice up to the user:

  1. have them choose a volume, and they'll need to put it somewhere but can multi-task
  2. have them choose a full space, and my app will auto anchor to their table, but they cannot multi-task anymore

I don't think there's much more we can do with these current limitations. Maybe next year things will be improved and limitations might get lifted.

In the simulator, it seems that when I drag the volume around to try to place it on a surface, geometry inside of a RealityView can clip through “real” objects. Is this the expected behavior on a real device too?

as far as my understanding goes, I think yes, this is the expected behaviour

If so, could using ARKit in a Full Space to position the volume, then switching back to a Shared Space, be an option?

as far as my understanding goes, I think no, because I don't think we can anchor volumetric windows. that's the main limitation. So you'd have to work with just plain entities that you anchor, but then switching back to a volume will make it so those entities disappear.

Also, if the app is closed, and reopened, will the volume maintain its position relative to the user’s real-world environment?

I think the volume will stay where the user put it yes, but this is at apple's regression on how they choose to implement the behaviour of volumes in the shared space. it might change at any time and developers won't be able to have a say in it. Think of it as, we don't know where on a macbook screen and what size a window is exactly located at. Same for a volumetric window.

Anchoring Objects to Surfaces in the Shared Space
 
 
Q