Staren van invoer

Staren naar mixed reality apps gaat over het vinden van wat uw gebruikers zien. Wanneer de camera's voor het bijhouden van de camera's op uw apparaat overeenkomen met de rönden in de wereldruimte van Unreal, worden de gezichtslijngegevens van uw gebruiker beschikbaar. Staren kan worden gebruikt in zowel blauwdrukken als C++, en is een kernfunctie voor mechanismen zoals objectinteractie, zoekacties en camerabesturingselementen.

Oogtracking inschakelen

  • Schakel in Project Instellingen > HoloLens de mogelijkheid Staren-invoer in:

Schermopname van HoloLens projectinstellingsmogelijkheden met staringsinvoer gemarkeerd

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

Notitie

HoloLens in Unreal heeft slechts één staringsfoto voor beide ogen. Stereoscopische tracering, waarvoor twee rönen zijn vereist, wordt niet ondersteund.

Oogtracking gebruiken

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

Blauwdruk van de functie Is Eye Tracking Connected

Notitie

Het fixatiepunt en de betrouwbaarheidswaarde zijn niet beschikbaar op HoloLens.

Gebruik de starende oorsprong en richting in een lijn-traceer om precies te weten te komen waar uw gebruikers naar op zoek zijn. De staringwaarde is een vector, beginnend bij de herkomst van de staring en eindigend bij de oorsprong plus de staringrichting vermenigvuldigd met de lijn traceerafstand:

Blauwdruk van de functie Get Star Data

Hoofdstand krijgen

U kunt ook de rotatie van de HMD (Head Mounted Display) gebruiken om de richting van het hoofd van de gebruiker weer te geven. U kunt de gebruikers de richting op sturen zonder de mogelijkheid Stareninvoer in te stellen, maar u krijgt geen informatie over het volgen van de ogen. Voeg een verwijzing naar de blauwdruk toe als de wereldcontext om de juiste uitvoergegevens op te halen:

Notitie

Het verkrijgen van HMD-gegevens is alleen beschikbaar in Unreal 4.26 en nieuwer.

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 Bestand/ Nieuwe C++-klasse een nieuwe C++-actor met de naam EyeTracker
    • Met Visual Studio oplossing wordt de nieuwe EyeTracker-klasse geopend. Bouw en voer uit om de Game Van Derek te openen met de nieuwe EyeTracker-actor. Zoek naar 'EyeTracker' in het venster Actors plaatsen en sleep de klasse naar het gamevenster om deze toe te voegen aan het project:

Schermopname van een actor met het venster place actor geopend

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

Controleer of uw apparaat oogtracking ondersteunt met UEyeTrackerFunctionLibrary::IsEyeTrackerConnected voordat u staringsgegevens probeert op te halen. Als oogtracking wordt ondersteund, gaat u naar het begin en einde van een straal voor een lijn tracering vanuit UEyeTrackerFunctionLibrary::GetGazeData. Van hieruit kunt u een starenvector maken en de inhoud ervan doorgeven aan LineTraceSingleByChannel om fouten op te sporen in de resultaten van een ray-hit:

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

Volgende controlepunt voor ontwikkeling

Als u het Ontwikkelingsproces voor De Ontwikkeling van Den Zonderen volgt dat we hebben bespraken, bent u bezig met het verkennen van de bouwstenen van de MRTK. Hier kunt u doorgaan naar de volgende bouwsteen:

Of ga naar Mixed Reality platformmogelijkheden en API's:

U kunt altijd teruggaan naar de Controlepunten voor ontwikkeling van De Ontwikkeling van Unreal.

Zie ook