Gaze-invoer

Gaze-invoer in mixed reality-apps draait allemaal om erachter te komen waar uw gebruikers naar kijken. Wanneer de oogtraceringscamera's op uw apparaat overeenkomen met stralen in de wereldruimte van Unreal, worden de gezichtslijngegevens van uw gebruiker beschikbaar. Gaze kan worden gebruikt in zowel blauwdrukken als C++, en is een kernfunctie voor mechanica zoals objectinteractie, manier van zoeken en camerabesturingselementen.

Oogtracering inschakelen

  • Schakel in Projectinstellingen > HoloLens de mogelijkheid Gaze-invoer in :

Schermopname van mogelijkheden voor het instellen van HoloLens-projecten met blikinvoer gemarkeerd

  • Een nieuwe actor maken en deze toevoegen aan uw scène

Notitie

HoloLens oogtracering in Unreal heeft slechts één blikstraal voor beide ogen. Stereoscopische tracering, waarvoor twee stralen zijn vereist, wordt niet ondersteund.

Oogtracering gebruiken

Controleer eerst of uw apparaat oogtracering ondersteunt met de functie IsEyeTrackerConnected . Als de functie true retourneert, roept u GetGazeData aan om te bepalen waar de ogen van de gebruiker naar kijken in het huidige frame:

Blauwdruk van de verbonden functie Is Eye Tracking

Notitie

Het fixatiepunt en de betrouwbaarheidswaarde zijn niet beschikbaar op HoloLens.

Gebruik de oorsprong en richting van de blik in een lijntracering om precies te achterhalen waar uw gebruikers naar op zoek zijn. De staarwaarde is een vector, beginnend bij de oorsprong van de blik en eindigend bij de oorsprong plus de gazerichting vermenigvuldigd met de lijntraceringsafstand:

Blauwdruk van de functie Gaze-gegevens ophalen

Richting van hoofd

U kunt ook de draaiing van het Head Mounted Display (HMD) gebruiken om de richting van het hoofd van de gebruiker weer te geven. U kunt de gebruikers richting geven zonder de functie Gaze-invoer in te schakelen, maar u krijgt geen oogtraceringsinformatie. Voeg een verwijzing naar de blauwdruk toe als de wereldcontext om de juiste uitvoergegevens op te halen:

Notitie

Het ophalen van HMD-gegevens is alleen beschikbaar in Unreal 4.26 en hoger.

Blauwdruk van de functie GET HMDData

C++ gebruiken

  • Voeg in het bestand build.cs van uw game EyeTracker toe aan de lijst PublicDependencyModuleNames :
PublicDependencyModuleNames.AddRange(
    new string[] {
        "Core",
        "CoreUObject",
        "Engine",
        "InputCore",
        "EyeTracker"
});
  • Maak in file/new C++ class een nieuwe C++-actor met de naam EyeTracker
    • Met een Visual Studio-oplossing wordt de nieuwe EyeTracker-klasse geopend. Bouw en voer uit om de Unreal-game te openen met de nieuwe EyeTracker-actor. Zoek naar 'EyeTracker' in het venster Place Actors en sleep de klasse naar het gamevenster om deze toe te voegen aan het project:

Schermopname van een actor met het venster Plaats actor geopend

  • Voeg in EyeTracker.cpp includes toe voor EyeTrackerFunctionLibrary en DrawDebugHelpers:
#include "EyeTrackerFunctionLibrary.h"
#include "DrawDebugHelpers.h"

Controleer of uw apparaat oogtracering ondersteunt met UEyeTrackerFunctionLibrary::IsEyeTrackerConnected voordat u eventuele gazegegevens probeert op te halen. Als oogtracering wordt ondersteund, zoekt u het begin en einde van een straal voor een lijntracering van UEyeTrackerFunctionLibrary::GetGazeData. Van daaruit kunt u een staarvector maken en de inhoud ervan doorgeven aan LineTraceSingleByChannel om fouten op te sporen in de resultaten van een raytreffer:

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);
            }
        }
    }
}

Controlepunt volgende ontwikkeling

Als u het Unreal-ontwikkelingstraject volgt dat we hebben uitgetekend, bent u bezig met het verkennen van de basisbouwstenen van MRTK. Vanaf hier kunt u doorgaan naar de volgende bouwsteen:

Of ga naar Mixed Reality platformmogelijkheden en API's:

U kunt altijd op elk gewenst moment teruggaan naar de controlepunten voor Unreal-ontwikkeling .

Zie ook