Partilhar via


Configurando e executando as amostras WLT+ASA

Resumo

World Locking Tools for Unity (WLT) fornece um sistema de coordenadas estável baseado no rastreamento local. Quando combinado com as Âncoras Espaciais do Azure (ASA), esse sistema de coordenadas estável pode ser persistido entre sessões e compartilhado entre dispositivos.

Este vídeo pode dar-lhe uma ideia do que esperar ao executar o exemplo.

O que contém esta amostra?

Este exemplo fornece ativos e scripts para:

  1. Configure o sistema de coordenadas globais do Unity em relação ao ambiente físico.
  2. Publique essa configuração do sistema de coordenadas no Azure usando as Âncoras Espaciais do Azure.
  3. Recupere os dados do Azure para restaurar o sistema de coordenadas em sessões posteriores ou em outros dispositivos.

Estrutura do presente documento

  1. Setup - Como instalar e implantar o aplicativo de exemplo.
  2. Notas sobre a execução do aplicativo, juntamente com as etapas sugeridas.
  3. Descrição arquitetônica dos scripts de suporte.

Configuração e versões testadas

Esta amostra foi desenvolvida e testada usando:

  • Unidade 2020.3.8f1
  • Azure Spatial Anchors (ASA) v2.9.0 - v2.10.2.
  • Kit de ferramentas de realidade mista v2.7.2
  • Ferramentas de bloqueio do mundo para Unity v1.4.1
  • FrozenWorldEngine v1.1.1

Você pode instalar o WLT e este exemplo a partir das versões .unitypackage do WLT ou da Ferramenta de Recursos de Realidade Mista. Se estiver instalando a partir da FeatureTool, você deve não apenas instalar a dependência de exemplos WLT (automática), mas também importar os exemplos para seu projeto. Consulte Instalando WLT a partir da MR Feature Tool para obter detalhes.

Instale a DLL do Frozen World Engine no projeto

O primeiro passo é instalar a DLL do Frozen World Engine, v1.1.1. Instruções aqui, usando o NuGet for Unity ou nuget.exe de linha de comando.

Instalar o ASA

Criação de recursos de âncora espacial

Este Guia de Início Rápido percorre as etapas para criar uma conta do Azure e os recursos de âncoras espaciais necessários. O ID da Conta, o Domínio da Conta e a Chave da Conta serão necessários para executar o exemplo. Você irá adicioná-los nos campos apropriados no script "Spatial Anchor Manager", no objeto SpacePinBinder na cena. Outros métodos de autenticação são suportados, mas o ID da Conta/Domínio/Chave é o mais fácil ao começar.

Campos de credenciais

Instale o SDK

Em seguida, instale o Azure Spatial Anchors v2.9.0 usando um dos métodos descritos nestas instruções. Eu usei o método MR Feature Tool.

Configuração adicional para realocação grosseira

Ao usar o Coarse Relocation, é necessária uma configuração adicional ao implantar no Android ou HoloLens2.

O que é a Realocação Grosseira?

Coarse Relocation é uma tecnologia que permite pesquisar âncoras de nuvem previamente criadas dentro de sua vizinhança atual. Detalhes sobre Realocação de Curso podem ser encontrados na seção Realocação de Curso da documentação de Âncoras Espaciais do Azure.

Este exemplo demonstra a localização de âncoras de nuvem por Realocação Grossa ou explicitamente por GUID (ID de âncora de nuvem). Se a Realocação Grossa estiver habilitada, as etapas de configuração adicionais a seguir serão necessárias. Se você não estiver interessado em Coarse Relocation, você pode desativá-lo no componente "Publisher ASA" no objeto SpacePinBinder.

Desativação da recolocação grosseira

Passos de configuração adicionais para o HoloLens2

Para habilitar a Realocação Grossa no HoloLens2, você deve adicionar uma permissão ao arquivo Package.appxmanifest gerado em ARM/WorldLockingTools/Package.appxmanifest (supondo que você tenha selecionado a pasta ARM como seu destino de compilação). Se este projeto for seu, substitua o nome apropriado para WorldLockingTools nesse caminho. Adicione a seguinte linha à seção Recursos:

    <DeviceCapability Name="wiFiControl"/>

