Dane wejściowe spojrzenia

Spojrzenie na dane wejściowe w aplikacjach rzeczywistości mieszanej polega na tym, aby dowiedzieć się, na co patrzą twoi użytkownicy. Gdy kamery do śledzenia oczu na urządzeniu pasują do promieni w przestrzeni świata Unreal, linia wzroku użytkownika staje się dostępna. Spojrzenie może być używane zarówno w strategiach, jak i C++, i jest podstawową funkcją dla mechaniki, takich jak interakcja z obiektami, sposób znajdowania i kontrolek aparatu.

Włączanie śledzenia oczu

  • W obszarze Project Settings HoloLens (Ustawienia > projektu HoloLens) włącz funkcję wprowadzania danych wejściowych w usłudze Gaze :

Zrzut ekranu przedstawiający możliwości ustawień projektu HoloLens z wyróżnionymi danymi wejściowymi spojrzenia

  • Tworzenie nowego aktora i dodawanie go do sceny

Uwaga

Śledzenie oczu HoloLens w Unreal ma tylko jeden ray wzroku dla obu oczu. Śledzenie stereoskopowe, które wymaga dwóch promieni, nie jest obsługiwane.

Korzystanie ze śledzenia oczu

Najpierw sprawdź, czy urządzenie obsługuje śledzenie oczu za pomocą funkcji IsEyeTrackerConnected . Jeśli funkcja zwróci wartość true, wywołaj metodę GetGazeData , aby znaleźć, gdzie oczy użytkownika patrzą w bieżącej ramce:

Strategia połączonej funkcji Is Eye Tracking

Uwaga

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

Użyj źródła spojrzenia i kierunku w śladzie linii, aby dowiedzieć się dokładnie, gdzie szukają użytkownicy. Wartość spojrzenia jest wektorem, zaczynając od źródła spojrzenia i kończąc na początku oraz kierunku spojrzenia pomnożonego przez odległość śledzenia linii:

Strategia funkcji Pobierz dane spojrzenia

Uzyskiwanie orientacji głowy

Można również użyć obrotu wyświetlacza zamontowanego na głowę (HMD), aby reprezentować kierunek głowy użytkownika. Możesz uzyskać wskazówki dla użytkowników bez włączania funkcji wprowadzania spojrzenia, ale nie uzyskasz ż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 unreal 4.26 i nowszych.

Strategia funkcji Get HMDData

Korzystanie z języka C++

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

Zrzut ekranu przedstawiający aktora z otwartym oknem aktora miejsca

  • W pliku EyeTracker.cpp dodaj funkcje dołączania dla funkcji EyeTrackerFunctionLibrary i DrawDebugHelpers:
#include "EyeTrackerFunctionLibrary.h"
#include "DrawDebugHelpers.h"

Sprawdź, czy urządzenie obsługuje śledzenie oczu za pomocą polecenia UEyeTrackerFunctionLibrary::IsEyeTrackerConnected przed próbą pobrania danych wzroku. Jeśli śledzenie oczu jest obsługiwane, znajdź początek i koniec promienia dla śladu linii z UEyeTrackerFunctionLibrary::GetGazeData. Stamtąd możesz skonstruować wektor spojrzenia i przekazać jego zawartość do lineTraceSingleByChannel , aby debugować 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 programowania

Jeśli śledzisz określoną przez nas podróż dewelopera Unreal, jesteś w środku eksplorowania podstawowych bloków konstrukcyjnych zestawu narzędzi MRTK. W tym miejscu możesz przejść do następnego bloku konstrukcyjnego:

Możesz też przejść do Mixed Reality możliwości platformy i interfejsów API:

Zawsze możesz wrócić do punktów kontrolnych programowania Unreal w dowolnym momencie.

Zobacz też