Configurar e executar os exemplos WLT+ASA

Resumo

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

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

O que está neste exemplo?

Este exemplo fornece recursos e scripts para:

  1. Configure o sistema de coordenadas global do Unity no que diz respeito ao ambiente físico.
  2. Publique essa configuração de sistema coordenada no Azure com as Âncoras Espaciais do Azure.
  3. Obtenha os dados do Azure para restaurar o sistema de coordenadas em sessões posteriores ou noutros dispositivos.

Estrutura deste documento

  1. Configuração – Como instalar e implementar a aplicação de exemplo.
  2. Notas sobre a execução da aplicação, juntamente com os passos sugeridos.
  3. Descrição da arquitetura dos scripts de suporte.

Configurar e testar versões

Este exemplo foi desenvolvido e testado com:

  • Unity 2020.3.8f1
  • Âncoras Espaciais do Azure (ASA) v2.9.0 - v2.10.2.
  • Mixed Reality Toolkit v2.7.2
  • World Locking Tools for Unity v1.4.1
  • FrozenWorldEngine v1.1.1

Pode instalar o WLT e este exemplo a partir do WLT lança .unitypackage ou a partir da Ferramenta de Funcionalidades do Mixed Reality. Se instalar a partir do FeatureTool, não só tem de instalar a dependência WLT Examples (automática), como também Importar os Exemplos para o seu projeto. Veja Instalar o WLT a partir da Ferramenta de Funcionalidades do MR para obter detalhes.

Instalar a DLL do Motor Do Mundo Congelado no projeto

O primeiro passo é instalar a DLL frozen World Engine, v1.1.1. Instruções aqui, utilizando o NuGet para o Unity ou a linha de comandos nuget.exe.

Instalar o ASA

Criar recursos de âncora espacial

Este Guia de Introdução percorre os passos 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 de Conta serão necessários para executar o exemplo. Irá adicioná-los aos campos adequados no script "Gestor de Âncora Espacial", no objeto SpacePinBinder na cena. São suportados outros métodos de autenticação, mas o ID da Conta/Domínio/Chave é o mais fácil ao começar.

Campos de credenciais

Instalar o SDK

Em seguida, instale o Azure Spatial Anchors v2.9.0 com um dos métodos descritos nestas instruções. Usei o método Ferramenta de Funcionalidades mr.

Configuração adicional para Relocalização Conjunta

Ao utilizar a Relocalização Conjunta, é necessária uma configuração adicional ao implementar no Android ou HoloLens2.

O que é a Relocalização Grosseira?

A Relocalização Conjunta é uma tecnologia que lhe permite procurar âncoras na cloud criadas anteriormente nas suas proximidades atuais. Os detalhes sobre a Relocalização de Cursos podem ser encontrados na secção Reposicionamento de Cursos da documentação do Azure Spatial Anchors.

Este exemplo demonstra encontrar âncoras na cloud através da Relocalização Conjunta ou explicitamente pelo ID de âncora da cloud (GUID). Se a Relocalização Automática estiver ativada, são necessários os seguintes passos de configuração adicionais. Se não estiver interessado na Relocalização Conjunta, pode desativá-la no componente "Publisher ASA" no objeto SpacePinBinder.

Desativar a relocalização grosseira

Passos de configuração adicionais para o HoloLens2

Para ativar a Relocalização Conjunta no HoloLens2, tem de adicionar uma permissão ao ficheiro Package.appxmanifest gerado no ARM/WorldLockingTools/Package.appxmanifest (partindo do princípio de que selecionou a pasta ARM como destino de compilação). Se este projeto for seu, substitua o nome adequado para WorldLockingTools nesse caminho. Adicione a seguinte linha à secção Capacidades:

    <DeviceCapability Name="wiFiControl"/>

Para obter mais informações, consulte esta mensagem no github.

Se perder este passo, a "Preparação" do Publisher nunca atingirá o estado "Pronto", a sua taxa de fotogramas será extremamente baixa e o seu UnityPlayer.log (se gerado) estará cheio de exceções do formulário:

InvalidOperationException: CoarseReloc: o acesso Wi-Fi foi recusado. PEDIR CV: . CV de Resposta: .

Terá de adicionar essa capacidade ao package.appxmanifest sempre que a solução for criada de forma limpa. Mas as compilações subsequentes do Unity preservarão a capacidade.

Em Definições do Projeto/Gestão de Plug-inS XR, certifique-se de que Windows Mixed Reality é a Plugin-Provider selecionada no separador UWP (o OpenXR também é suportado para WLT com ASA).

O perfil XAmple XRSDK ToolkitConfigurationProfile MRTK no XAmpleApp/CustomProfiles é adequado para ser executado no HoloLens2.

Passos de configuração adicionais para Android

Para ativar a Relocalização Conjunta no Android, siga estas instruções para configurar o ficheiro Assets/Plugins/Android/mainTemplate.gradle.

Além disso, no Assets/Plugins/Android/AndroidManifest.xml, muitas permissões têm de ser ativadas para permitir o acesso a Wi-Fi no Android. Mais uma vez, se incorporar elementos deste projeto no seu próprio projeto, também terá de seguir estes passos para utilizar a Relocalização Grosseira. Estão nesta publicação mais detalhes sobre as permissões necessárias para aceder a Wi-Fi no Android e a publicação para a qual liga.

Os exemplos de mainTemplate.gradle e AndroidManifest.xml modificados estão incluídos no Projeto de Exemplo WLT-ASA, que está configurado especificamente para utilizar o WLT e o ASA em conjunto. Podem ser copiados diretamente para o seu projeto , depois de ativarem "Manifesto Principal Personalizado" e "Modelo de Gradação Principal Personalizado" nas Definições de Publicação do Leitor, conforme descrito.

