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