Input sguardo fisso
L'input dello sguardo fisso nelle app di realtà mista è tutto ciò che gli utenti stanno esaminando. Quando le telecamere di tracciamento oculare del dispositivo corrispondono ai raggi nello spazio globale di Unreal, i dati della linea di vista dell'utente diventano disponibili. Lo sguardo fisso può essere usato sia nei progetti che in C++, ed è una funzionalità di base per meccanismi come l'interazione con oggetti, la ricerca e i controlli della fotocamera.
Abilitazione del tracciamento oculare
- In Impostazioni > progetto HoloLens abilitare la funzionalità Di input sguardo fisso :
- Creare un nuovo attore e aggiungerlo alla scena
Nota
Il tracciamento oculare di HoloLens in Unreal ha un solo raggio sguardo fisso per entrambi gli occhi. Il tracciamento stereoscopico, che richiede due raggi, non è supportato.
Uso del tracciamento oculare
Verificare innanzitutto che il dispositivo supporti il tracciamento oculare con la funzione IsEyeTrackerConnected . Se la funzione restituisce true, chiamare GetGazeData per trovare dove si trovano gli occhi dell'utente nel frame corrente:
Nota
Il punto di correzione e il valore di attendibilità non sono disponibili in HoloLens.
Usare l'origine e la direzione dello sguardo fisso in una traccia di linea per scoprire esattamente dove stanno cercando gli utenti. Il valore dello sguardo fisso è un vettore, a partire dall'origine dello sguardo fisso e termina con l'origine più la direzione dello sguardo fisso moltiplicata per la distanza di traccia della linea:
Ottenere l'orientamento della testa
È anche possibile usare la rotazione del display montato head (HMD) per rappresentare la direzione della testa dell'utente. È possibile ottenere la direzione di direzione degli utenti senza abilitare la funzionalità Di input sguardo fisso, ma non si otterranno informazioni sul tracciamento oculare. Aggiungere un riferimento al progetto come contesto globale per ottenere i dati di output corretti:
Nota
Il recupero dei dati HMD è disponibile solo in Unreal 4.26 e versioni successive.
Utilizzo di C++
- Nel file build.cs del gioco aggiungere EyeTracker all'elenco PublicDependencyModuleNames :
PublicDependencyModuleNames.AddRange(
new string[] {
"Core",
"CoreUObject",
"Engine",
"InputCore",
"EyeTracker"
});
- In File/ Nuova classe C++ creare un nuovo attore C++ denominato EyeTracker
- Una soluzione di Visual Studio aprirà la nuova classe EyeTracker. Crea ed esegui per aprire il gioco Unreal con il nuovo attore EyeTracker. Cercare "EyeTracker" nella finestra Place Actors e trascinare la classe nella finestra del gioco per aggiungerla al progetto:
- In EyeTracker.cpp aggiungere include per EyeTrackerFunctionLibrary e DrawDebugHelpers:
#include "EyeTrackerFunctionLibrary.h"
#include "DrawDebugHelpers.h"
Verificare che il dispositivo supporti il tracciamento oculare con UEyeTrackerFunctionLibrary::IsEyeTrackerConnected prima di provare a ottenere i dati dello sguardo fisso. Se il tracciamento oculare è supportato, trovare l'inizio e la fine di un raggio per una traccia di linea da UEyeTrackerFunctionLibrary::GetGazeData. Da qui è possibile costruire un vettore di sguardo fisso e passarne il contenuto a LineTraceSingleByChannel per eseguire il debug di qualsiasi risultato 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);
}
}
}
}
Successivo checkpoint di sviluppo
Se si segue il percorso delineato per lo sviluppo con Unreal, tenere presente che si stanno esplorando i blocchi predefiniti fondamentali di MRTK. Da qui è possibile passare al blocco predefinito successivo:
In alternativa, passare alle API e alle funzionalità della piattaforma di realtà mista:
È sempre possibile tornare ai checkpoint per lo sviluppo con Unreal in qualsiasi momento.