Invoer van blik

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

Oogtracering inschakelen

  • Schakel in Project Instellingen > HoloLens de functie Gaze Input in:

Screenshot of HoloLens project setting capabilities with gaze input highlighted

  • 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 nodig zijn, wordt niet ondersteund.

Oogtracering gebruiken

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

Blueprint of the Is Eye Tracking Connected function

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 op zoek zijn. De gazewaarde is een vector, beginnend bij de oorsprong van de blik en eindigend bij de oorsprong plus de richting van de blik vermenigvuldigd met de lijntraceringsafstand:

Blueprint of the Get Gaze Data function

Hoofdstand krijgen

U kunt ook de draaiing van de 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 invoerfunctie Gaze in te schakelen, maar u krijgt geen informatie over het volgen van de ogen. Voeg een verwijzing naar de blauwdruk toe als wereldcontext om de juiste uitvoergegevens op te halen:

Notitie

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

Blueprint of the Get HMDData function

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
    • Een Visual Studio oplossing opent de nieuwe EyeTracker-klasse. Bouw en voer uit om het Unreal-spel te openen met de nieuwe EyeTracker-actor. Zoek 'EyeTracker' in het venster Place Actors en sleep en zet de klasse neer in het gamevenster om deze toe te voegen aan het project:

Screenshot of an actor with the place actor window open

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

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

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

Volgend controlepunt voor ontwikkeling

Als u het Unreal-ontwikkelingstraject volgt dat we hebben opgesteld, bevindt u zich midden in het verkennen van de basisbouwstenen van MRTK. 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 unreal development checkpoints .

Zie ook