View in English

  • Global Nav Open Menu Global Nav Close Menu
  • Apple Developer
Search
Cancel
  • Apple Developer
  • News
  • Discover
  • Design
  • Develop
  • Distribute
  • Support
  • Account
Only search within “”

Quick Links

5 Quick Links

Vídeos

Abrir menu Fechar menu
  • Coleções
  • Tópicos
  • Todos os vídeos
  • Sobre

Voltar para WWDC25

  • Sobre
  • Resumo
  • Transcrição
  • Código
  • 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

    • Tracking a handheld accessory as a virtual sculpting tool
      • Vídeo HD
      • Vídeo SD

    Vídeos relacionados

    WWDC25

    • Novidades do RealityKit

    WWDC24

    • Build a spatial drawing app with RealityKit
    • Create enhanced spatial computing experiences with ARKit

    WWDC21

    • Tap into virtual and physical game controllers

    WWDC20

    • Advancements in Game Controllers
  • Buscar neste vídeo...

    Olá! Sou Amanda Han, engineer da equipe RealityKit. Nesta sessão, vou mostrar como criar um app de escultura espacial para visionOS usando o novo suporte a acessórios espaciais. No visionOS, temos um paradigma de entrada de dados focado em olhos e mãos. Usando só os olhos e mãos, você pode usar o Apple Vision Pro perfeitamente. Estamos ampliando o leque de experiências que você pode criar no Vision Pro com ferramentas que permitirão ter mais controle, inserir botões e resposta tátil. Este ano, adicionamos o suporte a acessórios espaciais. Adicionamos suporte a dois acessórios espaciais: controle PlayStation VR2 Sense e Logitech Muse.

    O controle PS VR 2 Sense é ótimo para jogos. Ele tem botões, um joystick e um gatilho. Ele pode até navegar pelo sistema usando movimentos padrão, como toques.

    O controle PS VR 2 Sense pode ser rastreado no espaço tão bem que você pode até mesmo praticar esportes, como no Pickle Pro da Resolution Games.

    Outra novidade é o Logitech Muse. O Logitech Muse tem sensores de força que permitem a entrada de variáveis na ponta e no botão lateral, além de resposta tátil potente.

    A precisão é ótima tanto para apps de produtividade e criatividade. Veja um exemplo com um app de escultura que construirei nesta sessão com o app Fotos aberto ao lado. Você pode usar esses acessórios em apps de espaço inteiro ou espaço compartilhado. Rastreamos a posição e a rotação desses acessórios espaciais usando uma combinação de câmeras do Apple Vision Pro e sensores do acessório espacial. Você pode usar a resposta tátil em seus apps para aumentar a imersão.

    Você cria conexão com acessórios espaciais com o framework GameController e acessa os dados de ancoramento com o RealityKit ou ARKit. Nesta sessão, vou mostrar o uso da entrada de acessórios espaciais em seus apps. Construirei um app de escultura usando uma combinação de GameController, RealityKit e ARKit. Analisarei diretamente o uso de ARKit para rastrear acessórios espaciais. Por último, abordarei considerações de design.

    Agora vamos começar a construir o app de escultura! Comece configurando o projeto do Xcode.

    Conecte a um acessório espacial com o framework GameController. Exiba a ferramenta de escultura virtualmente. Comece a interagir com o app esculpindo em argila virtual. Além disso, exiba uma barra de ferramentas reativa com base nos dados de interação de rastreamento. Vamos começar com a configuração no Xcode.

    Estou usando o framework GameController para gerenciar conexões com meus acessórios. Vou adicionar compatibilidade com controles de jogos espaciais ao plist por meio do editor de recursos do Xcode.

    Vou indicar que aceito controles de jogos com rastreamento de acessórios espaciais marcando a caixa Spatial Gamepad.

    Descreverei a maneira como usarei o acessório no campo de descrição para uso de rastreamento de acessórios no plist do app.

    Para o app de escultura, direi que estou rastreando movimentos de acessórios para esculpir em argila virtual. As pessoas verão isso como um pop-up para permitir o rastreamento de acessórios.

    Agora vamos rastrear um dos acessórios. Os acessórios espaciais requerem conexões ativas para transmitir dados do sensor inercial, então preciso descobrir a conexão para fazer a ferramenta de escultura.

    Usarei o framework GameController para descobrir as conexões com acessórios espaciais. Ouça eventos de conexão e desconexão ou itere as conexões atuais. Para saber mais sobre controles de jogos, assista a “Integrar controles de jogos virtuais e físicos”. Duas classes no GameController permitem o rastreamento de acessórios espaciais: GCController e GCStylus. Eles representam controles de jogos e canetas digitais, respectivamente. Ambos estão em conformidade com o protocolo GCDevice.

    Nem todos os controles de jogos ou canetas digitais são compatíveis com o rastreamento de acessórios espaciais. Vou mostrar como verificar o que qualquer um faz em nosso app de escultura. Os acessórios podem não estar conectados ao abrir o app de escultura digital. Então vou precisar ouvir quando ele conectar os acessórios. Para canetas digitais, vou ouvir a notificação GCStylusDidConnect e pegar o GCStylus. Para verificar se o GCStylus permite rastreamento de acessórios espaciais, vou confirmar se sua categoria de produto é Spatial Stylus. O acessório também pode se desconectar durante a vida útil do app. Os eventos de desconexão são implementados de forma semelhante. Para usar a API GCController, posso trocar o GCStylus pelo GCController, verificando se o GCController tem a categoria de produto de controle de jogo espacial. Configurei uma conexão, mas ainda não estou vendo nada no meu acessório. Vamos mostrar uma ponta virtual no final dela. No visionOS, a técnica para rastrear a posição e a orientação de um objeto no espaço é chamada de ancoragem. Independentemente de você estar usando RealityKit, ARKit ou uma combinação dos dois, a ancoragem a acessórios está disponível nos apps de espaço inteiro e espaço compartilhado. A app de escultura vai usar o espaço compartilhado, pois sei que abrir imagens de referência em outros apps, como Safari ou Fotos, para esculpir é útil. Para proteger a privacidade, apenas o app atualmente em foco e autorizado pode rastrear os movimentos dos acessórios.

    Cada acessório identifica seu próprio conjunto de locais para ancoragem. O controle PS VR 2 Sense identifica a mira, a aderência e a superfície da aderência. O Logitech Muse não rotula para onde sua aderência vai, ele apenas rotula o local da mira. O app de escultura é ancorado à mira de cada acessório espacial. Usarei uma AnchorEntity do RealityKit para ancorar conteúdo virtual ao meu acessório. Uma AnchorEntity é uma entidade que anexa conteúdo virtual ao mundo físico. Ela pode interagir com outros elementos da minha cena do RealityKit. Vamos ver a ancoragem no código. Crie um AccessoryAnchoringSource com base em um acessório espacial.

    Vou direcionar o local de “aim” do meu acessório. Se meu acessório não for compatível com esse local, eu não vou ancorá-lo.

    Criarei a AnchorEntity com um destino “accessory”, o local de “aim” e o modo de rastreamento previsto.

    Criei a AnchorEntity à esquerda. O modo de rastreamento previsto usa um modelo sofisticado para prever onde seu acessório estará quando o conteúdo for renderizado. Mas, se você fizer movimentos bruscos, o movimento poderá ultrapassar. Você pode ver isso no quadro 4, no qual o quadro roxo previsto não corresponde à posição real em cinza. Use-o para renderização e interações de baixa latência. Use o modo de rastreamento contínuo para quando precisar de mais precisão. Ele tem uma latência maior, mas fornece poses de maior precisão e não ultrapassa. Para o nosso acessório, escolherei maximizar a capacidade de resposta com o modo de rastreamento previsto. Em um app de escultura, não espero que meus escultores realizem movimentos bruscos com as mãos. Agora tenho uma ponta virtual ancorada ao meu acessório. Pode parecer bom, mas minha ferramenta de escultura não pode interagir com mais nada no app. Eu gostaria de esculpir na argila com base na posição do meu acessório e fornecer resposta tátil. Para esculpir em argila virtual, precisarei obter a transformação da ferramenta de escultura. No ano passado, adicionamos a SpatialTrackingSession, que permite obter as transformações dos tipos AnchorEntity de destino configurados. Novidade este ano: Adicionamos .accessory à lista de configurações de SpatialTrackingSession compatíveis. Depois de adicionar .accessory à configuração, posso executar a sessão e obter as transformações de qualquer AnchorEntity acessório. Para saber mais sobre a SpatialTrackingSession, assista à palestra de Adrian, “Criar um app de desenho espacial com o RealityKit”. Vamos adicionar resposta tátil à criação de esculturas. Um acessório espacial pode ter resposta tátil, o que é um ótimo mecanismo. Vou adicioná-la em nosso app de escultura para realmente sentir a argila. Obtenha a resposta tátil do acessório, crie um hapticsEngine e comece a usar.

    Para saber mais sobre resposta tátil, como a configuração de padrões táteis, confira “Avanços em controles de jogos”. Vamos esculpir na argila usando minha ferramenta de escultura. Sempre que o acessório se move para dentro da argila, retiro material e uso resposta tátil, para uma experiência imersiva. Mas eu poderia remover muito material de partes da minha criação. Deste jeito. Então vou adicionar um modo de escultura aditiva. Mostrarei uma barra de ferramentas para alternar entre os modos de escultura que aparecem com base nas interações do usuário com seus acessórios. Vou mostrá-la à esquerda ou à direita, dependendo da mão que segura o acessório. Para isso, posso usar o AccessoryAnchor do ARKit. O AccessoryAnchor do ARKit fornece quatro propriedades: A lateralidade, que diz qual mão segura o acessório, o movimento relativo do acessório no espaço, o movimento relativo de rotação no espaço e o estado de rastreamento. A qualidade do rastreamento diminui quando sensores ou câmeras têm cobertura reduzida.

    Para casos de uso específicos, como fazer medições no mundo real com a ajuda de acessórios espaciais, o ARKit também expõe uma API que permite receber transformações de âncora métrica. Para obter mais detalhes, confira a API Coordinate spaces na documentação. Voltemos ao meu exemplo. Preciso acessar o AccessoryAnchor do ARKit, mas só tenho o AnchorEntity do RealityKit. Este ano, o RealityKit permite que você obtenha âncoras do ARKit de qualquer AnchorEntity do RealityKit se você tiver uma SpatialTrackingSession em execução e configurada. Vamos configurar uma função para obter o AccessoryAnchor do ARKit de um AnchorEntity do RealityKit. Basta acessar o ARKitAnchorComponent em um AnchorEntity, pegar seu ARKitAnchor e, condicionalmente, convertê-lo em um AccessoryAnchor. Para saber mais sobre o ARKitAnchorComponent, confira a palestra de Laurence, “Novidades do RealityKit”.

    Vamos começar a exibir essa barra de ferramentas. Vou pegar o acessório Anchor do meu AnchorEntity usando essa função auxiliar que acabei de fazer. E vou usar a lateralidade para determinar a posição da barra de ferramentas. Essa propriedade é armazenada na quiralidade da âncora acessória.

    Se a lateralidade for canhota, exibirei a barra de ferramentas em x positivo, e vice-versa para destra. Caso contrário, o acessório não é segurado em nenhuma das mãos, então eu não vou compensá-lo.

    Vamos ver essa barra de ferramentas reativa no meu app. Quando eu pressiono o botão enquanto seguro na mão direita, ela aparece à esquerda do acessório. Posso trocar para o modo aditivo e corrigir esse erro que cometi.

    Está... bom o bastante! Vamos recapitular. Criei uma app de escultura imersiva usando as novas APIs de acessórios espaciais. Eu usei o GameController para conectar acessórios. Então usei as APIs do RealityKit para criar nossa ferramenta de escultura. Exibi uma barra de ferramentas reativa usando os recursos combinados do RealityKit e do ARKit. O app final ficou ótimo. Mas, se você preferir trabalhar diretamente com o ARKit ou estiver criando um app com renderização personalizada, existem APIs para ajudar a obter a funcionalidade equivalente para rastrear acessórios espaciais. Vamos conferir. Descreverei os principais pontos do ARKit para rastreamento de acessórios com o provedor de rastreamento de acessórios e atualizações de âncora de acessórios. Use um GCStylus ou um GCController para criar um acessório.

    Use um provedor de rastreamento de acessórios para rastrear objetos acessórios. Quando um acessório se conecta ou se desconecta do seu app, você precisa processá-lo adequadamente. Isso significa que você precisará executar novamente a sessão do ARKit com a configuração alterada de acessórios.

    Para ver a implementação, confira o app de exemplo do ARKit em “Rastrear acessórios em janelas volumétricas”. As âncoras acessórias são semelhantes às âncoras manuais em relação aos padrões de atualização. Você pode optar por receber atualizações precisas em um fluxo ou usar a previsão sob demanda para receber feedback interativo do usuário. Para saber mais sobre a previsão do ARKit, assista a “Criar experiências de computação espacial aprimoradas com o ARKit”. Eu abordei muitas APIs ótimas de acessórios espaciais. A seguir, compartilharei algumas considerações de design ao criar seus apps. Vamos começar interagindo com a interface com movimentos. Você já pode dizer a uma visualização para receber comandos do controle de jogos como botões ou gatilhos como o método de entrada em vez de movimentos. Agora você pode usar movimentos com as mãos padrão e controles de jogos como entrada em suas visualizações.

    Veja como isso funciona no código. Oriente a view da SwiftUI a receber eventos de controles de jogos. Em seguida, diga para receber eventos de movimento também, definindo o modificador .receivesEventsInView.

    Se o controle de jogos tiver rastreamento de acessório espacial, seu movimento de evento espacial preencherá a quiralidade, ou lateralidade, do controle de jogos.

    Nos apps executados em um espaço inteiro, use a API .persistentSystemOverlays para ocultar o indicador de Início e a API .upperLimbVisibility para ocultar membros superiores e acessórios. Isso pode aprimorar ainda mais a imersão de apps e jogos. Os acessórios espaciais possibilitam novas formas avançadas de interagir com apps e jogos. Para garantir que seu app possa ser usado pelo maior número possível de usuários, ofereça suporte adaptável a acessórios espaciais e mãos.

    O ARKit rastreia as mãos nativamente ainda mais rápido, para que as mãos e os olhos fiquem ainda melhores como entrada.

    Para mostrar que você aceita controles de jogos com rastreamento de acessórios espaciais, adicione o selo de suporte a controles de jogos espaciais na App Store. Se o seu app exigir controles de jogos com rastreamento de acessórios espaciais, exiba o selo de obrigatoriedade de controle de jogos espaciais. Verifique na documentação as chaves correspondentes a serem adicionadas ao plist do seu app para exibir qualquer um dos selos. Vamos concluir esta sessão. Você pode adotar acessórios espaciais para melhor controle de entradas e resposta tátil. Integre acessórios usando o GameController, o RealityKit e o ARKit. Ao criar seus apps, ofereça suporte adaptável para mãos e acessórios. Esta é apenas uma amostra dos apps e jogos que você pode criar usando acessórios espaciais. Estou animada para ver suas criações. Tenha uma ótima WWDC25!

    • 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.

Developer Footer

  • Vídeos
  • WWDC25
  • Explore a entrada de acessórios espaciais no visionOS
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • Icon Composer
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • App Store
    • Audio & Video
    • Augmented Reality
    • Business
    • Design
    • Distribution
    • Education
    • Fonts
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning & AI
    • Open Source
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Sample Code
    • Tutorials
    • Downloads
    • Forums
    • Videos
    Open Menu Close Menu
    • Support Articles
    • Contact Us
    • Bug Reporting
    • System Status
    Open Menu Close Menu
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles
    • Feedback Assistant
    Open Menu Close Menu
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program
    • News Partner Program
    • Video Partner Program
    • Security Bounty Program
    • Security Research Device Program
    Open Menu Close Menu
    • Meet with Apple
    • Apple Developer Centers
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Academies
    • WWDC
    Get the Apple Developer app.
    Copyright © 2025 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines