Estabilidade do holograma

Para alcançar hologramas estáveis, HoloLens tem um pipeline de estabilização de imagem incorporado. O gasoduto de estabilização funciona automaticamente em segundo plano, pelo que não é necessário tomar quaisquer medidas adicionais para o ativar. No entanto, deve exercitar técnicas que melhorem a estabilidade do holograma e evitem cenários que reduzam a estabilidade.

Terminologia de qualidade do holograma

A qualidade dos hologramas é o resultado de um bom ambiente e de um bom desenvolvimento de aplicações. As aplicações que executam a uma temperatura constante de 60 fotogramas por segundo num ambiente onde HoloLens podem rastrear o ambiente garantem que o holograma e o sistema de coordenadas correspondentes estão sincronizados. Do ponto de vista do utilizador, os hologramas que se destinam a ser estacionários não se movem em relação ao ambiente.

A seguinte terminologia pode ajudá-lo quando estiver identificando problemas com o ambiente, taxas de renderização inconsistentes ou baixas, ou qualquer outra coisa.

  • A precisão. Uma vez que o holograma é bloqueado mundialmente e colocado no mundo real, ele deve ficar onde é colocado em relação ao ambiente circundante e independente do movimento do utilizador ou pequenas e escassas mudanças ambientais. Se um holograma aparecer mais tarde num local inesperado, é um problema de precisão. Tais cenários podem acontecer se dois quartos distintos parecerem idênticos.
  • O nervosismo. Os utilizadores observam o nervosismo como agitação de alta frequência de um holograma, o que pode acontecer quando o rastreio do ambiente se degrada. Para os utilizadores, a solução está a funcionar a sintonização do sensor.
  • O Judder. Baixas frequências de renderização resultam em movimentos irregulares e imagens duplas de hologramas. Judder é especialmente percetível em hologramas com movimento. Os desenvolvedores precisam manter um constante 60 FPS.
  • À deriva. Os utilizadores vêem a deriva como um holograma parece afastar-se do local onde foi originalmente colocado. A deriva acontece quando se colocam hologramas longe das âncoras espaciais, particularmente em partes não mapeadas do ambiente. Criar hologramas perto de âncoras espaciais diminui a probabilidade de deriva.
  • O salto. Quando um holograma "pops" ou "salta" para longe da sua localização ocasionalmente. O salto pode ocorrer à medida que o rastreio ajusta hologramas para corresponder à compreensão atualizada do seu ambiente.
  • Nadar. Quando um holograma parece balançar correspondendo ao movimento da cabeça do utilizador. Natação ocorre quando a aplicação não tem totalmente implementado reprojecção, e se o HoloLens não estiver calibrado para o utilizador atual. O utilizador pode refazer a aplicação de calibração para corrigir o problema. Os desenvolvedores podem atualizar o plano de estabilização para aumentar ainda mais a estabilidade.
  • Separação de cores. Os ecrãs em HoloLens são ecrãs sequenciais de cores, que piscam canais de cor de vermelho-verde-azul-verde-a 60 Hz (campos de cores individuais são mostrados a 240 Hz). Sempre que um utilizador rastreia um holograma em movimento com os olhos, as bordas principais e de fuga do holograma separam-se nas suas cores constituintes, produzindo um efeito arco-íris. O grau de separação depende da velocidade do holograma. Em alguns casos mais raros, mover a cabeça rapidamente enquanto olha para um holograma estacionário também pode resultar num efeito arco-íris, que é chamado de separação de cores.

Taxa de fotogramas

A taxa de fotogramas é o primeiro pilar da estabilidade do holograma. Para que os hologramas pareçam estáveis no mundo, cada imagem apresentada ao utilizador deve ter os hologramas desenhados no local correto. Os ecrãs em HoloLens refrescar 240 vezes por segundo, mostrando quatro campos de cores separados para cada imagem recém-renderizada, resultando numa experiência de utilizador de 60 FPS (quadros por segundo). Para proporcionar a melhor experiência possível, os desenvolvedores de aplicações devem manter 60 FPS, o que se traduz em fornecer consistentemente uma nova imagem ao sistema operativo a cada 16 milissegundos.

