Dane wejściowe spojrzenia

Spojrzenie na dane wejściowe w aplikacjach rzeczywistości mieszanej ma na celu ustalenie, na co patrzą użytkownicy. Gdy kamery śledzące wzrok na urządzeniu pasują do promieni w świecie Unreala, dane dotyczące linii widzenia użytkownika stają się dostępne. Spojrzenie może być używane zarówno w strategiach, jak i w języku C++, i jest podstawową funkcją mechaniki, na przykład interakcji z obiektami, znajdowania sposobu i kontrolek aparatu.

Włączanie śledzenia wzroku

  • W Project Ustawienia > HoloLens włącz możliwość wprowadzania danych przez spojrzenie:

Zrzut ekranu przedstawiający HoloLens ustawień projektu z wyróżnionymi wejściami w spojrzeniach

  • Tworzenie nowego aktora i dodawanie go do sceny

Uwaga

HoloLens wzroku w programie Unreal ma tylko jedno spojrzenie na oba wzroki. Śledzenie stereoskopowe, które wymaga dwóch promieni, nie jest obsługiwane.

Korzystanie ze śledzenia wzroku

Najpierw sprawdź, czy urządzenie obsługuje śledzenie wzroku za pomocą funkcji IsTrackerConnected. Jeśli funkcja zwróci wartość true, wywołaj funkcję GetGazeData, aby dowiedzieć się, na co patrzą oczy użytkownika w bieżącej ramce:

Strategia funkcji Is Eye Tracking Connected

Uwaga

Punkt naprawy i wartość ufności nie są dostępne na HoloLens.

Użyj źródła i kierunku spojrzenia w śladzie linii, aby dowiedzieć się dokładnie, gdzie szukają Twoich użytkowników. Wartość spojrzenia jest wektorem rozpoczynającym się od źródła spojrzenia i kończącym się na pochodzeniu oraz kierunku spojrzenia pomnożonym przez odległość śledzenia linii:

Strategia funkcji Get Gaze Data

Uzyskiwanie orientacji głowy

Można również użyć obrotu ekranu zainstalowanego na head (HMD) w celu reprezentowania kierunku głowy użytkownika. Możesz kierować się użytkownikami bez włączania możliwości wprowadzania spojrzenia, ale nie otrzymasz żadnych informacji o śledzeniu wzroku. Dodaj odwołanie do strategii jako kontekst świata, aby uzyskać poprawne dane wyjściowe:

Uwaga

Pobieranie danych HMD jest dostępne tylko w programie Unreal 4.26 i jego wersjach.

Strategia funkcji Get HMDData

Korzystanie z języka C++

  • W pliku build.cs gry dodaj pozycję EyeTracker do listy PublicDependencyModuleNames:
PublicDependencyModuleNames.AddRange(
    new string[] {
        "Core",
        "CoreUObject",
        "Engine",
        "InputCore",
        "EyeTracker"
});
  • W pliku/nowej klasie C++ utwórz nowego aktora języka C++ o nazwie EyeTracker
    • Rozwiązanie Visual Studio otworzy nową klasę EyeTracker. Skompilowanie i uruchomienie w celu otwarcia gry Unreal z nowym aktorem EyeTracker. Wyszukaj ciąg "EyeTracker" w oknie Place Actors, a następnie przeciągnij i upuść klasę w oknie gry, aby dodać ją do projektu:

Zrzut ekranu przedstawiający aktora z otwartym oknem aktora miejsca

  • W walidatorze EyeTracker.cpp dodaj elementy includes dla funkcji EyeTrackerFunctionLibrary i DrawDebugHelpers:
#include "EyeTrackerFunctionLibrary.h"
#include "DrawDebugHelpers.h"

Przed podjęciem próby uzyskania danych o spojrzeniu sprawdź, czy urządzenie obsługuje śledzenie wzroku za pomocą funkcji UTrackTrackerFunctionLibrary::IsTrackerConnected. Jeśli śledzenie oczu jest obsługiwane, znajdź początek i koniec promienia dla śladu linii z lokalizacji UTrackTrackerFunctionLibrary::GetGazeData. W tym miejscu możesz utworzyć wektor spojrzenia i przekazać jego zawartość do linetraceSingleByChannel, aby debugować wszystkie wyniki trafień promienia:

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

Następny punkt kontrolny rozwoju

Jeśli podążasz za nierealistyczną podróżą dewelopera, jesteś w trakcie eksplorowania podstawowych bloków konstrukcyjnych MRTK. W tym miejscu możesz przejść do następnego bloku:

Lub przejdź do Mixed Reality i interfejsów API platformy:

Zawsze możesz wrócić do punktów kontrolnych tworzenia unreal w dowolnym momencie.

Zobacz też