Compartilhar via


Â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. A renderização de 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 na 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: salvando âncoras espaciais locais em 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.

Para experiências em escala permanente ou em escala de sala para fones de ouvido de desktop conectados que permanecerão dentro de um diâmetro de 5 metros, você normalmente pode usar o quadro de referência do estágio em vez de âncoras espaciais, que fornece um único sistema de coordenadas no qual renderizar todo o conteúdo. No entanto, se seu aplicativo permitir que os usuários vagueiem além de 5 metros no HoloLens, talvez operando em um andar inteiro de um edifício, 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 âncoras espaciais explicitamente.

Por exemplo, no HoloLens, um aplicativo pode cruzar o raio de olhar do usuário com a malha de mapeamento espacial para permitir que o usuário decida onde colocar um holograma. Quando o usuário tocar para colocar esse holograma, crie uma âncora espacial no ponto de interseção e, em seguida, coloque o holograma na origem do sistema de coordenadas dessa âncora.

As âncoras espaciais locais são fáceis e eficientes de criar. O sistema combina 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 funciona se o usuário estiver perto da â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 caminhar até esse holograma distante, ele será grande em sua visão, tornando óbvios os efeitos do braço de alavanca da origem da âncora distante.

Agrupe hologramas que devem formar um cluster rígido

Vários hologramas podem 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 um 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 personagem andando por uma sala ou uma interface do usuário flutuante que segue ao longo da parede perto do usuário, é melhor ignorar as âncoras espaciais locais e renderizar esses hologramas diretamente no sistema de coordenadas fornecido pelo quadro de referência estacionário. No Unity, você consegue isso colocando hologramas diretamente nas coordenadas do mundo sem um WorldAnchor. Hologramas em um quadro de referência estacionário podem sofrer desvio quando o usuário está longe do holograma. Mas é menos provável que isso seja perceptível para hologramas dinâmicos: ou o holograma está constantemente se movendo de qualquer maneira ou seu movimento o mantém constantemente perto do usuário, onde o desvio 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 de referência estacionário para coincidir com o canhão no sistema de coordenadas ancorado do primeiro 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 atinge o outro castelo, você pode movê-la para o sistema de coordenadas ancoradas do segundo castelo para permitir cálculos físicos com os corpos rígidos desse castelo.

Se você estiver compartilhando um holograma altamente dinâmico entre dispositivos, escolha alguma âncora espacial de nuvem para atuar como pai, pois 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 descarte uma grade regular de âncoras espaciais à medida que o usuário caminha, fazendo a transição de objetos dinâmicos de âncora para âncora à medida que eles se movem. No entanto, isso envolve mais gerenciamento para sua aplicação, 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 de referência estacionário, conforme descrito na seção acima. Ao pré-posicionar um conjunto de âncoras espaciais de nuvem em torno de um espaço estático, considere colocar as âncoras espaciais nos locais dos hologramas de chave que o usuário encontra 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 subjacentes do sensor 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 âncoras locais que você precisa encontrar novamente em sessões futuras. Recomendamos removê-los da loja quando 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 seus usuários não precisarão da âncora novamente.

Confira também