60 FPS Para desenhar hologramas para parecer que estão sentados no mundo real, HoloLens precisa de fazer imagens da posição do utilizador. Uma vez que a renderização de imagens leva tempo, HoloLens prevê onde estará a cabeça de um utilizador quando as imagens são mostradas nos ecrãs. No entanto, este algoritmo de previsão é uma aproximação. HoloLens tem hardware que ajusta a imagem renderizada para explicar a discrepância entre a posição da cabeça prevista e a posição real da cabeça. O ajuste faz com que a imagem que o utilizador vê apareça como se fosse renderizada a partir da localização correta, e os hologramas sentem-se estáveis. As atualizações de imagem funcionam melhor com pequenas alterações, e não consegue corrigir completamente certas coisas na imagem renderizada como o paralaxe de movimento.

Ao renderizar a 60 FPS, está a fazer três coisas para ajudar a fazer hologramas estáveis:

  1. Minimizar a latência geral entre renderizar uma imagem e essa imagem ser vista pelo utilizador. Num motor com um jogo e um fio de renderização a correr em lockstep, correr a 30FPS pode adicionar 33,3 ms de latência extra. A redução da latência diminui o erro de previsão e aumenta a estabilidade do holograma.
  2. Tornando-o para que cada imagem que chegue aos olhos do utilizador tenha uma quantidade consistente de latência. Se render a 30 fps, o visor ainda exibe imagens a 60 FPS, o que significa que a mesma imagem será exibida duas vezes seguidas. O segundo quadro terá mais 16,6 ms de latência do que o primeiro quadro e terá de corrigir uma quantidade mais pronunciada de erro. Esta inconsistência na magnitude do erro pode causar judder de 60 Hz indesejado.
  3. Reduzindo o aparecimento de judder, que é caracterizado por movimentos irregulares e imagens duplas. Movimento mais rápido do holograma e taxas de renderização mais baixas estão associados a judder mais pronunciado. Tentar manter sempre 60 FPS ajudará a evitar o judder para um determinado holograma em movimento.

Consistência da taxa de fotogramas A consistência da taxa de fotogramas é tão importante como um quadro-quadro alto por segundo. Ocasionalmente, quadros abandonados são inevitáveis para qualquer aplicação rica em conteúdos, e o HoloLens implementa alguns algoritmos sofisticados para recuperar de falhas ocasionais. No entanto, um framerate constantemente flutuante é muito mais percetível para um utilizador do que correr consistentemente a taxas de fotogramas mais baixas. Por exemplo, uma aplicação que se rendere suavemente para cinco quadros (60 FPS durante a duração destes cinco quadros) e, em seguida, cai todos os outros quadros para os próximos 10 quadros (30 FPS durante a duração destes 10 quadros) vai parecer mais instável do que uma aplicação que consistentemente renderiza a 30 FPS.

Numa nota relacionada, o sistema operativo acelera as aplicações para 30 FPS quando a captura de realidade mista está em execução.

Análise de desempenho Existem diferentes tipos de ferramentas que podem ser usadas para comparar a sua taxa de fotogramas de aplicação, tais como:

  • GPUView
  • debugger gráficos de Visual Studio
  • Perfis incorporados em motores 3D, como a Unidade

Holograma render distâncias

O sistema visual humano integra múltiplos sinais dependentes da distância quando se fixa e foca-se num objeto.

  • Alojamento - O foco de um olho individual.
  • Convergência - Dois olhos movendo-se para dentro ou para fora para centro em um objeto.
  • Visão binocular - Disparidades entre as imagens do olho esquerdo e direito que dependem da distância de um objeto do seu ponto de fixação.
  • Sombreamento, tamanho angular relativo e outras pistas monoculares (olho único).

