Gaze-Eingabe

Bei der Anzeigeeingabe in Mixed Reality-Apps geht es darum, herauszufinden, was Ihre Benutzer sehen. Wenn die Eyetracking-Kameras auf Ihrem Gerät mit Strahlen im Weltraum von Unreal übereinstimmen, werden die Sichtdaten Des Benutzers verfügbar. Blick kann sowohl in Blaupausen als auch in C++ verwendet werden und ist ein Kernfeature für Mechaniken wie Objektinteraktion, Wegesuche und Kamerasteuerelemente.

Aktivieren von Eyetracking

  • Aktivieren Sie unter HoloLens für Projekteinstellungen >die Funktion "Eingabe anvisieren":

Screenshot der HoloLens-Projekteinstellungsfunktionen mit hervorgehobener Blickeingabe

  • Erstellen eines neuen Akteurs und Hinzufügen zu Ihrer Szene

Hinweis

HoloLens Eye tracking in Unreal hat nur einen einzigen Blickstrahl für beide Augen. Die stereoskopische Nachverfolgung, die zwei Strahlen erfordert, wird nicht unterstützt.

Verwenden von Eye Tracking

Überprüfen Sie zunächst, ob Ihr Gerät eyetracking mit der IsEyeTrackerConnected-Funktion unterstützt. Wenn die Funktion true zurückgibt, rufen Sie GetGazeData auf, um zu ermitteln, wo die Augen des Benutzers im aktuellen Frame sehen:

Blaupause der Funktion Is Eye Tracking Connected

Hinweis

Der Fixierungspunkt und der Konfidenzwert sind in HoloLens nicht verfügbar.

Verwenden Sie den Blickursprung und die Richtung in einer Zeilenablaufverfolgung, um herauszufinden, wo Ihre Benutzer genau suchen. Der Anvisierenwert ist ein Vektor, der am Blickursprung beginnt und am Ursprung endet, plus der Blickrichtung multipliziert mit dem Zeilenspurabstand:

Blaupause der Get Gaze Data-Funktion

Kopfausrichtung erhalten

Sie können auch die Drehung des Head Mounted Display (HMD) verwenden, um die Richtung des Kopfes des Benutzers darzustellen. Sie können die Kopfrichtung der Benutzer abrufen, ohne die Funktion "Anvisieren" zu aktivieren, aber Sie erhalten keine Eyetracking-Informationen. Fügen Sie einen Verweis auf die Blaupause als Weltkontext hinzu, um die richtigen Ausgabedaten zu erhalten:

Hinweis

Das Abrufen von HMD-Daten ist nur in Unreal 4.26 und höher verfügbar.

Blaupause der Funktion

Verwenden von C++

  • Fügen Sie in der Datei build.cs Ihres Spiels EyeTracker zur Liste PublicDependencyModuleNames hinzu:
PublicDependencyModuleNames.AddRange(
    new string[] {
        "Core",
        "CoreUObject",
        "Engine",
        "InputCore",
        "EyeTracker"
});
  • Erstellen Sie unter Datei/Neue C++-Klasse einen neuen C++-Akteur namens EyeTracker.
    • Eine Visual Studio-Projektmappe öffnet die neue EyeTracker-Klasse. Erstellen Und ausführen, um das Unreal-Spiel mit dem neuen EyeTracker-Akteur zu öffnen. Suchen Sie im Fenster "Akteure platzieren " nach "EyeTracker", und ziehen Sie die Klasse in das Spielfenster, um sie dem Projekt hinzuzufügen:

Screenshot eines Akteurs mit geöffnetem Fenster

  • Fügen Sie in EyeTracker.cpp includes für EyeTrackerFunctionLibrary und DrawDebugHelpers hinzu:
#include "EyeTrackerFunctionLibrary.h"
#include "DrawDebugHelpers.h"

Überprüfen Sie, ob Ihr Gerät eyetracking mit UEyeTrackerFunctionLibrary::IsEyeTrackerConnected unterstützt, bevor Sie versuchen, Blickdaten abzurufen. Wenn eyetracking unterstützt wird, suchen Sie den Anfang und das Ende eines Strahls für eine Zeilenablaufverfolgung aus UEyeTrackerFunctionLibrary::GetGazeData. Von dort aus können Sie einen Blickvektor erstellen und dessen Inhalt an LineTraceSingleByChannel übergeben, um alle Ergebnisse des Strahltreffers zu debuggen:

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

Nächster Entwicklungsprüfpunkt

Wenn Sie der Unreal-Entwicklungs-Journey folgen, die wir entworfen haben, befinden Sie sich mitten im Kennenlernen der MRTK-Grundbausteine. Von hier aus können Sie mit dem nächsten Baustein fortfahren:

Oder fahren Sie mit den Funktionen und APIs der Mixed Reality-Plattform fort:

Sie können jederzeit zu den Prüfpunkten für die Unreal-Entwicklung zurückkehren.

Siehe auch