Âncoras espaciais
Uma âncora espacial representa um ponto importante no mundo que o sistema rastreia ao longo do tempo. Cada âncora tem um sistema de coordenadas ajustável, com base em outras âncoras ou quadros de referência, para garantir que os hologramas ancorados permaneçam precisamente no lugar. Renderizar um holograma no sistema de coordenadas de uma âncora fornece o posicionamento mais preciso para esse holograma a qualquer momento. Isso tem o custo de pequenos ajustes ao longo do tempo para a posição do holograma à medida que o sistema o move continuamente de volta ao lugar com base no mundo real.
Você também pode persistir e compartilhar âncoras espaciais entre sessões de aplicativo e entre dispositivos:
- Salvando âncoras espaciais locais no disco e carregando-as novamente mais tarde, seu aplicativo pode calcular o mesmo local no mundo real em várias sessões de aplicativo em um único HoloLens.
- Usando as Âncoras Espaciais do Azure para criar uma âncora de nuvem, seu aplicativo pode compartilhar uma âncora espacial em vários dispositivos HoloLens, iOS e Android. Ao fazer com que cada dispositivo renderize um holograma usando a mesma âncora espacial, os usuários verão o holograma aparecer no mesmo lugar no mundo real. Isso permite experiências compartilhadas em tempo real.
- Você também pode usar âncoras espaciais do Azure para persistência de holograma assíncrona em dispositivos HoloLens, iOS e Android. Ao compartilhar uma âncora espacial de nuvem durável, vários dispositivos podem observar o mesmo holograma persistente ao longo do tempo, mesmo que esses dispositivos não estejam presentes juntos ao mesmo tempo.
Para experiências de escala em pé ou de escala de sala para headsets de área de trabalho amarrados que permanecerão dentro de um diâmetro de 5 metros, você normalmente pode usar o quadro de estágio de referência em vez de âncoras espaciais, o que fornece um único sistema de coordenadas no qual renderizar todo o conteúdo. No entanto, se o aplicativo permitir que os usuários perambulem mais de 5 metros no HoloLens, talvez operando por todo o andar de um prédio, você precisará de âncoras espaciais para manter o conteúdo estável.
Ainda que as âncoras espaciais sejam excelentes para hologramas que devam permanecer fixos no mundo, quando uma âncora é colocada, ela não pode ser movida. Há alternativas para âncoras que são mais apropriadas para hologramas dinâmicos que marcam junto com o usuário. É melhor posicionar hologramas dinâmicos usando um quadro de referência estacionário (a base para as coordenadas mundiais do Unity) ou um quadro de referência anexado.
Práticas recomendadas
Essas diretrizes de âncora espacial vão ajudá-lo a renderizar hologramas estáveis que acompanham com precisão o mundo real.
Criar âncoras espaciais onde os usuários as posicionam
Normalmente, os usuários são os que colocam explicitamente âncoras espaciais.
Por exemplo, no HoloLens, um aplicativo pode interseccionar o raio de foco do usuário com a malha de mapeamento espacial para permitir que o usuário decida onde colocar um holograma. Quando o usuário toca para colocar esse holograma, crie uma âncora espacial no ponto de interseção e coloque o holograma na origem do sistema de coordenadas dessa âncora.
As âncoras espaciais locais são fáceis e eficazes de criar. O sistema combinará dados internos se várias âncoras puderem compartilhar seus dados de sensor subjacentes. É recomendável criar uma nova âncora espacial local para cada holograma que um usuário coloca explicitamente, exceto nos casos descritos abaixo, como grupos rígidos de hologramas.
Sempre processe hologramas ancorados a 3 metros de sua âncora
Âncoras espaciais estabilizam o sistema de coordenadas perto da origem da âncora. Se você renderizar hologramas a mais de 3 metros da origem, os hologramas poderão apresentar erros posicionais perceptíveis em proporção à distância dessa origem devido a efeitos de braço de alavanca. Isso funcionará se o usuário estiver próximo à âncora, já que o holograma também está longe do usuário. Em outras palavras, o erro angular do holograma distante será pequeno. No entanto, se o usuário se aproxima desse holograma distante, ele será grande em sua exibição, tornando os efeitos de braço de alavanca da origem de âncora distante óbvias.
Agrupe hologramas que devem formar um cluster rígido
Vários hologramas poderão compartilhar a mesma âncora espacial se o aplicativo espera que esses hologramas mantenham relações fixas entre si.
Por exemplo, se você estiver animando um sistema solar holográfico em uma sala, é melhor vincular todos os objetos do sistema solar a uma única âncora no centro. Dessa forma, eles se moverão suavemente com base um no outro. Nesse caso, é o sistema solar como um todo que está ancorado, mesmo que suas partes componentes estejam se movendo dinamicamente ao redor da âncora.
A principal ressalva para manter a estabilidade do holograma é seguir a regra de 3 metros acima.
Renderizar hologramas altamente dinâmicos usando o quadro fixo de referência em vez de uma âncora espacial local
Se você tiver um holograma altamente dinâmico, como um caractere andando em torno de uma sala ou uma interface do usuário flutuante que segue ao longo da parede perto do usuário, é melhor ignorar âncoras espaciais locais e renderizar esses hologramas diretamente no sistema de coordenadas fornecido pelo quadro estacionário de referência. No Unity, você consegue isso colocando hologramas diretamente em coordenadas mundiais sem um WorldAnchor. Hologramas em um quadro estacionário de referência podem apresentar descompasso quando o usuário está longe do holograma. Mas é menos provável que isso seja perceptível para hologramas dinâmicos: o holograma está constantemente se movendo de qualquer maneira ou seu movimento o mantém constantemente perto do usuário onde o descompasso será minimizado.
Um caso interessante de hologramas dinâmicos é o de um objeto que é animado de um sistema de coordenadas ancorado para outro. Por exemplo, você pode ter dois castelos a 10 metros de distância, cada um em sua própria âncora espacial com um castelo disparando uma bala de canhão no outro castelo. Quando a bala de canhão é disparada, você pode renderizá-la no local apropriado no quadro estacionário de referência para coincidir com o canhão no primeiro sistema de coordenadas ancorado do castelo. Ele pode seguir sua trajetória no quadro de referência fixo, já que voa por 10 metros pelo ar. À medida que a bala de canhão chega ao outro castelo, você pode movê-la para o sistema de coordenadas ancorado do segundo castelo para permitir cálculos de física com os corpos rígidos daquele castelo.
Se você estiver compartilhando um holograma altamente dinâmico entre dispositivos, escolha alguma âncora espacial de nuvem para atuar como pai porque quadros de referência estacionários não podem ser compartilhados entre dispositivos. No entanto, você deve garantir que o holograma dinâmico ou os dispositivos que o visualizam permaneçam dentro do raio de 3 metros da âncora para que o holograma pareça estável em todos os dispositivos.
Evite a criação de uma grade de âncoras espaciais
Você pode ficar tentado a fazer com que seu aplicativo solte uma grade regular de âncoras espaciais à medida que o usuário anda, fazendo a transição de objetos dinâmicos de âncora para âncora à medida que se movem. No entanto, isso envolve mais gerenciamento para seu aplicativo, sem o benefício dos dados profundos do sensor que o próprio sistema mantém internamente. Para esses casos, você obterá melhores resultados colocando seus hologramas no quadro estacionário de referência, conforme descrito na seção acima. Ao posicionar previamente um conjunto de âncoras espaciais de nuvem em torno de um espaço estático, considere colocar as âncoras espaciais nos locais dos principais hologramas que o usuário se depara de acordo com o princípio acima, em vez de criar uma grade arbitrária de âncoras. Isso garante que você obterá estabilidade máxima para esses hologramas importantes.
Libere as ancoras âncoras espaciais locais de que não precisa mais
Enquanto uma âncora espacial local está ativa, o sistema prioriza manter os dados do sensor próximos a essa âncora. Se você não estiver mais usando uma âncora espacial, pare de acessar seu sistema de coordenadas. Isso permite que os dados do sensor subjacente sejam removidos conforme necessário.
Isso é especialmente importante para âncoras locais que você persistiu no repositório de âncoras espaciais. Os dados do sensor por trás dessas âncoras serão mantidos permanentemente para permitir que seu aplicativo encontre essa âncora em sessões futuras, o que reduz o espaço disponível para rastrear outras âncoras. Persista apenas as âncoras locais que você precisa encontrar novamente em sessões futuras. É recomendável removê-los do repositório quando eles não forem mais significativos para o usuário.
Nas âncoras espaciais de nuvem, o armazenamento pode ser dimensionado conforme seu cenário exigir. Você pode armazenar quantas âncoras de nuvem precisar, liberando-as quando souber que os usuários não precisarão da âncora novamente.