Compartilhar via


Entrada de Foco

A entrada de foco em aplicativos de realidade misturada é sobre descobrir o que seus usuários estão olhando. Quando as câmeras de rastreamento ocular em seu dispositivo correspondem a raios no espaço mundial do Unreal, os dados de linha de visão do usuário ficam disponíveis. O foco pode ser usado em blueprints e C++e é um recurso principal para a mecânica, como interação de objeto, localização de maneira e controles de câmera.

Habilitando o acompanhamento ocular

  • No HoloLens configurações > do projeto, habilite a funcionalidade Entrada de Foco :

Captura de tela das funcionalidades de configuração do projeto do HoloLens com a entrada de foco realçada

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

Observação

O rastreamento ocular do HoloLens no Unreal tem apenas um raio de foco para ambos os olhos. Não há suporte para o acompanhamento estereoscópico, que requer dois raios.

Como usar o acompanhamento ocular

Primeiro, verifique se o dispositivo dá suporte ao acompanhamento ocular com a função IsEyeTrackerConnected . Se a função retornar true, chame GetGazeData para descobrir onde os olhos do usuário estão olhando no quadro atual:

Blueprint da função Is Eye Tracking Connected

Observação

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

Use a origem e a direção do foco em um rastreamento de linha para descobrir exatamente onde os usuários estão procurando. O valor de foco é um vetor, começando na origem do foco e terminando na origem, além da direção do foco multiplicada pela distância de rastreamento de linha:

Blueprint da função Obter Dados de Foco

Obtendo orientação da cabeça

Você também pode usar a rotação do HMD (Head Mounted Display) para representar a direção da cabeça do usuário. Você pode obter a direção da cabeça dos usuários sem habilitar a funcionalidade de Entrada de Foco, mas não obterá nenhuma informação de acompanhamento ocular. Adicione uma referência ao blueprint como o contexto do mundo para obter os dados de saída corretos:

Observação

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

Blueprint da função Get HMDData

Usando C++

  • No arquivo build.cs do jogo, adicione EyeTracker à lista PublicDependencyModuleNames :
PublicDependencyModuleNames.AddRange(
    new string[] {
        "Core",
        "CoreUObject",
        "Engine",
        "InputCore",
        "EyeTracker"
});
  • Em Arquivo/ 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 do EyeTracker. Pesquise "EyeTracker" na janela Colocar atores e arraste e solte a classe na janela do jogo para adicioná-la ao projeto:

Captura de tela de um ator com a janela de ator do local aberta

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

Verifique se o dispositivo dá suporte ao rastreamento ocular com UEyeTrackerFunctionLibrary::IsEyeTrackerConnected antes de tentar obter dados de foco. Se houver suporte para rastreamento ocular, localize o início e o fim de um raio para um rastreamento de linha de UEyeTrackerFunctionLibrary::GetGazeData. A partir daí, você pode construir um vetor de foco e passar seu conteúdo para LineTraceSingleByChannel para depurar qualquer resultado de ocorrência de raio:

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á seguindo o percurso de desenvolvimento do Unreal que estabelecemos, você está no meio da exploração dos principais blocos de construção do MRTK. Deste ponto, você pode prosseguir para o próximo bloco de construção:

Ou vá diretamente para as funcionalidades e APIs da plataforma de Realidade Misturada:

Você sempre pode voltar para os pontos de verificação de desenvolvimento do Unreal a qualquer momento.

Veja também