Megosztás a következőn keresztül:


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:

Képernyőkép a HoloLens projektbeállítási képességeiről, kiemelve a tekintet bemeneté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:

Az Is Eye Tracking Connected függvény tervrajza

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:

A Tekintetadatok lekérése függvény tervrajza

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 Get HMDData függvény tervrajza

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:

Képernyőkép egy szereplőről, amelyen a hely aktorablaka meg van nyitva

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

Lásd még