Conceitos do World Locking Tools

O problema

No mundo físico do dia a dia, o espaço é bem descrito por um sistema de coordenadas estacionárias. Um objeto sem movimento em um sistema de coordenadas estacionárias 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 com um deslocamento fixo um do outro.

Essas leis e outras semelhantes são uma parte tão fundamental da existência que, quando elas não estiverem mais em vigor, a intuição sobre o mundo não será confiável.

Soluções anteriores

O espaço de coordenadas global do Unity e as âncoras espaciais abordam diferentes aspectos dos problemas causados por imprecisões e descompasso do sensor.

O espaço de coordenadas global do Unity fornece um quadro de referência estável no qual os objetos holográficos permanecem fixos entre si. Embora os objetos nesse espaço se comportem de modo consistente entre si, a consistência com o mundo físico não é garantida, nem geralmente fornecida. As inconsistências ocorrem especialmente quando o usuário está se movendo.

As âncoras espaciais do Unity podem manter a posição de um holograma no mundo físico quando o usuário está se movendo, mas isso sacrifica a consistência interna no mundo virtual. Âncoras diferentes se movem constantemente em relação umas as outras. Eles também passam pelo espaço de coordenadas global, dificultando tarefas simples como o layout e causando problemas na simulação física.

A origem do problema

Essa discussão focará na tecnologia do HoloLens, mas esses conceitos se aplicam de modo geral a técnicas de acompanhamento interno sem marcador, especialmente conforme são aumentadas pelos sistemas de inércia.

O HoloLens é incrível para determinar onde ele está em relação aos recursos visíveis no seu ambiente. Consequentemente, também é incrível posicionando outros objetos virtuais com base nesses mesmos recursos visíveis. Quando o usuário está sentado ou em uma posição praticamente constante, o dispositivo é ótimo para registrar objetos virtuais com pontos de referência físicos visíveis. Uma xícara virtual posicionada em uma mesa física geralmente permanecerá no mesmo ponto na superfície da mesa.

Nesse momento, o HoloLens é confinado no mesmo volume pequeno, com um conjunto constante de recursos visíveis em exibição para referência. Mas há outros cenários interessantes.

Quando o usuário se levanta e se move pela sala ou até mesmo entre salas, o HoloLens precisa alternar entre os recursos antigos que estão saindo da exibição e os novos que estão sendo exibidos. Sem detalhar a implementação, fica claro ver que, durante o trânsito, a precisão do rastreamento será muito degradada.

Veja aqui um cenário simplificado para mais contexto.

Ilustração

O usuário está no ponto A. Há muitos bons recursos de referência visíveis ao redor, portanto, a qualidade de rastreamento da cabeça é excelente e todos os hologramas posicionados permanecerão no lugar.

Em seguida, o usuário percorre 10 metros no espaço físico para o ponto B, mas o rastreamento em trânsito tem menos fidelidade, portanto, depois que o usuário atinge o ponto B, o dispositivo registra que ele percorreu apenas 9 metros. Esse é um valor grande e uniforme para fins de ilustração, mas que está consistente com as especificações do dispositivo, que permitem um erro de distância de +-10% nesse caso.

Conforme o dispositivo olha ao redor no ponto B, bons recursos visíveis são registrados. O rastreamento e a estabilidade dos hologramas no ponto B também são excelentes.

Embora o usuário esteja em um ponto específico, os objetos ao redor desse ponto são ótimos. Mas há uma inconsistência. Os 10 metros entre os pontos A e B no espaço físico são equivalentes a apenas 9 metros no espaço virtual. Isso é geralmente conhecido como "o problema de escala", embora "problema de distância" seja um termo mais preciso. Examinaremos esse problema em breve.

Voltando ao nosso cenário: na próxima ação, o usuário volta para o ponto A. Dessa vez, os erros de rastreamento fazem com que a caminhada de 10 metros de B para A no espaço físico seja equivalente a 10,5 metros no espaço virtual. Isso significa que a movimentação completa de A para B corresponde a uma distância efetiva de 1,5 metros, quando deveria ser de 0,0 metros. Esse é um problema óbvio. Um holograma posicionado no ponto A antes da movimentação agora aparecerá 1,5 metros distante do ponto A.