A convergência e o alojamento são únicos porque as suas pistas extra-retinais relacionadas com a forma como os olhos mudam para perceber objetos a diferentes distâncias. Na visualização natural, a convergência e o alojamento estão ligados. Quando os olhos vêem algo próximo (por exemplo, o seu nariz), os olhos cruzam-se e acomodam-se a um ponto próximo. Quando os olhos vêem algo no infinito, os olhos tornam-se paralelos e o olho acomoda-se ao infinito.

Os utilizadores que usam HoloLens acomodarão sempre 2,0 m para manter uma imagem clara porque os ecrãs HoloLens são fixados a uma distância ótica de aproximadamente 2,0 m de distância do utilizador. Os desenvolvedores de aplicações controlam onde os olhos dos utilizadores convergem colocando conteúdo e hologramas em várias profundidades. Quando os utilizadores acomodam e convergem para distâncias diferentes, a ligação natural entre as duas pistas é quebrada, o que pode levar a desconforto visual ou fadiga, especialmente quando a magnitude do conflito é grande.

O desconforto do conflito de alojamentos pode ser evitado ou minimizado mantendo o conteúdo convergente o mais próximo possível de 2,0 m (isto é, numa cena com muita profundidade, as áreas de interesse perto de 2,0 m, quando possível). Quando o conteúdo não pode ser colocado perto de 2,0 m, o desconforto do conflito vergence-alojamento é maior quando o olhar do utilizador para trás e para a frente entre distâncias diferentes. Por outras palavras, é muito mais confortável olhar para um holograma estacionário que fica a 50 cm de distância do que olhar para um holograma a 50 cm de distância que se move para dentro e para longe de si ao longo do tempo.

Colocar o conteúdo a 2,0 m também é vantajoso porque os dois ecrãs são projetados para se sobreporem totalmente a esta distância. Para imagens colocadas fora deste avião, à medida que se movem para fora do lado da moldura holográfica, aparecerão de um ecrã enquanto ainda são visíveis do outro. Esta rivalidade binocular pode ser disruptiva para a perceção de profundidade do holograma.

Distância ideal para colocar hologramas do utilizador

Distância ideal para colocar hologramas do utilizador

Clip Planes Para o máximo conforto, recomendamos que o corte se torne a distância de renderização a 85 cm com desvanecimento do conteúdo a partir de 1 m. Em aplicações onde hologramas e utilizadores estão ambos estacionários, os hologramas podem ser vistos confortavelmente a cerca de 50 cm. Nesses casos, as aplicações devem colocar um plano de clip não inferior a 30 cm e desaparecer devem começar a partir de pelo menos 10 cm do plano de grampo. Sempre que o conteúdo esteja mais próximo ou mais próximo do que 85 cm, é importante garantir que os utilizadores não se aproximem frequentemente ou se afastem dos hologramas ou que os hologramas não se aproximem frequentemente ou se afastem do utilizador, uma vez que estas situações são mais prováveis de causar desconforto devido ao conflito entre o tipo de alojamento. O conteúdo deve ser concebido para minimizar a necessidade de interação a mais de 85 cm do utilizador, mas quando o conteúdo deve ser renderizado mais de 85 cm, uma boa regra do polegar para os desenvolvedores é desenhar cenários onde os utilizadores e/ou hologramas não se movem em profundidade mais de 25% do tempo.

Melhores práticas Quando os hologramas não podem ser colocados a 2 m e os conflitos entre a convergência e o alojamento não podem ser evitados, a zona ideal para a colocação do holograma é entre 1,25 m e 5 m. Em todos os casos, os designers devem estruturar o conteúdo para incentivar os utilizadores a interagirem a 1+ m de distância (por exemplo, ajustar o tamanho do conteúdo e os parâmetros de colocação predefinidos).

Reprojecção