Quando atingir a Compilação & Executar, se a compilação falhar com um erro Shader no material MRTK_Standard, experimente Compilar & Executar novamente. Funciona em segundo lugar para mim. Existem algumas informações sobre isso nos problemas do MRTK, mas tanto quanto sei, todas as informações estão incorretas.

Em Definições do Projeto/Gestão de Plug-in XR, certifique-se de que o ARCore é o Plugin-Provider selecionado no separador Android.

O perfil XAmple AR ToolkitConfigurationProfile MRTK é adequado para ser executado 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

Pronto

  • Ative Os Pinos – quando os SpacePins não estão ativos, as respetivas alças de manipulação podem estar ocultas.
  • Publicar – guarde a configuração atual, ativando a respetiva obtenção numa sessão posterior ou noutros dispositivos.
  • Carregar o Oracle – utilize enlaces armazenados anteriormente para restaurar uma configuração espacial.
  • Limpar Oracle – elimine todos os recursos de apoio, especialmente as âncoras espaciais do Azure, e limpe o oráculo de enlaces.
  • Pesquisa – localize todas as âncoras espaciais do Azure nas proximidades imediatas e restaure a configuração espacial a partir das mesmas.
  • Remover – localize todas as âncoras espaciais do Azure nas proximidades imediatas e limpe-as.
  • Repor Pinos - Anular manipulações de Afixação de Espaço. Não limpa quaisquer âncoras espaciais do Azure.

O menu em dispositivos móveis é ligeiramente diferente na forma, mas as posições e significados dos botões são os mesmos.

Instruções - Publicar a partir do HoloLens2

Colocar a cena com SpacePins

Quando inicia o exemplo, o sistema de coordenadas é posicionado e orientado com base na pose do controlador principal no arranque. Ou seja, é bastante arbitrário. A primeira coisa a fazer é ajustar o sistema de coordenadas a um estado de referência pretendido.

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 da parte 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 uma altura conveniente. Em alternativa, pode ajustar a cena para se ajustar ao seu espaço físico.

Depois de ter criado e implementado a aplicação num dispositivo HoloLens2, aguarde até que o estado no menu flutuante indique Pronto (sugestão – a linha de estado passará de vermelho para branco quando estiver pronta).

Não pronto

Um de cada vez, pegue cada uma das alças spacePin (as esferas de wireframe branco) e arraste-a para a posição relativamente aos marcadores de referência.

Depois de libertar cada um dos marcadores em 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 a ser movidos, todo o espaço de coordenadas é ajustado para que as coordenadas originais dos SpacePins estejam na localização no mundo físico para onde os arrastou.

Publicar o espaço de coordenadas

Depois de ter estabelecido o espaço que pretende, pode agora Publicar esse espaço para o disponibilizar em sessões posteriores e noutros dispositivos.

Se estiver a utilizar a Relocalização Grosseira, recomendamos que elimine as âncoras da cloud criadas anteriormente neste momento. Prima o botão "Remover da Pesquisa" e aguarde que seja concluído.

Agora, no menu flutuante, prima o botão "Publicar" e aguarde até que seja concluído.

Pronto

Instruções – Consumir a partir do HoloLens2 com a Relocalização Conjunta

Inicie a aplicação novamente num dispositivo HoloLens2 diferente ou no mesmo dispositivo depois de fechar a sessão anterior. Quando o estado for apresentado como Pronto, prima o botão "Carregar da Pesquisa". Quando a operação estiver concluída, o sistema de coordenadas global do Unity terá realinhado o seu ambiente físico tal como estava na sessão anterior (Publicada).

Instruções - Consumir a partir do HoloLens2 com iBindingOracle (SpacePinBinderFile)

Quando os enlaces são publicados num dispositivo ou quando são restaurados a partir da pesquisa, são gravados num IBindingOracle. Este exemplo inclui o Oracle mais básico, que simplesmente escreve os enlaces num ficheiro de texto.

Reinicie a aplicação para uma nova sessão. Se for o mesmo HoloLens2 a partir do qual a publicação Foi executada, existe um ficheiro de enlace na publicação. Se este for um HoloLens2 diferente, mas uma Pesquisa tiver sido executada com êxito numa sessão anterior, o ficheiro de enlace será deixado desse modo.

Prima o botão "Carregar do Ficheiro" para carregar os enlaces gravados anteriormente e restaurar esse espaço de coordenadas.

Instruções – Consumir a partir do Android com a Relocalização Conjunta

A experiência de utilizador tem um aspeto ligeiramente diferente no Android, mas funciona exatamente da mesma forma. A principal diferença é que é necessária uma análise mais detalhada do ambiente no arranque relativamente ao HoloLens2, antes de o ASA estar pronto para continuar.

Quando o sistema for apresentado como Pronto, pode premir o botão azul (3.º a contar da direita) para procurar os enlaces publicados anteriormente e restaurar o sistema de coordenadas.

Instruções - Consumir a partir do Android com iBindingOracle (SpacePinBinderFile)

Depois de ter concluído com êxito uma Carga da Pesquisa, um ficheiro de enlaces foi deixado no dispositivo. Em sessões posteriores, basta premir Carregar a partir de Ficheiro para restaurar o sistema de coordenadas.

Em alternativa, pode simplesmente copiar o ficheiro de texto de enlaces do dispositivo de publicação para o dispositivo que está a consumir. A localização predefinida do ficheiro de texto de enlaces é:

HoloLens2: Pastas de Utilizador/LocalAppData/WLT-ASA/LocalState/BinderFile.txt

Android: armazenamento partilhado interno/Android/data/com. WorldLockingTools.WLTASA/files/BinderFile.txt

Ver também