Gaze — MRTK2
Gaze é uma forma de entrada que interage com o mundo com base no local onde o utilizador está a olhar. O olhar existe em dois sabores diferentes
Olhar para a cabeça
Este tipo de olhar é baseado na direção para a qual a cabeça/câmara está a olhar. O olhar atento está ativo em sistemas que não suportam olhar para os olhos ou em casos em que o hardware possa suportar o olhar atento, mas o conjunto certo de permissões e configuração não foi executado.
Normalmente, o olhar para a cabeça está associado às interações de estilo do HoloLens 1 que envolvem olhar para o objeto ao colocá-lo no centro da Moldura Holográfica e, em seguida, ao fazer o gesto de toque de ar.
Olhar para os olhos
Este tipo de olhar é baseado no aspeto dos olhos do utilizador. O olhar atento só está presente em sistemas que suportam o controlo ocular. Veja a documentação de controlo ocular para obter mais detalhes sobre como utilizar o olhar atento.
GazeProvider
A funcionalidade gaze (cabeça e olho) é fornecida pelo GazeProvider. Este fornecedor pode ser configurado na secção Ponteiro do perfil do sistema de entrada:
Tal como outras origens de entrada, o fornecedor de olhares fixos interage com objetos no cenário através da utilização de um ponteiro (consulte este documento para obter informações sobre ponteiros).
No caso do fornecedor de gazes, o respetivo ponteiro é implementado através InternalGazePointer
do e não é configurado através de um perfil.
É possível substituir o gazeProvider de stock por uma implementação alternativa ao alterar o Tipo de Fornecedor de Gaze para referenciar uma classe diferente que implementa IMixedRealityGazeProvider e IMixedRealityEyeGazeProvider. Geralmente, recomenda-se a utilização do gazeProvider de stock (e problemas de arquivamento no ao encontrar erros) uma vez que voltar a implementar o GazeProvider não é trivial.
Poses de olhar alternativo fornecidas pela plataforma
Por predefinição, o GazeProvider do MRTK utiliza o centro da moldura da câmara como a origem do olhar. Algumas plataformas, como Windows Mixed Reality no HoloLens 2, fornecem uma pose de olhar em alternativa definida. Isto é gerido através da Use Head Gaze Override
definição nas definições de olhar atento. Quando ativada, será utilizada a substituição de olhar alternativo. Quando desativada, será utilizada a origem do centro de molduras predefinida. Especificamente, por HoloLens 2, o ângulo de olhar será elevado vários graus para explicar o conforto do utilizador em usar a cabeça para filtrar.
Utilização
Como obter o alvo de olhar atual
Este exemplo mostra como obter o objeto de jogo atual que é visado pelo olhar do utilizador.
void LogCurrentGazeTarget()
{
if (CoreServices.InputSystem.GazeProvider.GazeTarget)
{
Debug.Log("User gaze is currently over game object: "
+ CoreServices.InputSystem.GazeProvider.GazeTarget)
}
}
Como obter a direção e a origem do olhar atual
Este exemplo mostra como obter o Vector3 que representa a direção do olhar do utilizador e a origem (o ponto a partir do qual a direção está a ir).
void LogGazeDirectionOrigin()
{
Debug.Log("Gaze is looking in direction: "
+ CoreServices.InputSystem.GazeProvider.GazeDirection);
Debug.Log("Gaze origin is: "
+ CoreServices.InputSystem.GazeProvider.GazeOrigin);
}