Share via


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

IBinder - vinculação de SpacePins a Âncoras Espaciais do Azure

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

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

IPublisher - leitura e escrita de âncoras espaciais para a nuvem

A IPublisher interface lida com a publicação de âncoras espaciais na nuvem e, em seguida, recuperá-las em 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 as Âncoras Espaciais do Azure.

Quando uma âncora espacial é publicada, um ID de âncora de nuvem é obtido. Esse ID pode ser usado em sessões posteriores ou em outros dispositivos para recuperar a pose da âncora de nuvem no sistema de coordenadas atual, juntamente com quaisquer propriedades armazenadas com ele. O sistema sempre adiciona uma propriedade que identifica o SpacePin, associado à âncora da nuvem.

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

Ler versus Localizar

Se o ID de uma âncora de nuvem for conhecido, a âncora de nuvem pode ser recuperada por seu ID. Esse método é a maneira mais robusta de recuperar uma âncora de nuvem. O método é Read.

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

Localizar pesquisa âncoras de nuvem na área ao redor de um dispositivo e retorna qualquer uma que ele foi capaz de identificar. Este processo é conhecido como realocação grosseira.

IBindingOracle - compartilhamento de IDs de âncora de nuvem

A interface IBindingOracle fornece um meio de persistir e compartilhar ligações entre SpacePins e âncoras de nuvem específicas. Especificamente, ele persiste pares space-pin-ID/cloud-anchor-ID, juntamente com o nome do IBinder.

A interface do oráculo é extremamente simples. Dado um IBinder, ele pode colocar as IBinderligações do , ou pode obtê-las. Put armazena-os, e Get recupera-los. O mecanismo de armazenamento e recuperação é deixado para a implementação da classe concreta que implementa a interface IBindingOracle.

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

ILocalPeg - blob marcando 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, os ILocalPegs necessários seriam gerenciados 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 único sabe onde as âncoras locais do dispositivo devem ser colocadas quando são necessárias, não no momento ideal de criá-las.

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

Consulte também