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