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.
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.