-
Explore as melhorias no rastreamento de objetos do visionOS
Descubra como o visionOS está aprimorando o rastreamento de objetos e a entrada de acessórios espaciais. Conheça novas formas de rastrear objetos móveis e portáteis, possibilitando a integração entre os mundos físico e digital. Confira as novas classes de acessórios espaciais compatíveis e o que é necessário para criar seus próprios acessórios personalizados a fim de viabilizar modelos de interação únicos em seus apps.
Capítulos
- 0:00 - Introduction
- 2:20 - Object tracking
- 7:20 - Spatial accessories
- 7:47 - Creating a spatial accessory
- 11:48 - Plug-and-play accessories
- 12:22 - Implementing in your app
- 13:03 - Next steps
Recursos
- Working with generic spatial accessories
- Preparing spatial accessories for tracking in your visionOS app
- Accessory design guideline for Apple devices
- Exploring object tracking with ARKit
Vídeos relacionados
WWDC25
WWDC24
-
Buscar neste vídeo...
-
-
3:50 - Enable high frame rate tracking
// Enable high frame rate tracking // Create reference object configuration var configuration = ReferenceObject.Configuration() configuration.highFrameRateTrackingEnabled = true // Load the reference object with ARKit API let refObjURL = Bundle.main.url(forResource: "flashlight", withExtension: ".referenceobject") let refObject = try? await ReferenceObject(from: refObjURL!, configuration: configuration) -
4:50 - Extended training mode via command-line
// Extended training mode on Mac using command-line interface % xrun createml objecttracker --source flashlight.usdz --output flashlight.referenceobject --training-mode extended --all-angles -
5:25 - Object pose coordinate spaces
// Different object pose spaces // Obtain anchor transform with display corrections let renderingPose = myObjectAnchor.coordinateSpace(correction: .rendered) // Obtain anchor transform in metric space let metricPose = myObjectAnchor.coordinateSpace(correction: .none) -
6:22 - Implement object tracking in iOS
// Implement object tracking in iOS import ARKit import RealityKit class ObjectTrackingARSessionDelegate: NSObject, ARSessionDelegate { let arView = ARView(frame: .zero) var entities: [UUID: AnchorEntity] = [:] func start() throws { let stationaryObject = try ARReferenceObject(archiveURL: Bundle.main.url(forResource: "stationary", withExtension: "referenceobject")!) let movingObject = try ARReferenceObject(archiveURL: Bundle.main.url(forResource: "moving", withExtension: "referenceobject")!) let configuration = ARWorldTrackingConfiguration() configuration.detectionObjects = [stationaryObject] // Low frame rate configuration.trackingObjects = [movingObject] // High frame rate arView.session.delegate = self arView.session.run(configuration) } func session(_ session: ARSession, didAdd anchors: [ARAnchor]) { for case let anchor as ARObjectAnchor in anchors { let entity = AnchorEntity(anchor: anchor) entities[anchor.identifier] = entity arView.scene.addAnchor(entity) } } func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) { for case let anchor as ARObjectAnchor in anchors { entities[anchor.identifier]?.isEnabled = anchor.isTracked } } func session(_ session: ARSession, didRemove anchors: [ARAnchor]) { for case let anchor as ARObjectAnchor in anchors { if let entity = entities.removeValue(forKey: anchor.identifier) { arView.scene.removeAnchor(entity) } } } } -
12:26 - Discover and connect a spatial accessory
import ARKit import GameController // Generic accessory discovery if let device = GCSpatialAccessory.spatialAccessories.first { // Resolves the .referenceaccessory bundle automatically let accessory = try await Accessory(device: device) let provider = AccessoryTrackingProvider(accessories: [accessory]) try await arkitSession.run([provider]) } // Update tracked accessories without restarting the session try await provider.updateAccessories([newAccessory])
-
-
- 0:00 - Introduction
Overview of the new visionOS object tracking enhancements, including high-frame-rate tracking of handheld objects and the expansion of spatial accessories to third-party developers.
- 2:20 - Object tracking
A recap of the object tracking API introduced in visionOS 2.0 and what's new in visionOS 27: tracking objects in motion, training extended models in Create ML, metric-space poses, and iOS support.
- 7:20 - Spatial accessories
Introduction to spatial accessories — electronic devices with an LED constellation, IMU, and Bluetooth that Vision Pro tracks in real time. Covers the first generation of accessories and the expansion to custom third-party hardware in visionOS 27.
- 7:47 - Creating a spatial accessory
Design considerations, hardware requirements, and the validation workflow for building your own spatial accessory, including how to use the debug tool in Simulator and generate a reference accessory bundle.
- 11:48 - Plug-and-play accessories
Off-the-shelf reference hardware from manufacturers like DFRobot and MikroE that can be used immediately for testing or integrated into your visionOS app without custom hardware development.
- 12:22 - Implementing in your app
How to discover and connect a spatial accessory using the GCSpatialAccessory class and AccessoryTrackingProvider APIs, including how to hot-swap accessories without interrupting your ARKit session.
- 13:03 - Next steps
Key takeaways on choosing the right tracking approach, and links to related sessions including Explore object tracking for visionOS and Explore spatial accessory input on visionOS.