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 :
- 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:
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:
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.
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:
- 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.