HoloLens tem uma sofisticada técnica de estabilização holográfica assistida por hardware conhecida como reprojecção. A reprojecção tem em conta o movimento e a mudança do ponto de vista (CameraPose) à medida que a cena anima e o utilizador move a cabeça. As aplicações devem tomar ações específicas para melhor utilizar a reprojecção.

Existem quatro tipos principais de reprojecção

  • Reprojecção de profundidade: Produz os melhores resultados com o menor esforço da aplicação. Todas as partes da cena renderizada são estabilizadas independentemente com base na distância do utilizador. Alguns artefactos de renderização podem ser visíveis onde há mudanças acentuadas na profundidade. Esta opção só está disponível nos auscultadores HoloLens 2 e imersivos.
  • Reprojecção planar: Permite à aplicação um controlo preciso sobre a estabilização. Um avião é definido pela aplicação e tudo no avião será a parte mais estável da cena. Quanto mais longe um holograma estiver longe do avião, menos estável será. Esta opção está disponível em todas as plataformas MR Windows.
  • Reprojecção automática do Planar: O sistema define um plano de estabilização utilizando informações no tampão de profundidade. Esta opção está disponível na HoloLens geração 1 e HoloLens 2.
  • Nenhuma: Se a aplicação não fizer nada, a Reprojecção planar é utilizada com o plano de estabilização fixado a 2 metros na direção do olhar da cabeça do utilizador, normalmente produzindo resultados de baixo padrão.

As aplicações devem tomar ações específicas para permitir os diferentes tipos de reprojecção

  • Reprojecção de profundidade: A aplicação submete o seu tampão de profundidade ao sistema para cada quadro renderizado. On Unitity, A Reprojecção de Profundidade é feita com a opção Tampão de Profundidade Partilhada no painel de Windows Mixed Reality Definições sob a Gestão de Plugins XR. As aplicações DirectX chamam CommitDirect3D11DepthBuffer. A aplicação não deve ligar para SetFocusPoint.
  • Reprojecção planar: Em cada quadro, as aplicações dizem ao sistema a localização de um avião para estabilizar. As aplicações de unidade chamam SetFocusPointForFrame e devem ter o Tampão de Profundidade Partilhado desativado. As aplicações DirectX ligam para o SetFocusPoint e não devem ligar para o CommitDirect3D11DepthBuffer.
  • Reprojecção automática do Planar: Para ativar, a aplicação necessita de submeter o seu tampão de profundidade ao sistema, tal como fariam para a Reprojecção de Profundidade. As aplicações que utilizam o Mixed Reality Toolkit (MRTK) podem configurar o fornecedor de definições de câmara para utilizar a Reprojecção AutoPlanar. As aplicações nativas devem definir DepthReprojectionMode o DepthReprojectionMode em AutoPlanar cada quadro. Para HoloLens geração 1, a aplicação não deve ligar para SetFocusPoint.

Escolher a Técnica de Reprojecção

Tipo de Estabilização Auscultadores imersivos HoloLens geração 1 HoloLens 2
Reprojecção de profundidade Recomendado N/D Recomendado

As aplicações de unidade devem utilizar a Unidade 2018.4.12+, Unidade 2019.3+ ou Unidade 2020.3+. Caso contrário, utilize reprojecção automática do planar.
Reprojecção automática do Planar N/D Padrão recomendado Recomendado se a reprojecção de profundidade não estiver a dar os melhores resultados

Recomenda-se a utilização de Unidade 2018.4.12+, Unidade 2019.3+ ou Unidade 2020.3+. As versões anteriores da Unidade funcionarão com resultados de reprojecção ligeiramente degradados.
Reprojecção planar Não Recomendado Recomendado se o Planar Automático não estiver a dar os melhores resultados Use se nenhuma das opções de profundidade der os resultados desejados

Verificar a profundidade está definido corretamente

