-
Explorer les entrées d’accessoires spatiaux sur visionOS
Découvrez comment intégrer des accessoires spatiaux dans votre app. Affichez du contenu virtuel, interagissez avec votre app, suivez-le dans l'espace et collectez des informations sur les interactions pour offrir des expériences virtuelles enrichies sous visionOS.
Chapitres
- 0:00 - Démarrer
- 2:41 - Développer une app de sculpture
- 13:37 - Suivez les accessoires avec ARKit
- 14:45 - Considérations relatives à la conception
Ressources
Vidéos connexes
WWDC25
WWDC24
- Build a spatial drawing app with RealityKit
- Create enhanced spatial computing experiences with ARKit
WWDC21
WWDC20
-
Rechercher dans cette vidéo…
-
-
0:09 - Get in-app transforms
// Get in-app transforms let session = SpatialTrackingSession() let configuration = SpatialTrackingSession.Configuration(tracking: [.accessory]) await session.run(configuration) -
4:57 - Check for accessory support
// Check spatial accessory support NotificationCenter.default.addObserver(forName: NSNotification.Name.GCControllerDidConnect, object: nil, queue: nil) { notification in if let controller = notification.object as? GCController, controller.productCategory == GCProductCategorySpatialController { } } -
7:20 - Anchor virtual content to an accessory
// Anchor virtual content to an accessory func setupSpatialAccessory(device: GCDevice) async throws { let source = try await AnchoringComponent.AccessoryAnchoringSource(device: device) guard let location = source.locationName(named: "aim") else { return } let sculptingEntity = AnchorEntity(.accessory(from: source, location: location), trackingMode: .predicted) } -
9:45 - Add haptics to an accessory
// Add haptics to an accessory let stylus: GCStylus = ... guard let haptics = stylus.haptics else { return } guard let hapticsEngine: CHHapticEngine = haptics.createEngine(withLocality: .default) else { return } try? hapticsEngine.start() -
11:25 - Access ARKit anchors from AnchorEntity
// Access ARKit anchors from AnchorEntity func getAccessoryAnchor(entity: AnchorEntity) -> AccessoryAnchor? { if let component = entity.components[ARKitAnchorComponent.self], let accessoryAnchor = component.anchor as? AccessoryAnchor { return accessoryAnchor } return nil }
-
-
- 0:00 - Démarrer
Cette séance dédiée au développement sur visionOS se concentre sur la création d’une app de sculpture spatiale en tirant parti du nouveau support des accessoires spatiaux. visionOS permet désormais de concevoir des apps utilisant les manettes PlayStation VR2 Sense et le Logitech Muse, pour un contrôle plus précis et une immersion renforcée. La manette PS VR2 Sense, avec ses boutons, son joystick et sa gâchette, est idéale pour les jeux et la navigation, tandis que le Logitech Muse, doté de capteurs de pression et d’un retour haptique, est particulièrement adapté aux apps de productivité et de création. Cette séance porte sur la création d’une app de sculpture spatiale tirant parti du nouveau support des accessoires spatiaux. visionOS permet désormais de développer des apps compatibles avec la manette PlayStation VR2 Sense et le Logitech Muse, pour un contrôle plus précis et une immersion renforcée. La manette PS VR2 Sense, avec ses boutons, son joystick et sa gâchette, est bien adaptée aux jeux et aux expériences interactives ludiques, tandis que le Logitech Muse, équipé de capteurs de pression et de retour haptique, se prête parfaitement aux apps de productivité et de création. Connectez ces accessoires à l’aide du framework Game Controller et utilisez RealityKit ou ARKit pour suivre leurs mouvements et rotations. La séance montre comment créer une app de sculpture et aborde les aspects de design pour intégrer les accessoires spatiaux dans les apps full-space et shared-space de visionOS.
- 2:41 - Développer une app de sculpture
Le projet d’exemple développe l’app de sculpture en configurant le projet Xcode et en activant la prise en charge des manettes spatiales via une entrée dans le fichier plist. Ensuite, le projet utilise le framework Game Controller pour détecter et connecter les accessoires spatiaux. Une fois la connexion établie, l’app ancre le contenu virtuel à la position Aim de l’accessoire en utilisant AnchorEntity de RealityKit. Cette technique d’ancrage permet d’afficher un outil de sculpture virtuel qui suit avec précision les mouvements de l’accessoire dans l’espace. L’app gère les connexions et déconnexions, et utilise le mode de suivi prédictif pour lisser le rendu virtuel, garantissant ainsi une expérience de sculpture réactive et intuitive. Pour permettre les interactions avec l’argile virtuelle, l’app doit accéder à la transformation de l’outil de sculpture. Cela est rendu possible grâce à la SpatialTrackingSession, qui prend désormais en charge le suivi des accessoires, permettant à l’app d’obtenir les transformations de toute AnchorEntity associée à un accessoire. Le projet ajoute ensuite des retours haptiques pour offrir un retour tactile, rendant l’expérience de sculpture encore plus immersive. L’app peut déterminer quelle main tient l’accessoire grâce à l’AccessoryAnchor d’ARKit, qui fournit également des informations sur le mouvement relatif et l’état du suivi. En combinant les API de RealityKit et d’ARKit, l’app affiche une barre d’outils réactive qui s’adapte à la latéralité de l’utilisateur, lui permettant de changer facilement de mode de sculpture. Cela améliore l’expérience utilisateur et permet un contrôle précis du processus de sculpture.
- 13:37 - Suivez les accessoires avec ARKit
Si vous développez une app avec votre propre rendu, ARKit propose des API pour suivre des accessoires spatiaux comme GCStylus et GCController. Utilisez un fournisseur de suivi d’accessoires pour créer et gérer des objets Accessory. Lorsque des accessoires se connectent ou se déconnectent, relancez la session ARKit avec une nouvelle configuration Accessory. Les ancrages d’accessoires sont similaires aux ancrages de mains : vous pouvez choisir entre des mises à jour dans un flux ou utiliser la prédiction à la demande pour du feedback interactif.
- 14:45 - Considérations relatives à la conception
Une prise en charge adaptative pour les accessoires spatiaux et les mains est recommandé afin de garantir une accessibilité optimale pour l’utilisateur. ARKit permet désormais d’intégrer des accessoires spatiaux avec des manettes de jeu, offrant un contrôle d’entrée amélioré et un retour haptique dans les vues SwiftUI. Utilisez le modificateur receivesEventsInView pour gérer à la fois les gestes manuels standard et les évènements des manettes de jeu. Vous pouvez afficher des badges App Store pour indiquer la compatibilité avec les manettes de jeu spatiales. Pour les apps full-space, des API permettent de masquer l’indicateur d’accueil et les membres supérieurs, pour plus d’immersion.