Para obter mais informações, consulte este post no github.

Se você perder esta etapa, a "Prontidão" do Editor nunca atingirá o estado "Pronto", sua taxa de quadros será extremamente baixa e sua UnityPlayer.log (se gerada) estará cheia de exceções do formulário:

InvalidOperationException: CoarseReloc: o acesso WiFi foi recusado. Solicitar CV: . CV de resposta: .

Você precisará adicionar esse recurso ao seu Package.appxmanifest cada vez que a solução for criada a partir da limpeza. Mas as compilações subsequentes do Unity preservarão a capacidade.

Em Configurações do Projeto/Gerenciamento de Plug-ins XR, certifique-se de que o Windows Mixed Reality é o Provedor de Plug-ins selecionado na guia UWP (OpenXR também é suportado para WLT com ASA).

O perfil XAmple XRSDK ToolkitConfigurationProfile MRTK no XAmpleApp/CustomProfiles é adequado para execução no HoloLens2.

Etapas de configuração adicionais para Android

Para habilitar a Realocação Grossa no Android, siga estas instruções para configurar o arquivo Assets/Plugins/Android/mainTemplate.gradle.

Além disso, nos Ativos/Plugins/Android/AndroidManifest.xml, muitas permissões devem ser ativadas para permitir o acesso ao Wi-Fi no Android. Novamente, se incorporar elementos deste projeto em seu próprio projeto, você precisa seguir estas etapas também para usar a Realocação Grossa. Mais detalhes sobre as permissões necessárias para acessar o Wi-Fi no Android estão neste post e no post ao qual ele está vinculado.

Exemplos do mainTemplate.gradle e AndroidManifest.xml modificados estão incluídos no WLT-ASA Sample Project, que é configurado especificamente para usar WLT e ASA juntos. Eles podem ser copiados diretamente para o seu projeto, depois de ativar "Manifesto Principal Personalizado" e "Modelo Principal Personalizado de Gradle" nas Configurações de Publicação do Player conforme descrito.

Quando você pressionar Build & Run, se sua compilação falhar com um erro Shader no material MRTK_Standard, tente Build & Run novamente. Funciona segunda tentativa para mim. Há algumas informações sobre isso nas questões MRTK, mas tanto quanto eu posso dizer todas as informações lá está incorreta.

Em Configurações do projeto/Gerenciamento de plug-ins XR, certifique-se de que ARCore é o provedor de plug-ins selecionado na guia Android.

O perfil XAmple AR ToolkitConfigurationProfile MRTK é adequado para execução em dispositivos móveis. Não se esqueça de executar o script Mixed Reality/Utilities/UnityAR/Update Scripting Defines depois de mudar para Android ou iOS.

O que fazem os botões

Pronta

  • Alternar Pinos - Quando os SpacePins não estão ativos, suas alças de manipulação podem estar ocultas.
  • Publicar - Salve a configuração atual, permitindo sua recuperação em sessão posterior ou em outros dispositivos.
  • Carregar Oracle - Use ligações armazenadas anteriormente para restaurar uma configuração espacial.
  • Limpar Oracle - Exclua todos os recursos de suporte, especialmente as âncoras espaciais do Azure, e limpe o oráculo de associações.
  • Pesquisar - Encontre todas as âncoras espaciais do Azure nas imediações e restaure a configuração espacial a partir delas.
  • Purge - Encontre todas as âncoras espaciais do Azure nas imediações e limpe-as.
  • Redefinir Pinos - Desfaça qualquer manipulação de Pinos de Espaço. Não limpa nenhuma âncora espacial do Azure.

O menu no celular é ligeiramente diferente na forma, mas as posições dos botões e os significados são os mesmos.

Passo a passo - Publicar do HoloLens2

Coloque a cena usando SpacePins

Quando você inicia a amostra, o sistema de coordenadas é posicionado e orientado com base na pose do rastreador de cabeça na inicialização. Ou seja, é bastante arbitrário. A primeira coisa a fazer é ajustar o sistema de coordenadas para um estado de referência desejado.

