Como configurar e executar os exemplos de WLT+ASA
Resumo
O WLT (World Locking Tools) para Unity fornece um sistema de coordenadas estável com base no rastreamento local. Quando combinado com ASA (Âncoras Espaciais do Azure), esse sistema de coordenadas estável pode perdurar entre sessões e ser compartilhado entre dispositivos.
Este vídeo pode dar uma ideia do que esperar ao executar o exemplo.
O que há neste exemplo?
Este exemplo fornece ativos e scripts para:
- Configure o sistema de coordenadas global do Unity em relação ao ambiente físico.
- Publique essa configuração do sistema de coordenadas no Azure usando as Âncoras Espaciais do Azure.
- Recupere os dados do Azure para restaurar o sistema de coordenadas em sessões posteriores ou em outros dispositivos.
Estrutura deste documento
- Configuração – como instalar e implantar o aplicativo de exemplo.
- Observações sobre como executar o aplicativo, juntamente com as etapas sugeridas.
- Descrição arquitetônica dos scripts de suporte.
Configuração e versões testadas
Este exemplo foi desenvolvido e testado usando:
- Unity 2020.3.8f1
- ASA (Âncoras Espaciais do Azure) v2.9.0 - v2.10.2.
- Kit de Ferramentas de Realidade Misturada v2.7.2
- World Locking Tools para o Unity v1.4.1
- FrozenWorldEngine v1.1.1
É possível instalar o WLT e este exemplo de versões do WLT .unitypackage ou da Ferramenta de Recursos de Realidade Misturada. Se estiver instalando do FeatureTool, você não só deverá instalar a dependência Exemplos do WLT (automática), mas também Importar os Exemplos para seu projeto. Consulte Como instalar o WLT da Ferramenta de Recursos de MR para obter detalhes.
Instalar a DLL do Frozen World Engine no projeto
A primeira etapa é instalar a DLL do Frozen World Engine, v1.1.1. Instruções aqui, usando o NuGet para Unity ou a linha de comando nuget.exe.
Instalar o ASA
Como criar recursos de âncora espacial
Esse Guia de Início Rápido percorre as etapas de criação de uma conta do Azure e os recursos necessários de âncoras espaciais. A ID da Conta, o Domínio da Conta e a Chave de Conta serão necessários para executar o exemplo. Você os adicionará aos campos adequados no script "Gerenciador de Âncora Espacial", no objeto SpacePinBinder na cena. Há suporte para outros métodos de autenticação, mas a ID/Domínio/Chave da Conta é o método mais fácil ao começar.
Instalar o SDK
Em seguida, instale as Âncoras Espaciais do Azure v2.9.0 usando um dos métodos descritos nestas instruções. Usei o método da Ferramenta de Recursos de MR.
Configuração adicional para Realocação Bruta
Ao usar a Realocação Bruta, a configuração adicional é necessária durante a implantação no Android ou no HoloLens2.
O que é a Realocação Bruta?
A Realocação Bruta é uma tecnologia que permite a pesquisa de âncoras de nuvem criadas anteriormente em suas proximidades atuais. Os detalhes sobre a Realocação Bruta podem ser encontrados na seção de Realocação Bruta da documentação de Âncoras Espaciais do Azure.
Este exemplo demonstra como localizar âncoras de nuvem por Realocação Bruta ou explicitamente por ID de âncora de nuvem (GUID). Se a Realocação Bruta estiver habilitada, as etapas de configuração adicionais a seguir serão necessárias. Se você não estiver interessado na Realocação Bruta, ela pode ser desabilitada no componente "Publisher ASA" no objeto SpacePinBinder.
Etapas de configuração adicionais para o HoloLens2
Para habilitar a Realocação Bruta no HoloLens2, é necessário adicionar uma permissão ao arquivo Package.appxmanifest gerado no ARM/WorldLockingTools/Package.appxmanifest (supondo que você selecionou a pasta ARM como seu destino de build). Se esse projeto for seu, substitua o nome apropriado de WorldLockingTools nesse caminho. Adicione a seguinte linha à seção Funcionalidades:
<DeviceCapability Name="wiFiControl"/>
Para obter mais informações, confira esta postagem no github.
Se você pular esta etapa, o Editor "Preparação" nunca atingirá o estado "Pronto", sua taxa de quadros será extremamente baixa e o UnityPlayer.log (se gerado) estará cheio de exceções do formulário:
InvalidOperationException: CoarseReloc: o acesso WiFi foi recusado. Solicitar CV: . CV da resposta: .
Será necessário adicionar essa funcionalidade ao Package.appxmanifest sempre que a solução for criada limpa. Mas compilações subsequentes do Unity preservarão a funcionalidade.
Em Configurações do Projeto/Gerenciamento de Plug-in de XR, certifique-se de que Windows Mixed Reality seja o Provedor de plug-in selecionado na guia UWP (também há suporte para OpenXR no WLT com ASA).
O perfil do MRTK XAmple XRSDK ToolkitConfigurationProfile
no XAmpleApp/CustomProfiles é adequado para execução no HoloLens2.
Etapas de configuração adicionais para o Android
Para habilitar a Realocação Bruta no Android, siga estas instruções para configurar o arquivo Assets/Plugins/Android/mainTemplate.gradle.
Além disso, em Assets/Plugins/Android/AndroidManifest.xml, muitas permissões devem ser habilitadas para permitir o acesso ao Wi-Fi no Android. Novamente, se incorporar elementos desse projeto ao seu, será necessário seguir estas etapas também para usar a Realocação Bruta. Mais detalhes sobre as permissões necessárias para acessar Wi-Fi no Android podem ser encontradas nesta postagem e na postagem vinculada a ela.
Exemplos de mainTemplate.gradle e AndroidManifest.xml modificados estão incluídos no exemplo Projeto de exemplo do WLT-ASA, que é configurado especificamente para usar o WLT e o ASA juntos. Eles podem ser copiados diretamente no seu projeto, após habilitar "Manifesto Principal Personalizado" e "Modelo Gradle Principal Personalizado" no Player Configurações de Publicação conforme descrito.
Quando você pressionar Build & Run, se sua compilação falhar com um erro Shader no material MRTK_Standard, basta tentar Build & Run novamente. Comigo funciona na segunda tentativa. Há algumas informações sobre isso nos problemas do MRTK, mas até onde posso dizer, todas essas informações estão incorretas.
Em Configurações do Projeto/Gerenciamento de Plug-in do XR, verifique se ARCore é o Provedor de Plug-in selecionado na guia Android.
O perfil do MRTK XAmple AR ToolkitConfigurationProfile
é adequado para execução em dispositivos móveis. Não se esqueça de executar o script Mixed Reality/Utilities/UnityAR/Update Scripting Defines
após alternar para Android ou iOS.
Qual a função dos botões
- Alternar Marcadores – quando os SpacePins não estiverem ativos, seus identificadores de manipulação podem estar ocultos.
- Publicar – salve a configuração atual, habilitando sua recuperação na sessão posterior ou em outros dispositivos.
- Carregar Oracle – use as associações armazenadas anteriormente para restaurar uma configuração espacial.
- Limpar Oracle – exclua todos os recursos de apoio, especialmente as âncoras espaciais do Azure, e limpe o oracle de associação.
- Pesquisar – localize todas as âncoras espaciais do Azure nas proximidades imediatas e restaure suas configurações espaciais.
- Limpar – localize todas as âncoras espaciais do Azure nas proximidades imediatas e limpe-as.
- Redefinir Marcadores – desfaça qualquer manipulação de Marcador de Espaço. Não limpa as âncoras espaciais do Azure.
O formato do menu no dispositivo móvel é ligeiramente diferente, mas as posições e os significados do botão são os mesmos.
Passo a passo – publique do HoloLens2
Posicione a cena usando SpacePins
Quando você inicializa o exemplo, o sistema de coordenadas é posicionado e orientado com base na pose do rastreador de cabeça na inicialização. Ou seja, é arbitrário. A primeira coisa a ser feita é o ajuste do sistema de coordenadas para um estado de referência desejado.
O sofá na cena PinTestSofa possui 2,18 metros de comprimento, 0,78 m de altura e 1,0 m de profundidade. Os identificadores do SpacePin em cada extremidade da parte superior traseira do sofá tem, portanto, 2,18 m de espaçamento entre si e estão a 0,78 m do solo. É recomendável medir e posicionar marcadores temporários com 2,18 m de distância e a uma altura conveniente. Como alternativa, é possível ajustar a cena para caber no espaço físico.
Depois de ter criado 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).
Capture um identificador por vez do SpacePin (as esferas de wireframe branca) e arraste-os para a posição em relação aos marcadores de referência.
Após liberar cada marcador para a posição, a cena deve ter sido deslocada para restaurar a parte traseira 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 permaneçam no local no mundo físico para o qual você as arrastou.
Publicar o espaço de coordenadas
Após estabelecer o espaço desejado, é possível Publicar esse espaço para disponibilizá-lo em sessões posteriores e em outros dispositivos.
Se estiver usando a Realocação Bruta, é uma boa ideia limpar todas as âncoras de nuvem criadas anteriormente neste ponto. Clique no botão "Limpar da Pesquisa" e aguarde a conclusão.
Agora, no menu flutuante, clique no botão "Publicar" e aguarde a conclusão.
Passo a passo – consumir do HoloLens2 usando a Realocação Bruta
Inicie o aplicativo novamente em um dispositivo HoloLens2 diferente ou no mesmo dispositivo após encerrar 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 global do Unity terá se realinhado ao seu ambiente físico da mesma forma como estava na sessão anterior (Publicada).
Passo a passo – consumir do HoloLens2 usando IBindingOracle (SpacePinBinderFile)
Quando as associações são publicadas em um dispositivo ou quando são restauradas da pesquisa, elas são registradas em um IBindingOracle. Este exemplo inclui o Oracle mais básico, que simplesmente grava as associações em um arquivo de texto.
Reinicie o aplicativo para uma nova sessão. Se esse for o mesmo HoloLens2 no qual Publicar foi executado, haverá um arquivo de associação à esquerda de Publicar. Se esse for um HoloLens2 diferente, mas uma Pesquisa tiver sido executada com êxito em uma sessão anterior, o arquivo de associação será deixado.
Clique no botão "Carregar do Arquivo" para carregar as associações registradas anteriormente e restaurar esse espaço de coordenadas.
Passo a passo – consumir do Android usando a Realocação Bruta
A UX tem uma aparência ligeiramente diferente no Android, mas funciona exatamente da mesma maneira. A principal diferença é a necessidade de verificação um pouco mais minuciosa do ambiente na inicialização em comparação com o HoloLens2, antes que o ASA esteja pronto para continuar.
Quando o sistema aparecer como Pronto, você poderá clicar no botão azul (3º da direita) para pesquisar as associações publicadas anteriormente e restaurar o sistema de coordenadas.
Passo a passo – consumir do Android usando IBindingOracle (SpacePinBinderFile)
Após Carregar da Pesquisa com êxito, um arquivo de associações foi deixado no dispositivo. Em sessões posteriores, é possível clicar em Carregar do Arquivo para restaurar o sistema de coordenadas.
Como alternativa, você pode copiar o arquivo de texto de associações do dispositivo de publicação para o dispositivo consumidor. O local padrão do arquivo de texto de associações é:
HoloLens2: User Folders/LocalAppData/WLT-ASA/LocalState/BinderFile.txt
Android: Internal shared storage/Android/data/com.WorldLockingTools.WLTASA/files/BinderFile.txt