Compartilhar via


Acompanhamento ocular – MRTK3

Visão geral

O acompanhamento ocular é tratado nativamente pelo Sistema de Entrada do Unity, no entanto, o MRTK3 fornece auxiliares úteis para facilitar a adição de acompanhamento ocular.

Por padrão, o MRTK XR Rig pré-fabricado já tem o controlador de foco do MRTK3. Se você não estiver usando MRTK XR Rig e quiser usar o controlador de foco do MRTK3, adicione o MRTK Gaze Controller pré-fabricado à cena do Unity.

O pré-fabricado do controlador de foco do MRTK tem um Controlador XR do Unity e um Interagente que se associa à entrada de foco com os olhos e a cabeça do Unity. As ações do controlador são configuradas para que o olhar seja favorecido sobre o foco da cabeça. Se o olhar estiver desabilitado, não configurado ou não calibrado, o controlador usará a pose de foco de cabeça. Para obter mais detalhes sobre como as associações de ação do controlador de foco do MRTK3 foram configuradas, consulte o ativo do Unity de Ações de Entrada Padrão do MRTK incluído.

Imagem mostrando as configurações de ação de foco dentro do ativo do Unity da Ação de Entrada Padrão do MRTK.

Importante

Se você quiser habilitar o acompanhamento ocular ao usar o OpenXR, o Perfil de Interação com o Olhar Deverá ser adicionado à configuração do perfil de interação do OpenXR. Consulte Configurar um novo projeto OpenXR com o MRTK para obter mais informações sobre como definir as configurações do OpenXR no Unity.

Além disso, se você estiver usando o Plataforma Universal do Windows, adicione a funcionalidade GazeInput em Configurações do Projeto > Configurações > de Publicação Funcionalidades>.

Interagente de Foco Difuso

O controlador de foco do MRTK3 foi configurado para usar o FuzzyGazeInteractor, um interagente do Unity que implementa uma técnica de interação de foco difuso em que objetos dentro de um determinado ângulo de cone e intervalo de distância são direcionados e interagidos com base na direção do foco do usuário. O sistema de pontuação ajuda a priorizar possíveis destinos com base em sua adequação para interação.

O script define vários campos e propriedades que controlam o comportamento do interagente de foco. Alguns dos campos importantes incluem:

  • coneAngle: o ângulo no qual os objetos serão considerados para direcionamento por foco.
  • minGazeDistance e maxGazeDistance: as distâncias mínima e máxima nas quais os objetos podem ser direcionados por foco. distanceWeight, angleWeight, distanceToCenterWeight e angleToCenterWeight: pesos atribuídos a critérios diferentes usados para determinar a "pontuação de foco" de um objeto.
  • precision: um valor usado para ajustar a precisão dos raycasts de física de foco difuso.
  • performAdditionalRaycast: um sinalizador que indica se um raycast adicional após o foco ocular é executado para melhorar os resultados da pontuação.
  • precisionCurve: uma curva de animação usada para controlar o nível de precisão com base na distância até o destino.

O script substitui alguns métodos da classe XRRayInteractor base para fornecer sua própria implementação. Os métodos substituídos notáveis incluem:

  • IsHitValid: determina se um clique em um objeto interativo é considerado válido com base nos critérios de ângulo e distância definidos pelos campos coneAngle, minGazeDistance e maxGazeDistance.
  • ScoreHit: pontua uma ocorrência interacionável e sua raycast associada com base na distância, no ângulo de ocorrência de raycast e no ângulo do centro de destino. A pontuação é uma combinação de fatores ponderados.
  • ConecastScoreCompare: compara as ocorrências de raycast por suas pontuações em ordem crescente.
  • GetValidTargets: recupera os destinos válidos para o interagente de foco com base em ocorrências de raycast e suas pontuações.

Gerenciador de Habitação do Interagente

O controlador de foco do MRTK3 também é configurado com um InteractorDwellManager componente de script. Esse script implementa a seleção baseada em espera em objetos interativos usando o Kit de Ferramentas de Interação XR no Unity. Ele gerencia os temporizadores de espera, dispara a seleção e rastreia o estado de espera de interacionáveis para o interagente especificado. Para utilizar a seleção de foco, o interativo de destino deve ser do StatefulInteractable MRTK3 e ter o Use Gaze Dwell sinalizador definido.

Observação

A seleção baseada em espera não é recomendada quando a entrada de mão ou voz é possível, pois a espera pode levar a ativações de elementos de interface do usuário imprevisíveis ou não intencionais. Os aplicativos ainda podem querer considerar a entrada de espera para acessibilidade ou em cenários em que a entrada de voz e mão não estão disponíveis. Para obter diretrizes de design sobre como usar melhor a visão geral, consulte Olhar e olhar eolhar para a cabeça e olhar para a cabeça.

Depois de entrar no estado de foco, esse interagente continuará selecionando antes que o tempo do gatilho de espera passe, após o qual a seleção é disparada no interativo. As configurações de espera podem ser definidas usando o seguinte:

  • DwellTriggerTime: determina por quanto tempo o interagente permanece selecionando um interativo depois de entrar no estado focalizado.