-
Explore a entrada de acessórios espaciais no visionOS
Saiba como integrar acessórios espaciais ao seu app. Exiba conteúdo virtual, permita a interação com seu app, monitore a posição dos acessórios no espaço e obtenha informações sobre as interações para melhorar as experiências virtuais no visionOS.
Capítulos
- 0:00 - Começar
- 2:41 - Criar uma app de esculturas
- 13:37 - Rastrear acessórios com o ARKit
- 14:45 - Considerações sobre design
Recursos
Vídeos relacionados
WWDC25
WWDC24
- Build a spatial drawing app with RealityKit
- Create enhanced spatial computing experiences with ARKit
WWDC21
WWDC20
-
Buscar neste vídeo...
-
-
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 - Começar
Esta sessão sobre desenvolvimento para visionOS foca a criação de um app de escultura espacial usando o novo suporte a acessórios espaciais. O visionOS permite criar apps usando o controlador PlayStation VR2 Sense e o Logitech Muse para maior controle e imersão. O controlador PS VR2 Sense, com seus botões, joystick e gatilho, é ideal para jogos e navegação, enquanto o Logitech Muse, com sensores de força e resposta tátil, auxilia em apps de produtividade e criatividade. Esta sessão foca a criação de um app de escultura espacial usando o novo suporte a acessórios espaciais. O visionOS permite criar apps usando o controlador PlayStation VR2 Sense e o Logitech Muse para maior controle e imersão. O controlador PS VR2 Sense, com seus botões, joystick e gatilho, é ideal para jogos e experiências interativas, enquanto o Logitech Muse, com sensores de força e resposta tátil, auxilia em apps de produtividade e criatividade. Conecte esses acessórios usando o framework Game Controller e aproveite o RealityKit ou ARKit para rastrear o movimento e a rotação do acessório. A sessão demonstra a criação de um app de escultura e explora o design para incorporar entrada de acessórios espaciais em apps de espaço completo e espaço compartilhado no visionOS.
- 2:41 - Criar uma app de esculturas
O projeto cria o app de escultura configurando o projeto Xcode e definindo o suporte a controladores de jogo espaciais por meio de uma entrada no plist. Em seguida, o projeto utiliza o framework Game Controller para descobrir e conectar acessórios espaciais. Estabelecida a conexão, o app ancora o conteúdo virtual à localização 'Aim' do acessório usando o AnchorEntity do RealityKit. Essa técnica de ancoragem permite exibir uma ferramenta de escultura virtual que rastreia os movimentos do acessório no espaço. O app também lida com eventos de conexão e desconexão e utiliza o modo de rastreamento preditivo para suavizar a renderização do conteúdo virtual, garantindo uma experiência de escultura responsiva e intuitiva. Para ativar interações com a argila virtual, o app precisa acessar o transform da ferramenta de escultura. Isso é alcançado por meio da 'SpatialTrackingSession', que aceita o rastreamento de acessórios, permitindo que o app obtenha os transforms de qualquer 'AnchorEntity' de acessório. O projeto adiciona resposta tátil, tornando a experiência de escultura mais imersiva. O app pode determinar qual mão está segurando o acessório com o 'AccessoryAnchor' do ARKit, que fornece informações sobre o movimento relativo e o estado de rastreamento. Com as APIs do RealityKit e ARKit, o app exibe uma barra de ferramentas reativa que aparece com base na dominância manual, permitindo trocar entre os modos de escultura. Isso aprimora a experiência do usuário e permite um controle preciso sobre o processo de escultura.
- 13:37 - Rastrear acessórios com o ARKit
Se você estiver criando um app com sua própria renderização, o ARKit oferece APIs para rastrear acessórios espaciais, como 'GCStylus' e 'GCController'. Use um provedor de rastreamento de acessórios para criar e gerenciar objetos acessórios. Quando os acessórios se conectam e desconectam, reinicie a sessão do ARKit com a nova configuração do acessório. As âncoras de acessório fornecem atualizações similares às âncoras de mão: escolha entre atualizações precisas transmitidas em tempo real ou previsão sob demanda para feedback interativo.
- 14:45 - Considerações sobre design
Recomenda-se o suporte adaptativo para mãos e acessórios espaciais para garantir máxima acessibilidade. O ARKit permite integrar acessórios espaciais com controladores de jogo para controle de entrada aprimorado e resposta tátil em visualizações SwiftUI. Use o modificador 'receivesEventsInView' para lidar com gestos manuais padrão e com eventos de controladores de jogo. Você pode exibir selos da App Store para indicar suporte a controladores de jogo espaciais. Para apps de espaço completo, APIs permitem ocultar o indicador Home e os membros superiores, aumentando a imersão.