O sofá na cena PinTestSofa tem 2,18 metros de comprimento, 0,78 m de altura e 1,0 m de profundidade. As alças SpacePin em cada extremidade do encosto superior do sofá estão, portanto, a 2,18 m de distância e a 0,78 m do chão. Recomendo medir e colocar marcadores temporários a 2,18 m de distância, a alguma altura conveniente. Como alternativa, você pode ajustar a cena para se adequar ao seu espaço físico.

Tendo construído e implantado o aplicativo em um dispositivo HoloLens2, aguarde até que o status no menu flutuante diga Pronto (dica - a linha de status passará de vermelho para branco quando estiver pronto).

Não está pronto

Uma de cada vez, pegue cada uma das alças do SpacePin (as esferas brancas do wireframe) e arraste-a para a posição em relação aos seus marcadores de referência.

Depois de liberar cada um dos marcadores na posição, a cena deveria ter mudado para restaurar a parte de trás do sofá em relação ao SpacePin. Os objetos na cena não estão sendo movidos, todo o espaço de coordenadas é ajustado para que as coordenadas originais dos SpacePins estejam no local no mundo físico para o qual você os arrastou.

Publicar o espaço de coordenadas

Depois de estabelecer o espaço desejado, agora você pode publicar esse espaço para disponibilizá-lo em sessões posteriores e em outros dispositivos.

Se estiver usando a Realocação Grossa, é uma boa ideia limpar todas as âncoras de nuvem criadas anteriormente neste momento. Clique no botão "Limpar da pesquisa" e aguarde até que isso seja concluído.

Agora, no menu flutuante, pressione o botão "Publicar" e aguarde a conclusão.

Pronta

Passo a passo - Consumir do HoloLens2 usando Realocação Grossa

Inicie o aplicativo novamente em um dispositivo HoloLens2 diferente, ou no mesmo dispositivo depois de fechar a sessão anterior. Quando o status aparecer como Pronto, pressione o botão "Carregar da pesquisa". Quando a operação for concluída, o sistema de coordenadas globais Unity terá sido realinhado ao seu ambiente físico, como era na sessão anterior (Publicado).

Passo a passo - Consumir do HoloLens2 usando IBindingOracle (SpacePinBinderFile)

Quando as associações são publicadas em um dispositivo, ou quando são restauradas a partir da pesquisa, elas são registradas em um IBindingOracle. Este exemplo inclui o Oracle mais básico, aquele que simplesmente grava as ligações em um arquivo de texto.

Reinicie o aplicativo para uma nova sessão. Se este for o mesmo HoloLens2 a partir do qual a publicação foi executada, então há um arquivo de vinculação deixado da publicação. Se este for um HoloLens2 diferente, mas uma pesquisa foi executada com êxito em uma sessão anterior, o arquivo de vinculação será deixado a partir disso.

Pressione o botão "Load from File" para carregar as ligações gravadas anteriormente e restaurar o espaço de coordenadas.

Passo a passo - Consumir do Android usando a Realocação Grossa

O UX parece ligeiramente diferente no Android, mas funciona exatamente da mesma forma. A principal diferença é que é necessário um pouco mais de varredura do ambiente na inicialização em relação ao HoloLens2, antes que o ASA esteja pronto para prosseguir.

Quando o sistema aparece como Pronto, você pode pressionar o botão azul (3º da direita) para procurar as ligações publicadas anteriormente e restaurar o sistema de coordenadas.

Passo a passo - Consumir do Android usando IBindingOracle (SpacePinBinderFile)

Tendo concluído com êxito um carregamento da pesquisa, um arquivo de ligações foi deixado no dispositivo. Em sessões posteriores, basta pressionar Load from File para restaurar o sistema de coordenadas.

Como alternativa, você pode simplesmente copiar o arquivo de texto de ligações do dispositivo de publicação para o dispositivo consumidor. O local padrão do arquivo de texto de ligações é:

HoloLens2: Pastas de usuário/LocalAppData/WLT-ASA/LocalState/BinderFile.txt

Android: Armazenamento compartilhado interno/Android/data/com. WorldLockingTools.WLTASA/arquivos/BinderFile.txt

Consulte também