Quando um método de reprojecção utiliza o tampão de profundidade, é importante verificar o conteúdo do tampão de profundidade que representa a cena renderizada da aplicação. Vários fatores podem causar problemas. Se houver uma segunda câmara usada para tornar as sobreposições da interface do utilizador, por exemplo, é provável que substitua toda a informação de profundidade a partir da vista real. Os objetos transparentes muitas vezes não definem profundidade. Alguma renderização de texto não definirá profundidade por defeito. Haverá falhas visíveis na renderização quando a profundidade não corresponder aos hologramas renderizados.

HoloLens 2 tem um visualizador para mostrar onde está e não está a ser definida a profundidade, o que pode ser ativado a partir do Portal do Dispositivo. No separador DeEstabilidade do Holograma Vistas, selecione a visualização da profundidade do Visor na caixa de verificação dos auscultadores. As áreas que têm profundidade definida corretamente serão azuis. Os itens renderizados que não têm conjunto de profundidade são marcados a vermelho e precisam de ser corrigidos.

Nota

A visualização da profundidade não aparecerá na Captura de Realidade Mista. Só é visível através do dispositivo.

Algumas ferramentas de visualização de GPU permitirão visualizar o tampão de profundidade. Os desenvolvedores de aplicações podem usar estas ferramentas para garantir que a profundidade está a ser definida corretamente. Consulte a documentação das ferramentas do requerimento.

Usando a Reprojecção planar

Nota

Para os auscultadores imersivos no ambiente de trabalho, a configuração de um plano de estabilização é geralmente contraproducente, uma vez que oferece menos qualidade visual do que fornecer o tampão de profundidade da sua aplicação ao sistema para permitir uma reprojecção baseada em profundidade por pixel. A menos que esteja a funcionar num HoloLens, deve geralmente evitar a fixação do plano de estabilização.

Plano de estabilização para objetos 3D

O dispositivo tentará automaticamente escolher este plano, mas a aplicação deve ajudar selecionando o ponto de foco na cena. As aplicações de unidade que executam num HoloLens devem escolher o melhor ponto de foco baseado na sua cena e passá-la para SetFocusPoint(). Um exemplo de definição do ponto de focagem no DirectX está incluído no modelo de cubo de rotação padrão.

A Unidade submeterá o seu tampão de profundidade para Windows para permitir a reprojecção por pixel quando executar a sua aplicação num auricular imersivo ligado a um PC de secretária, que proporciona ainda melhor qualidade de imagem sem trabalho explícito por parte da aplicação. Só deve fornecer um Ponto de Foco quando a sua aplicação estiver a funcionar numa HoloLens, ou a reprojecção por pixel será ultrapassada.

// SetFocusPoint informs the system about a specific point in your scene to
// prioritize for image stabilization. The focus point is set independently
// for each holographic camera.
// You should set the focus point near the content that the user is looking at.
// In this example, we put the focus point at the center of the sample hologram,
// since that is the only hologram available for the user to focus on.
// You can also set the relative velocity and facing of that content; the sample
// hologram is at a fixed point so we only need to indicate its position.
renderingParameters.SetFocusPoint(
    currentCoordinateSystem,
    spinningCubeRenderer.Position
    );

A colocação do ponto de foco depende em grande parte do que o holograma está a ver. A aplicação tem o vetor de gaze para referência e o designer de aplicações sabe que conteúdo querem que o utilizador observe.

A coisa mais importante que um desenvolvedor pode fazer para estabilizar hologramas é renderizar a 60 FPS. Descer abaixo de 60 FPS reduzirá drasticamente a estabilidade do holograma, qualquer que seja a otimização do plano de estabilização.

Melhores práticas Não há uma maneira universal de configurar o plano de estabilização e é específico da aplicação. A nossa principal recomendação é experimentar e ver o que funciona melhor para o seu cenário. No entanto, tente alinhar o plano de estabilização com o máximo de conteúdo possível porque todo o conteúdo deste plano está perfeitamente estabilizado.

