visionOS 27 + iOS 27 + ARKit object tracking = an iPhone places virtual objects on a table and a Vision Pro guides your hands to match real objects to those same placements, eyes closed
Swift
1
5 commits
updated Sep 14, 2026
Object tracking got its first update since it arrived in visionOS 2 – the improvements include:
.referenceobject files when using macOS 27's Create MLThis repo serves as a demo of 1, 2, 4, and 5 above to make an app that lets the Apple Vision Pro serve as my eyes so I can complete a task blind.
The full demo video with sound is here.
The write-up, with the training numbers and lots more details on what I found, is over here.
Here's a clip of the demo:
Comparison of standard vs. high frame rate tracking: I used the 2% blue milk carton and the full fat red milk carton to compare the old standard-rate tracking vs. the new high frame rate tracking. The blue milk carton is a two-year-old reference object from my visionOS 2 demo, loaded at the default rate. The red milk carton is trained with macOS 27's Create ML in extended mode and loaded with high frame rate tracking. Same kind of object, same table, and a semitransparent overlay on each to make the differences more obvious. The blue milk carton is effectively a worst-case scenario (macOS 15 trainer, standard training mode, trained on all angles, standard frame rate tracking) vs. the red milk carton's best-case scenario (macOS 27 trainer, extended training mode, trained on upright angles, high frame rate tracking).
Arranging items placed on iOS solely by listening to audio played on visionOS (i.e. place items blind): the two devices first calibrate by each recognizing the red milk carton. Then someone on an iPhone drags three items from a carousel onto the table. A ghost of each lands on the real table in both devices' view. A second person, wearing the Vision Pro with eyes closed and guided by spatial audio, puts the real items where the ghosts are.
The floating Persona facecam: the Vision Pro wearer's Persona floats in the corner of the recording using my PersonaCam package. PersonaCam is a head-anchored Persona facecam for visionOS, which can be added to projects in two lines of code.
If you reinstall the app on either device, its certificate changes and the other device will refuse it. Tap Forget Paired Device on both, then let them reconnect.
I live in Chicago. The 2024 pair came from a Jewel in June 2024, the other six from a Jewel in August 2026. Your local packaging may vary and prevent recognition.
.referenceobject from the USDZ in macOS 27's Create ML. Standard mode took about four hours per object on an M4 Max with 128 GB of RAM; extended mode about seven times longer..referenceobject into ObjectTrackingUpdates/Reference Objects/ and add the item to DemoItemCatalog in Shared/DemoItem.swift, with its file name, whether it loads at high frame rate, and whether it's a carton or a meal item. Six is the max number of objects that run at high frame rate at once.The networking is based on Apple's Connecting iPadOS and visionOS apps over the local network sample, vendored here as the PeerConnection package with a reconnect loop and an ordered send queue added.
5 commits
Swift
100.0%
visionOS 27 + iOS 27 + ARKit object tracking = an iPhone places virtual objects on a table and a Vision Pro guides your hands to match real objects to those same placements, eyes closed
Swift
1
5 commits
updated Sep 14, 2026
Object tracking got its first update since it arrived in visionOS 2 – the improvements include:
.referenceobject files when using macOS 27's Create MLThis repo serves as a demo of 1, 2, 4, and 5 above to make an app that lets the Apple Vision Pro serve as my eyes so I can complete a task blind.
The full demo video with sound is here.
The write-up, with the training numbers and lots more details on what I found, is over here.
Here's a clip of the demo:
Comparison of standard vs. high frame rate tracking: I used the 2% blue milk carton and the full fat red milk carton to compare the old standard-rate tracking vs. the new high frame rate tracking. The blue milk carton is a two-year-old reference object from my visionOS 2 demo, loaded at the default rate. The red milk carton is trained with macOS 27's Create ML in extended mode and loaded with high frame rate tracking. Same kind of object, same table, and a semitransparent overlay on each to make the differences more obvious. The blue milk carton is effectively a worst-case scenario (macOS 15 trainer, standard training mode, trained on all angles, standard frame rate tracking) vs. the red milk carton's best-case scenario (macOS 27 trainer, extended training mode, trained on upright angles, high frame rate tracking).
Arranging items placed on iOS solely by listening to audio played on visionOS (i.e. place items blind): the two devices first calibrate by each recognizing the red milk carton. Then someone on an iPhone drags three items from a carousel onto the table. A ghost of each lands on the real table in both devices' view. A second person, wearing the Vision Pro with eyes closed and guided by spatial audio, puts the real items where the ghosts are.
The floating Persona facecam: the Vision Pro wearer's Persona floats in the corner of the recording using my PersonaCam package. PersonaCam is a head-anchored Persona facecam for visionOS, which can be added to projects in two lines of code.
If you reinstall the app on either device, its certificate changes and the other device will refuse it. Tap Forget Paired Device on both, then let them reconnect.
I live in Chicago. The 2024 pair came from a Jewel in June 2024, the other six from a Jewel in August 2026. Your local packaging may vary and prevent recognition.
.referenceobject from the USDZ in macOS 27's Create ML. Standard mode took about four hours per object on an M4 Max with 128 GB of RAM; extended mode about seven times longer..referenceobject into ObjectTrackingUpdates/Reference Objects/ and add the item to DemoItemCatalog in Shared/DemoItem.swift, with its file name, whether it loads at high frame rate, and whether it's a carton or a meal item. Six is the max number of objects that run at high frame rate at once.The networking is based on Apple's Connecting iPadOS and visionOS apps over the local network sample, vendored here as the PeerConnection package with a reconnect loop and an ordered send queue added.
5 commits
Swift
100.0%