Compartilhar via


WLT+ASA: visão geral do software de suporte

IBinder – associação do SpacePins com o Azure Spatial Anchors

A interface IBinder está no centro, implementada aqui pela classe SpacePinBinder. O SpacePinBinder é um Monocomportamento do Unity e pode ser configurado no Inspetor do Unity ou no script.

Cada IBinder é nomeado, portanto, um único IBindingOracle pode gerenciar associações para vários IBinders.

IPublisher – leitura e gravação de âncoras espaciais na nuvem

A interface IPublisher lida com a publicação de âncoras espaciais na nuvem e as recupera nas sessões posteriores ou em outros dispositivos. IPublisher é implementado aqui com a classe PublisherASA. Os dados de pose no espaço físico atual são capturados e recuperados usando o Azure Spatial Anchors.

Quando uma âncora espacial é publicada, a ID da âncora de nuvem é obtida. Essa ID pode ser usada nas sessões posteriores ou em outros dispositivos para recuperar a pose da âncora de nuvem no sistema de coordenadas atual, juntamente com as propriedades armazenadas. O sistema sempre adiciona uma propriedade que identifica o SpacePin associado da âncora de nuvem.

Deve-se observar que o IPublisher e o PublisherASA não sabem nada sobre o SpacePins. IPublisher não sabe nem se preocupa com o que será feito com os dados de âncora de nuvem. Ele fornece uma interface de espera simplificada para publicação e recuperação de âncoras de nuvem.

Leitura versus Localizar

Se a ID de uma âncora de nuvem for conhecida, a âncora de nuvem poderá ser recuperada pela ID. Esse método é a maneira mais robusta de recuperar uma âncora de nuvem. O método é Leitura.

No entanto, há cenários interessantes em que as IDs das âncoras de nuvem em uma área não são conhecidas por um dispositivo, mas se as âncoras de nuvem pudessem ser recuperadas, seus dados e propriedades espaciais seriam combinados para fornecer informações suficientes para torná-las úteis.

Localizar pesquisa a área ao redor de um dispositivo em busca de âncoras de nuvem e retorna qualquer uma que tenha identificado. Esse processo é conhecido como realocação bruta.

IBindingOracle – compartilhamento de IDs da âncora de nuvem

A interface IBindingOracle fornece um meio de persistência e compartilhamento de associações entre o SpacePins e as âncoras de nuvem específicas. Especificamente, os pares space-pin-ID/cloud-anchor-ID são persistentes, juntamente com o nome do IBinder.

A interface do Oracle é extremamente simples. Dado um IBinder, ela pode executar Put nas associações do IBinder ou pode executar Get nas mesmas. Put as armazena e Get as recupera. O mecanismo de armazenamento e recuperação é deixado para a implementação da classe concreta que implementa a interface IBindingOracle.

Possivelmente, esse exemplo implementa o IBindingOracle mais simples possível na forma da classe SpacePinBinderFile. No Put, ele grava as associações do IBinder em um arquivo de texto. No Get, ele os lê no arquivo de texto (se disponível) e os alimenta no IBinder.

ILocalPeg – blob que marca uma posição no espaço físico

A interface ILocalPeg é uma abstração de uma âncora local do dispositivo. Em um mundo mais perfeito, o ILocalPegs necessário seria gerenciado internamente pelo IPublisher. No entanto, as âncoras locais do dispositivo funcionam muito melhor quando criadas enquanto o dispositivo está nas proximidades da pose da âncora. O IPublisher só sabe onde as âncoras locais do dispositivo devem ser posicionadas quando elas forem necessárias, não no momento ideal de criação.

O SpacePinASA sabe quando é o melhor momento para criar a âncora local. Quando a manipulação do SpacePin termina e a pose é definida, o SpacePinASA solicita que o IPublishercrie um pino local opaco na pose desejada. Em seguida, o SpacePinBinder puxa o ILocalPeg do SpacePinASA e passa para o IPublisher a ser usado ao criar uma âncora espacial de nuvem.

Confira também