Dane wejściowe spojrzenia

Spojrzenie na dane wejściowe w aplikacjach rzeczywistości mieszanej polega na ustaleniu, co użytkownicy oglądają. Gdy kamery śledzenia oczu na urządzeniu są zgodne z promieniami w przestrzeni świata Unreal, dane wzroku użytkownika staną się dostępne. Spojrzenie może być używane zarówno w strategiach, jak i C++, i jest podstawową funkcją dla mechaniki, takich jak interakcja z obiektem, sposób znajdowania i kontrolek aparatu.

Włączanie śledzenia oczu

  • W Project Ustawienia HoloLens >włącz funkcję wprowadzania spojrzenia:

Screenshot of HoloLens project setting capabilities with gaze input highlighted

  • Tworzenie nowego aktora i dodawanie go do sceny

Uwaga

HoloLens śledzenie oczu w Unreal ma tylko jeden wzrok dla obu oczu. Śledzenie steroskopowe, 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źć lokalizację, w której oczy użytkownika patrzą w bieżącej ramce:

Blueprint of the Is Eye Tracking Connected function

Uwaga

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

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

Blueprint of the Get Gaze Data function

Uzyskiwanie orientacji głowy

Można również użyć obrotu wyświetlacza zamontowanego na głowie (HMD), aby reprezentować kierunek głowy użytkownika. Możesz uzyskać wskazówki dla użytkowników bez włączania funkcji wprowadzania opinii, ale nie uzyskasz żadnych informacji śledzenia oczu. 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.

Blueprint of the Get HMDData function

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 obszarze Plik/ Nowa klasa C++ utwórz nowego aktora języka C++ o nazwie EyeTracker
    • Rozwiązanie Visual Studio otworzy nową klasę EyeTracker. Skompiluj i uruchom, aby otworzyć grę Unreal z nowym aktorem EyeTracker. Wyszukaj ciąg "EyeTracker" w oknie Umieść aktorów i przeciągnij i upuść klasę w oknie gry, aby dodać ją do projektu:

Screenshot of an actor with the place actor window open

  • W pliku EyeTracker.cpp dodaj funkcje funkcji EyeTrackerFunctionLibrary i DrawDebugHelpers:
#include "EyeTrackerFunctionLibrary.h"
#include "DrawDebugHelpers.h"

Sprawdź, czy urządzenie obsługuje śledzenie oczu za pomocą funkcji UEyeTrackerFunctionLibrary::IsEyeTrackerConnected przed próbą uzyskania jakichkolwiek danych spojrzenia. Jeśli śledzenie oczu jest obsługiwane, znajdź początek i koniec promienia dla śledzenia linii z UEyeTrackerFunctionLibrary::GetGazeData. W tym miejscu możesz skonstruować 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 programowania

Jeśli obserwujesz określoną przez nas podróż rozwoju 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 nierealnych punktów kontrolnych programowania w dowolnym momencie.

Zobacz też