As âncoras espaciais podem ajudar nesse aspecto. Após ir e voltar ao ponto B, o sistema reconhece que ele está de volta no ponto A, mas as coordenadas do Unity da cabeça foram alteradas em 1,5 metros. Mas se o holograma no ponto A tiver uma âncora espacial anexada, ela poderá imaginar "Estou no ponto A, a cabeça está no ponto A, mas minhas coordenadas diferem das coordenadas da cabeça em 1,5 metros. Basta alterar minhas coordenadas em 1,5 metros para que os pontos fiquem alinhados novamente." E uma âncora espacial no ponto C, um metro à esquerda do usuário, está passando pelo mesmo processo. A âncora espacial redefine constantemente onde o ponto A está no espaço do Unity para que as coordenadas da cabeça estejam sempre certas. E cada âncora espacial faz esse ajuste de modo independente para seu lugar no mundo físico.

World Locking Tools para o Unity

O World Locking Tools mantem um fornecimento interno de âncoras espaciais que ele espalha à medida que o usuário se movimenta. Ele analisa as coordenadas da câmera e as âncoras espaciais a cada quadro. Ele detecta quando todas essas âncoras espaciais estão movendo mais de 1,5 metros para corresponder às coordenadas da cabeça e diz "Em vez de alterar as coordenadas de tudo para compensar que a cabeça está com coordenadas diferentes da última vez em que ela esteve aqui, basta consertar as coordenadas da cabeça."

Isso significa que, em vez da âncora espacial arrastar um holograma pelo espaço do Unity para que ele permaneça fixo no espaço físico, todo o espaço do Unity está bloqueado para o espaço físico. Se um holograma não estiver em movimento no espaço do Unity, ele permanecerá sem movimento em relação aos recursos do mundo físico ao seu redor. E, mais importante que isso, ele permanecerá fixo em relação aos recursos virtuais ao seu redor.

Obviamente, isso é mais complicado nos bastidores. Por exemplo, lembre-se de que um problema com as âncoras espaciais é que elas se movem de modo independente, portanto nem sempre estão de acordo umas com as outras. O mecanismo FrozenWorld subjacente arbitra esses desacordos para realizar a correção mais correta possível da câmera e faz isso em todos os quadros.

O problema de escala novamente

Se o usuário passar do ponto A para o ponto B e voltar para o ponto A, o sistema terá informações suficientes para consertar o descompasso que ocorreu em trânsito. Ele pode não saber onde fica o ponto B (e geralmente não sabe exatamente onde qualquer ponto B é relativo ao ponto A), mas sabe se ele está no ponto A ou não. Quando ele volta ao ponto A, ele espera que tudo esteja como ele deixou. Se não estiverem, o sistema poderá fazer isso.

Mas e no ponto B? Ele pensou que a caminhada de 10 metros fosse apenas de 9 metros. E não tem como saber se os 9 metros estão corretos e, se não estiverem, qual é a diferença. As âncoras espaciais não ajudam nesse caso. Elas apresentam o mesmo problema que o rastreador de cabeça; cada um sabe onde está no mundo físico (em relação aos recursos visíveis), mas uma âncora espacial não sabe nada sobre outra âncora espacial. Nomeadamente, as âncoras espaciais não sabem a distância entre si.

Isso pode ser inconveniente de várias formas, mas torna-se um problema de bloqueio quando objetos, ou sistemas de objetos, são maiores do que um metro. Considere o modelo de uma sala, um prédio, um conjunto de mesas ou até mesmo um carro. Embora uma âncora espacial possa manter uma extremidade do modelo registrada com um recurso do mundo físico, no momento em que a outra extremidade do modelo for atingida, um erro significativo poderá ocorrer. A outra extremidade não será alinhada corretamente. E o erro será diferente entre dispositivos e, possivelmente, até mesmo entre execuções no mesmo dispositivo.

Até agora nesta discussão, as informações mínimas necessárias para consertar o problema não foram apresentadas.

O World Locking Tools aborda esse problema com a API de Marcadores de Espaço, 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 os hologramas grandes fiquem alinhados ao mundo físico.

Visão geral do sistema básico

Agora que tivemos uma visão geral dos conceitos do World Locking Tools, vamos voltar e analisar o sistema básico. Saber quais serviços a operação de linha de base fornece, ajudará você a determinar o uso adequado de conceitos avançados posteriormente e se essas técnicas avançadas são necessárias para um aplicativo específico.

Confira também