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