After updating to visionOS 27.0, WorldTrackingProvider.allAnchors returns WorldAnchor.originFromAnchorTransform values that do not match what anchorUpdates delivers for the same anchor, read at the same moment, both isTracked == true, with no .updated event in between.
The difference is a rigid frame change, not drift:
Same vertical offset on every anchor: -1.173 m. Identical across two apps and two days with the head at 1.13 m and 1.22 m, so a constant, not head height.
Horizontal deltas vary per anchor, but inter-anchor distances are preserved, so it is a yaw plus translation.
Stable over time, same across launches.
anchorUpdates matches the ImmersiveSpace frame RealityKit draws in. allAnchors does not. On visionOS 26 both agreed.
Same anchor, same instant:
allAnchors (0.1486, -0.7143, 0.2231)
anchorUpdates (0.1316, 0.4590, -1.0955)
device pose (0.0073, 1.2195, -0.0038)
Four other anchors, delta = allAnchors - anchorUpdates:
( 2.6933, -1.1733, -0.2514)
(-0.0810, -1.1733, 1.1339)
( 0.1878, -1.1733, 0.9891)
( 2.6289, -1.1733, -0.1809)
In our app this showed up as a placed model vanishing after a scene switch: we re-pinned the model root from allAnchors, and it landed below the floor behind the user.
A standalone sample (one provider, one anchor, a green sphere from anchorUpdates, a red sphere from allAnchors) shows two spheres on visionOS 27.0, the red one below the floor:
added F21942C4-… at (-0.031, 0.712, -0.976)
update added F21942C4-… tracked=true at (-0.031, 0.712, -0.976)
MISMATCH delta (-0.211, -1.173, 1.444) m allAnchors (-0.243, -0.461, 0.468) anchorUpdates (-0.031, 0.712, -0.976) tracked=true device (0.000, 1.129, -0.001)
Questions:
Is allAnchors now intentionally expressed in a different frame on visionOS 27, for example related to the new ARKitCoordinateSpaceProviding / coordinateSpace(correction:) API? The documentation for allAnchors does not mention it.
If so, which frame is it, and how should it be converted to the ImmersiveSpace frame?
Workaround we use:
read transforms only from anchorUpdates into a per-id cache and never position from allAnchors.
Filed as FB24799304. Minimal repro project attached to the feedback.
0
0
22