Gaze-indata
Gaze-indata i appar för mixad verklighet handlar om att ta reda på vad användarna tittar på. När ögonspårningskamerorna på enheten matchar strålar i Unreals världsrymd blir användarens siktdata tillgängliga. Gaze kan användas i både skisser och C++, och är en viktig funktion för mekanik som objektinteraktion, vägsökning och kamerakontroller.
Aktivera ögonspårning
- Aktivera funktionen Gaze Input i Projektinställningar > HoloLens:
- Skapa en ny aktör och lägg till den i din scen
Anteckning
HoloLens ögonspårning i Unreal har bara en enda blickstråle för båda ögonen. Stereoskopisk spårning, som kräver två strålar, stöds inte.
Använda ögonspårning
Kontrollera först att enheten stöder ögonspårning med funktionen IsEyeTrackerConnected . Om funktionen returnerar true anropar du GetGazeData för att ta reda på var användarens ögon tittar på i den aktuella ramen:
Anteckning
Fixeringspunkten och konfidensvärdet är inte tillgängliga på HoloLens.
Använd blickens ursprung och riktning i en radspårning för att ta reda på exakt var användarna letar. Blickvärdet är en vektor, som börjar vid blickens ursprung och slutar vid ursprunget plus blickriktningen multiplicerat med linjespårningsavståndet:
Hämta huvudorientering
Du kan också använda rotationen av HMD (Head Mounted Display) för att representera riktningen på användarens huvud. Du kan få användarnas huvudriktning utan att aktivera funktionen Gaze Input, men du får ingen information om ögonspårning. Lägg till en referens till skissen som världskontext för att hämta rätt utdata:
Anteckning
Att hämta HMD-data är endast tillgängligt i Unreal 4.26 och senare.
Använda C++
- I ditt spels build.cs-fil lägger du till EyeTracker i listan PublicDependencyModuleNames :
PublicDependencyModuleNames.AddRange(
new string[] {
"Core",
"CoreUObject",
"Engine",
"InputCore",
"EyeTracker"
});
- I Fil/ Ny C++-klass skapar du en ny C++-aktör med namnet EyeTracker
- En Visual Studio-lösning öppnar den nya EyeTracker-klassen. Skapa och kör för att öppna Unreal-spelet med den nya EyeTracker-skådespelaren. Sök efter "EyeTracker" i place actors-fönstret och dra och släpp klassen i spelfönstret för att lägga till den i projektet:
- I EyeTracker.cpp lägger du till inkluderar för EyeTrackerFunctionLibrary och DrawDebugHelpers:
#include "EyeTrackerFunctionLibrary.h"
#include "DrawDebugHelpers.h"
Kontrollera att enheten stöder ögonspårning med UEyeTrackerFunctionLibrary::IsEyeTrackerConnected innan du försöker hämta några blickdata. Om ögonspårning stöds hittar du början och slutet av en stråle för en linjespårning från UEyeTrackerFunctionLibrary::GetGazeData. Därifrån kan du skapa en blickvektor och skicka dess innehåll till LineTraceSingleByChannel för att felsöka eventuella ray hit-resultat:
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);
}
}
}
}
Nästa kontrollpunkt för utveckling
Om du följer den Unreal-utvecklingsresa som vi har lagt fram är du mitt uppe i att utforska MRTK-kärnbyggnadsblocken. Härifrån kan du fortsätta till nästa byggblock:
Eller gå till Mixed Reality plattformsfunktioner och API:er:
Du kan alltid gå tillbaka till kontrollpunkterna för Unreal-utveckling när som helst.