Partilhar via


Conceitos de World Locking Tools

O problema

No mundo físico do dia-a-dia, o espaço é bem descrito por um sistema de coordenadas estacionário. Um objeto imóvel em um sistema de coordenadas estacionário continuará tendo as mesmas coordenadas para sempre. Um grupo de objetos dispostos em uma configuração específica manterá essa configuração. Dois objetos que se movem com velocidades idênticas permanecerão em um deslocamento fixo um do outro.

Estas e outras leis semelhantes são uma parte tão básica da existência que, quando deixam de existir, a intuição sobre o mundo torna-se pouco fiável.

Soluções anteriores

O espaço de coordenadas globais e as âncoras espaciais de Unity abordam diferentes aspetos dos problemas causados por imprecisões e desvios de sensores.

O espaço de coordenadas globais de Unity fornece um quadro de referência estável no qual os objetos holográficos permanecem fixos uns em relação aos outros. Embora os objetos neste espaço se comportem consistentemente uns em relação aos outros, a consistência com o mundo físico não é garantida nem geralmente fornecida. Inconsistências se desenvolverão especialmente quando o usuário estiver se movendo.

As âncoras espaciais de Unity podem manter a posição de um holograma no mundo físico quando o usuário é móvel, mas com o sacrifício da autoconsistência dentro do mundo virtual. Diferentes âncoras estão constantemente se movendo umas em relação às outras. Eles também estão se movendo através do espaço de coordenadas globais, tornando tarefas simples como layout difícil e simulação física problemática.

A origem do problema

A discussão aqui se concentrará em torno da tecnologia HoloLens, mas esses conceitos se aplicam geralmente a técnicas de rastreamento sem marcadores de dentro para fora, especialmente aumentadas por sistemas inerciais.

O HoloLens é incrível em determinar onde ele está em relação às características visíveis em seu entorno. Por extensão, também é incrível posicionar outros objetos virtuais com base nessas mesmas características visíveis. Quando o usuário está sentado ou em pé em uma posição aproximadamente constante, o dispositivo é ótimo para manter objetos virtuais registrados com pontos de referência físicos visíveis. Um copo virtual colocado em uma mesa física ficará praticamente no mesmo local na superfície da mesa.

É quando o HoloLens está confinado ao mesmo pequeno volume, com um conjunto constante de características visíveis à vista para referência. Mas há outros cenários interessantes.

Quando o usuário se levanta e se movimenta pela sala, ou possivelmente até mesmo entre salas, o HoloLens deve alternar entre recursos antigos que estão saindo da vista e novos recursos que estão entrando em vista. Sem entrar em detalhes de implementação, é claro ver que, enquanto em trânsito, a precisão de rastreamento será muito degradada.

Aqui está um cenário simplista para o contexto.

Ilustração

O usuário está no ponto A. Olhando ao redor, há muitos bons recursos de referência visíveis, então a qualidade de rastreamento da cabeça é excelente, e qualquer holograma colocado permanecerá colocado.

Em seguida, o usuário caminha 10 metros no espaço físico até o ponto B. Mas o rastreamento em trânsito tem menor fidelidade, então, como resultado, depois que o usuário chega ao ponto B, o dispositivo registra que percorreu apenas 9 metros. Esta é uma grande quantidade uniforme para ilustração, mas é consistente com as especificações do dispositivo, que permitem um erro de distância de +-10% em tal caso.

À medida que o dispositivo olha em volta no ponto B, boas características visíveis são registradas. O rastreamento e a estabilidade dos hologramas no ponto B também são excelentes.

Enquanto o usuário está em um ponto específico, as coisas em torno desse ponto parecem ótimas. Mas há uma incoerência. Os 10 metros entre os pontos A e B no espaço físico são apenas 9 metros no espaço virtual. Isso é muitas vezes referido como "o problema da escala", embora "o problema da distância" possa ser mais preciso. Analisaremos esse problema em breve.

De volta ao nosso cenário: para a próxima ação, o usuário volta para o ponto A. Desta vez, os erros de rastreamento fazem com que a caminhada de 10 metros de B a A no espaço físico some 10,5 metros no espaço virtual. Isso significa que a caminhada completa de A a B a A soma uma distância líquida de 1,5 metro, quando deveria ser de 0,0 metros. Este é um problema óbvio. Um holograma colocado no ponto A antes da caminhada aparecerá agora a 1,5 metros de distância do ponto A.