Por exemplo:

  • Se tiver apenas conteúdo planar (aplicação de leitura, aplicação de reprodução de vídeo), alinhe o plano de estabilização com o plano que tem o seu conteúdo.
  • Se existem três pequenas esferas que estão bloqueadas no mundo, faça o plano de estabilização "cortar" embora os centros de todas as esferas que estão atualmente na visão do utilizador.
  • Se a sua cena tiver conteúdo em profundidades substancialmente diferentes, favoreça mais objetos.
  • Certifique-se de ajustar o ponto de estabilização de cada quadro para coincidir com o holograma que o utilizador está a analisar

Coisas a evitar O plano de estabilização é uma ótima ferramenta para alcançar hologramas estáveis, mas se usado de forma abusiva pode resultar em forte instabilidade da imagem.

  • Não "atire e esqueça". Pode acabar com o plano de estabilização atrás do utilizador ou ligado a um objeto que já não está na visão do utilizador. Certifique-se de que o plano de estabilização normal está definido em frente à câmara (por exemplo, -camera.forward)
  • Não mude rapidamente o plano de estabilização para trás e para a frente entre extremos
  • Não deixe o plano de estabilização definido para uma distância/orientação fixa
  • Não deixe que o plano de estabilização corte através do utilizador
  • Não desente no ponto de foco quando estiver a correr num PC de secretária em vez de um HoloLens e, em vez disso, confie na reprojecção baseada em profundidade por pixel.

Separação de cores

Devido à natureza das exibições HoloLens, um artefacto chamado "separação de cores" pode por vezes ser percebido. Manifesta-se como a imagem que se separa em cores base individuais - vermelho, verde e azul. O artefacto pode ser especialmente visível ao exibir objetos brancos, uma vez que têm grandes quantidades de vermelho, verde e azul. É mais pronunciado quando um utilizador rastreia visualmente um holograma que se move através da moldura holográfica a alta velocidade. Outra forma que o artefacto pode manifestar é deformação/deformação de objetos. Se um objeto tiver alto contraste e/ou cores puras como vermelho, verde, azul, separação de cores será visto como deformação de diferentes partes do objeto.

Exemplo do que a separação de cores de um cursor redondo branco fechado à cabeça pode parecer como um utilizador gira a cabeça para o lado:

Exemplo do que a separação de cores de um cursor redondo branco fechado pode parecer como um utilizador gira a cabeça para o lado.

Embora seja difícil evitar completamente a separação de cores, existem várias técnicas disponíveis para atenuá-la.

A separação de cores pode ser vista em:

  • Objetos que se movem rapidamente, incluindo objetos com a cabeça fechada, como o cursor.
  • Objetos que estão substancialmente longe do plano de estabilização.

Para atenuar os efeitos da separação de cores:

  • Faça o objeto atrasar o olhar do utilizador. Deve parecer que tem alguma inércia e está ligado ao olhar "nas molas". Esta abordagem atrasa o cursor (reduzindo a distância de separação) e coloca-o atrás do provável ponto de observação do utilizador. Desde que se recupere rapidamente quando o utilizador deixa de mudar de olhar, parece natural.
  • Se quiser mover um holograma, tente manter a sua velocidade de movimento abaixo dos 5 graus/segundo se espera que o utilizador o siga com os olhos.
  • Use luz em vez de geometria para o cursor. Uma fonte de iluminação virtual anexada ao olhar será entendida como um ponteiro interativo, mas não causará a separação de cores.
  • Ajuste o plano de estabilização para combinar com os hologramas que o utilizador está a observar.
  • Faça o objeto vermelho, verde ou azul.
  • Mude para uma versão desfocada do conteúdo. Por exemplo, um cursor branco redondo pode ser alterado para uma linha ligeiramente desfocada orientada na direção do movimento.

Como antes, renderizar a 60 FPS e definir o plano de estabilização são as técnicas mais importantes para a estabilidade do holograma. Se enfrentar uma separação de cores percetível, certifique-se primeiro de que a taxa de fotogramas vai ao encontro das expectativas.

Ver também