Blickindata

Blickinmatning i appar med mixad verklighet handlar om att ta reda på vad användarna tittar på. När ögonspårningskamerorna på enheten överensstämmer med bilder i Unreals världrymd blir användarens synområdesdata tillgängliga. Blick kan användas i både skisser och C++, och är en grundläggande funktion för mekanik som objektinteraktion, sätt att hitta och kamerakontroller.

Aktivera ögonspårning

  • I Project Inställningar HoloLensdu funktionen Blickindata:

Skärmbild av HoloLens för projektinställningar med blickindata markerade

  • Skapa en ny skådespelare och lägg till den i din scen

Anteckning

HoloLens ögonspårning i Unreal har bara en enda blick ray för båda ögonen. Stereospårning, som kräver två ljud, stöds inte.

Använda ögonspårning

Kontrollera först att enheten stöder ögonspårning med funktionen IsTrackTrackerConnected. Om funktionen returnerar true anropar du GetGazeData för att ta reda på var användarens ögon tittar på i den aktuella ramen:

Skiss av funktionen Is Eye Tracking Connected

Anteckning

Korrigeringspunkten och konfidensvärdet är inte tillgängliga på HoloLens.

Använd blickens ursprung och riktning i en linjespå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 på ursprunget plus blickriktningen multiplicerat med linjespårningsavståndet:

Skiss av funktionen Hämta blickdata

Hämta huvudorientering

Du kan också använda rotationen av den huvudmonterade skärmen (HMD) för att representera riktningen på användarens huvud. Du kan få användarnas huvudriktning utan att aktivera funktionen Blickinmatning, men du får ingen information om ögonspårningen. 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 framåt.

Skiss för funktionen Get HMDData

Använda C++

  • I spelets build.cs-fil lägger du till EyeTracker i listan PublicDependencyModuleNames:
PublicDependencyModuleNames.AddRange(
    new string[] {
        "Core",
        "CoreUObject",
        "Engine",
        "InputCore",
        "EyeTracker"
});
  • I File/ New C++ Class (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:

Skärmbild av en aktör med plats aktörsfönstret öppet

  • I EyeTracker.cpplägger du till includes för EyeTrackerFunctionLibraryoch DrawDebugHelpers:
#include "EyeTrackerFunctionLibrary.h"
#include "DrawDebugHelpers.h"

Kontrollera att enheten stöder ögonspårning med UTrackTrackerFunctionLibrary::IsTrackerConnected innan du försöker hämta några blickdata. Om ögonspårning stöds hittar du början och slutet av en ray för en linjespårning från UTrackTrackerFunctionLibrary::GetGazeData. Därifrån kan du skapa en blickvektor och skicka dess innehåll till LineTraceSingleByChannel för att felsöka eventuella resultat från en ray-träff:

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);
            }
        }
    }
}

Kontrollpunkt för nästa utveckling

Om du följer den Unreal-utvecklingsresa som vi har tagit fram är du i färd med att utforska MRTK-kärnbyggstenarna. Härifrån kan du fortsätta till nästa byggblock:

Eller gå Mixed Reality plattformsfunktioner och API:er:

Du kan alltid gå tillbaka till kontrollpunkterna för Unreal-utveckling när som helst.

Se även