É aqui que as âncoras espaciais podem ajudar. Depois de caminhar para B e voltar, o sistema reconhece que está de volta ao ponto A, mas as coordenadas Unity da cabeça mudaram em 1,5 metros. Mas se o holograma no ponto A tem uma âncora espacial acoplada, a âncora espacial pode pensar "Estou no ponto A, a cabeça está no ponto A, mas minhas coordenadas diferem das coordenadas da cabeça em 1,5 metros. Vou apenas mudar minhas coordenadas em 1,5 metro para que estejamos de acordo novamente." E uma âncora espacial no ponto C, um metro à esquerda do usuário, está passando pelo mesmo processo. Em essência, a âncora espacial redefine constantemente onde o ponto A está no espaço Unity para que as coordenadas da cabeça estejam sempre certas. E cada âncora espacial faz esse ajuste de forma independente para o seu lugar no mundo físico.

Ferramentas de bloqueio do mundo para Unity

World Locking Tools mantém um fornecimento interno de âncoras espaciais que se espalha à medida que o usuário se move. Ele analisa as coordenadas da câmera e as âncoras espaciais a cada quadro. Ele deteta quando todas essas âncoras espaciais estão se movendo mais de 1,5 metro para corresponder às coordenadas da cabeça, e diz "Hmm, em vez de mudar as coordenadas de tudo no mundo para compensar a cabeça ter coordenadas diferentes da última vez que esteve aqui, vou apenas corrigir as coordenadas da cabeça."

Isso significa que, em vez de ter que ter uma âncora espacial arrastando um holograma através do espaço Unity para que ele permaneça fixo no espaço físico, todo o espaço do mundo Unity está preso ao espaço físico. Se um holograma estiver imóvel no espaço Unity, ele permanecerá imóvel em relação às características do mundo físico ao seu redor. E tão importante quanto, ele permanecerá fixo em relação aos recursos virtuais ao seu redor.

Obviamente é mais complicado debaixo do capô do que isso. Por exemplo, lembre-se que um problema com as âncoras espaciais é que elas se movem de forma independente, então nem sempre concordam umas com as outras. O motor FrozenWorld subjacente arbitra essas discordâncias para chegar à correção de câmera mais perceptualmente correta, e faz isso a cada quadro.

O problema da escala novamente

Se o usuário anda do ponto A ao ponto B e volta ao ponto A, o sistema tem informações suficientes para corrigir o desvio que ocorreu em trânsito. Pode não saber onde está o ponto B (e geralmente não sabe exatamente onde está qualquer ponto B em relação ao ponto A), mas sabe se está no ponto A ou não. Quando voltar ao ponto A, espera que as coisas sejam praticamente como as deixou. Se não estiverem, o sistema pode fazê-lo.

Mas e no ponto B? Pensou que a caminhada de 10 metros era de apenas 9 metros. E não tem como saber se esses 9 metros estão corretos e, se não estiverem, quanto estão desligados. As âncoras espaciais não ajudam aqui. As âncoras espaciais têm o mesmo problema que o rastreador de cabeças; cada um sabe onde está no mundo físico (em relação às características visíveis), mas uma âncora espacial não sabe nada sobre outra âncora espacial. Especificamente, as âncoras espaciais não sabem quão distantes estão.

Isso pode ser inconveniente em muitas formas, mas torna-se um problema de bloqueio quando os objetos, ou sistemas de objetos, são maiores em tamanho do que um metro ou mais. Considere um modelo de uma sala, ou um edifício, ou um conjunto de mesas, ou até mesmo um carro. Enquanto uma âncora espacial pode manter uma extremidade do modelo registrada com um recurso de mundo físico, no momento em que a outra extremidade do modelo é atingida, erros significativos podem ter se acumulado. A outra extremidade não estará alinhada corretamente. E o erro será diferente de dispositivo para dispositivo, e possivelmente até mesmo entre execuções no mesmo dispositivo.

E até agora nesta discussão, as informações mínimas necessárias para corrigir o problema não foram introduzidas.

World Locking Tools resolve esse problema com a API Space Pins , que permite que o aplicativo forneça informações suficientes relacionadas ao mundo físico e holográfico para corrigir os erros na distância percorrida. Isso permite que grandes hologramas apareçam alinhados com o mundo físico em todo o mundo.

Um olhar sobre o sistema básico

Agora que já tivemos uma visão geral dos conceitos das World Locking Tools, vamos dar uma olhada no sistema básico. Entender quais serviços a operação de linha de base fornece e não fornece ajudará você a determinar o uso adequado de conceitos avançados mais tarde e se essas técnicas avançadas são mesmo necessárias para uma aplicação específica.

Consulte também