Blickeingabe

Die Blickeingabe in Mixed Reality-Apps geht es darum, herauszufinden, was Ihre Benutzer sehen. Wenn die Augenverfolgungskameras auf Ihrem Gerät mit Strahlen im Weltraum von Unreal übereinstimmen, wird die Sichtdatenlinie Ihres Benutzers verfügbar. Blick kann sowohl in Blueprints als auch in C++verwendet werden und ist ein Kernfeature für Mechaniker wie Objektinteraktion, Wegsuche und Kamerasteuerelemente.

Aktivieren der Augenverfolgung

  • Aktivieren Sie in Project Einstellungen HoloLens >die Funktion "Blickeingabe":

Screenshot of HoloLens project setting capabilities with gaze input highlighted

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

Hinweis

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

Verwenden von Eye Tracking

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

Blueprint of the Is Eye Tracking Connected function

Hinweis

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

Verwenden Sie den Blickaussprung und die Richtung in einer Linienverfolgung, um genau zu ermitteln, wo Ihre Benutzer suchen. Der Blickwert ist ein Vektor, beginnend mit dem Blick origin und enden auf dem Ursprung und der Blickrichtung, die durch den Zeilenablaufabstand multipliziert wird:

Blueprint of the Get Gaze Data function

Abrufen der Kopfausrichtung

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 Anzeigeeingabefunktion zu aktivieren, aber Sie erhalten keine Augenverfolgungsinformationen. Fügen Sie einen Verweis auf den Blueprint als Weltkontext hinzu, um die richtigen Ausgabedaten abzurufen:

Hinweis

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

Blueprint of the Get HMDData function

Verwenden von C++

  • Fügen Sie in der Build.cs-Datei Ihres Spiels EyeTracker zur Liste "PublicDependencyModuleNames " hinzu:
PublicDependencyModuleNames.AddRange(
    new string[] {
        "Core",
        "CoreUObject",
        "Engine",
        "InputCore",
        "EyeTracker"
});
  • Erstellen Sie in File/ New C++ Class einen neuen C++-Schauspieler namens EyeTracker
    • Eine Visual Studio Lösung öffnet die neue EyeTracker-Klasse. Erstellen und ausführen, um das Unreal-Spiel mit dem neuen EyeTracker-Schauspieler zu öffnen. Suchen Sie im Fenster "Place Actors " nach "EyeTracker", und ziehen Sie die Klasse in das Spielfenster, um es dem Projekt hinzuzufügen:

Screenshot of an actor with the place actor window open

  • Fügen Sie in EyeTracker.cpp die Funktionen "EyeTrackerFunctionLibrary" und "DrawDebugHelpers" hinzu:
#include "EyeTrackerFunctionLibrary.h"
#include "DrawDebugHelpers.h"

Überprüfen Sie, ob Ihr Gerät Die Augenverfolgung mit UEyeTrackerFunctionLibrary::IsEyeTrackerConnected unterstützt, bevor Sie versuchen, blickdaten zu erhalten. Wenn die Augenverfolgung unterstützt wird, suchen Sie den Anfang und das Ende eines Strahls für eine Linienverfolgung von UEyeTrackerFunctionLibrary::GetGazeData. Von dort aus können Sie einen Blickvektor erstellen und den Inhalt an LineTraceSingleByChannel übergeben, um alle Ray-Trefferergebnisse 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