Tekintet bemenete
A vegyes valóságot használó alkalmazásokban a bemenetek megtekintésének célja annak megállapítása, hogy a felhasználók mit látnak. Amikor az eszközön lévő szemkövető kamerák megegyeznek az Unreal világűrében lévő sugarakkal, a felhasználó látóvonala elérhetővé válik. A tekintet mind a tervekben, mind a C++-ban használható, és a mechanika alapvető funkciója, például az objektumok interakciója, az útkeresés és a kameravezérlők.
A szemkövetés engedélyezése
- A Project Settings > HoloLensben engedélyezze a Tekintet bemenete funkciót:
- Hozzon létre egy új színészt, és adja hozzá a jelenethez
Megjegyzés
A HoloLens szemkövetés az Unrealben csak egyetlen pillantással rendelkezik mindkét szem számára. A két sugarat igénylő sztereoszkopikus nyomkövetés nem támogatott.
Szemkövetés használata
Először ellenőrizze, hogy az eszköz támogatja-e a szemkövetést az IsEyeTrackerConnected függvénnyel. Ha a függvény true (igaz) értéket ad vissza, hívja a GetGazeData függvényt, és keresse meg, hogy a felhasználó szeme hol van az aktuális keretben:
Megjegyzés
A rögzítési pont és a megbízhatósági érték nem érhető el a HoloLensben.
A tekintet eredetét és irányát egy vonalkövetésben használva állapítsa meg, hogy pontosan hol keresnek a felhasználók. A tekintet értéke egy vektor, amely a tekintet eredetétől indul, és a forrásnál végződik, plusz a tekintet iránya és a vonalkövetési távolság szorzata:
Fej tájolásának lekérése
A fejhez csatlakoztatott kijelző (HMD) elforgatásával is megjelenítheti a felhasználó fejének irányát. A Tekintet bemenete funkció engedélyezése nélkül is elérheti a felhasználók irányát, de szemkövetési információkat nem fog kapni. Adjon hozzá egy hivatkozást a tervre világkörnyezetként a megfelelő kimeneti adatok lekéréséhez:
Megjegyzés
A HMD-adatok lekérése csak az Unreal 4.26-ban érhető el és tovább.
A C++ használata
- A játék build.cs fájljában adja hozzá az EyeTrackert a PublicDependencyModuleNames listához:
PublicDependencyModuleNames.AddRange(
new string[] {
"Core",
"CoreUObject",
"Engine",
"InputCore",
"EyeTracker"
});
- A Fájl/ Új C++ osztályban hozzon létre egy új C++ aktort EyeTracker néven
- Egy Visual Studio-megoldás megnyitja az új EyeTracker-osztályt. Hozzon létre és futtassa az Unreal játékot az új EyeTracker-színészrel. Keressen rá a "EyeTracker" kifejezésre a Place Actors ablakban, és húzza az osztályt a játékablakba, és adja hozzá a projekthez:
- Az EyeTracker.cpp fájlban adja hozzá az EyeTrackerFunctionLibrary és a DrawDebugHelpers elemeket:
#include "EyeTrackerFunctionLibrary.h"
#include "DrawDebugHelpers.h"
Ellenőrizze, hogy az eszköz támogatja-e a szemkövetést a UEyeTrackerFunctionLibrary::IsEyeTrackerConnected funkcióval, mielőtt bármilyen tekintetadatot próbálna lekérni. Ha a szemkövetés támogatott, keresse meg a sugár kezdetét és végét a UEyeTrackerFunctionLibrary::GetGazeData vonalkövetéséhez. Innen létrehozhat egy tekintetvektort, és átadhatja annak tartalmát a LineTraceSingleByChannelnek , hogy hibakeresést végezzenek a sugárleképezési eredményekben:
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);
}
}
}
}
Következő fejlesztési ellenőrzőpont
Ha az Általunk meghatározott Unreal fejlesztési utat követi, akkor az MRTK alapvető építőelemeinek felfedezése közben jár. Innen továbbléphet a következő építőelemre:
Vagy ugorjon Mixed Reality platform képességeire és API-ira:
Bármikor visszatérhet az Unreal fejlesztési ellenőrzőpontjaihoz .