Entrada de Olhar

A entrada de olhar para as aplicações de realidade mista tem tudo a ver com descobrir o que os seus utilizadores estão a ver. Quando as câmaras de controlo ocular no seu dispositivo correspondem aos raios no espaço mundial da Unreal, os dados de linha de visão do utilizador ficam disponíveis. O olhar pode ser utilizado tanto em esquemas como em C++, e é uma funcionalidade principal para mecânicas como interação de objetos, localização de formas e controlos de câmara.

Ativar o controlo ocular

  • No HoloLens das Definições > do Projeto, ative a capacidade de Entrada de Olhar :

Captura de ecrã das capacidades de definição do projeto HoloLens com a entrada de olhar realçada

  • Criar um novo ator e adicioná-lo à sua cena

Nota

O controlo ocular do HoloLens em Unreal só tem um único raio de olhar para ambos os olhos. O controlo estereoscópico, que requer dois raios, não é suportado.

Utilizar o controlo ocular

Primeiro, verifique se o seu dispositivo suporta o controlo ocular com a função IsEyeTrackerConnected . Se a função devolver verdadeiro, chame GetGazeData para saber onde os olhos do utilizador estão a ver na moldura atual:

Esquema da função Is Eye Tracking Connected

Nota

O ponto de fixação e o valor de confiança não estão disponíveis no HoloLens.

Utilize a origem e a direção do olhar num rastreio de linhas para saber exatamente onde os seus utilizadores estão a procurar. O valor do olhar é um vetor, começando na origem do olhar e terminando na origem e a direção do olhar multiplicada pela distância de rastreio de linha:

Esquema da função Obter Dados de Olhar

Obter orientação da cabeça

Também pode utilizar a rotação do Head Mounted Display (HMD) para representar a direção da cabeça do utilizador. Pode obter a direção principal dos utilizadores sem ativar a capacidade de Entrada de Olhar, mas não obterá informações de controlo ocular. Adicione uma referência ao esquema como contexto mundial para obter os dados de saída corretos:

Nota

A obtenção de Dados HMD só está disponível no Unreal 4.26 e em diante.

Esquema da função Obter HMDData

Utilizar C++

  • No ficheiro build.cs do seu jogo, adicione EyeTracker à lista PublicDependencyModuleNames :
PublicDependencyModuleNames.AddRange(
    new string[] {
        "Core",
        "CoreUObject",
        "Engine",
        "InputCore",
        "EyeTracker"
});
  • Em Ficheiro/ Nova Classe C++, crie um novo ator C++ chamado EyeTracker
    • Uma solução do Visual Studio abrirá a nova classe EyeTracker. Crie e execute para abrir o jogo Unreal com o novo ator eyeTracker. Procure "EyeTracker" na janela Place Actors e arraste e largue a classe na janela do jogo para adicioná-la ao projeto:

Captura de ecrã de um ator com a janela do ator aberta

  • Em EyeTracker.cpp, adicione inclui para EyeTrackerFunctionLibrary e DrawDebugHelpers:
#include "EyeTrackerFunctionLibrary.h"
#include "DrawDebugHelpers.h"

Verifique se o seu dispositivo suporta o controlo ocular com UEyeTrackerFunctionLibrary::IsEyeTrackerConnected antes de tentar obter dados de olhar. Se o controlo ocular for suportado, localize o início e o fim de um raio para um rastreio de linha de UEyeTrackerFunctionLibrary::GetGazeData. A partir daí, pode construir um vetor de olhar e transmitir os respetivos conteúdos para LineTraceSingleByChannel para depurar quaisquer resultados de ray hit:

void AEyeTracker::Tick(float DeltaTime)
{
    Super::Tick(DeltaTime);

    if(UEyeTrackerFunctionLibrary::IsEyeTrackerConnected())
    {
        FEyeTrackerGazeData GazeData;
        if(UEyeTrackerFunctionLibrary::GetGazeData(GazeData))
        {
            FVector Start = GazeData.GazeOrigin;
            FVector End = GazeData.GazeOrigin + GazeData.GazeDirection * 100;

            FHitResult Hit Result;
            if (GWorld->LineTraceSingleByChannel(HitResult, Start, End, ECollisionChannel::ECC_Visiblity))
            {
                DrawDebugCoordinateSystem(GWorld, HitResult.Location, FQuat::Identity.Rotator(), 10);
            }
        }
    }
}

Próximo Ponto de Verificação de Desenvolvimento

Se está a seguir a jornada de desenvolvimento irreal que fizemos, está no meio de explorar os blocos modulares principais do MRTK. A partir daqui, pode continuar para o bloco modular seguinte:

Em alternativa, avance para Mixed Reality capacidades e APIs da plataforma:

Pode sempre voltar aos pontos de verificação de desenvolvimento irreais em qualquer altura.

Ver também