Sdílet prostřednictvím


Vstup pohledu

Vstup pohledu v aplikacích pro hybridní realitu spočívá v tom, že zjistíte, na co se uživatelé dívají. Když se kamery sledování očí na vašem zařízení shodují s paprsky v unrealově světovém prostoru, budou k dispozici data pohledu uživatele. Funkce Gaze se dá použít v podrobných plánech i v jazyce C++ a je základní funkcí pro mechaniky, jako je interakce objektů, hledání cest a ovládání kamery.

Povolení sledování očí

  • V nastavení > projektu HoloLens povolte funkci Vstup pohledu :

Snímek obrazovky s možnostmi nastavení projektu HoloLens se zvýrazněným pohledem

  • Vytvoření nového objektu actor a jeho přidání do scény

Poznámka

Sledování očí HoloLens v Unreal má pouze jeden pohledu pro obě oči. Stereoskopické sledování, které vyžaduje dva paprsky, není podporováno.

Použití sledování očí

Nejprve zkontrolujte, jestli vaše zařízení podporuje sledování očí pomocí funkce IsEyeTrackerConnected . Pokud funkce vrátí hodnotu true, zavolejte GetGazeData a zjistěte, kam se v aktuálním snímku dívají oči uživatele:

Podrobný plán funkce Is Eye Tracking Connected

Poznámka

Bod fixace a hodnota spolehlivosti nejsou v HoloLensu k dispozici.

Pomocí počátku a směru pohledu v trasování čar můžete zjistit, kde přesně vaši uživatelé hledají. Hodnota pohledu je vektor, který začíná od počátku pohledu a končí na počátku plus směr pohledu vynásobený vzdáleností trasování čáry:

Podrobný plán funkce Get Gaze Data

Získání orientace hlavy

Můžete také použít otáčení displeje HMD (Head Mounted Display) k reprezentaci směru hlavy uživatele. Bez povolení funkce Vstup pohledu můžete získat směr uživatelů, ale nedostanete žádné informace o sledování očí. Pokud chcete získat správná výstupní data, přidejte odkaz na podrobný plán jako kontext světa:

Poznámka

Získání dat HMD je dostupné jenom v Unreal 4.26 a novějších.

Podrobný plán funkce Get HMDData

Použití jazyka C++

  • Do souboru build.cs hry přidejte EyeTracker do seznamu PublicDependencyModuleNames :
PublicDependencyModuleNames.AddRange(
    new string[] {
        "Core",
        "CoreUObject",
        "Engine",
        "InputCore",
        "EyeTracker"
});
  • V souboru nebo nové třídě jazyka C++ vytvořte nový aktér jazyka C++ s názvem EyeTracker.
    • Řešení sady Visual Studio otevře novou třídu EyeTracker. Sestavením a spuštěním otevřete hru Unreal s novým hercem EyeTrackeru. V okně Umístit herce vyhledejte "EyeTracker" a přetažením třídy do okna hry ji přidejte do projektu:

Snímek obrazovky s hercem s otevřeným oknem umístění actor

  • V souboru EyeTracker.cpp přidejte pro EyeTrackerFunctionLibrary a DrawDebugHelpers:
#include "EyeTrackerFunctionLibrary.h"
#include "DrawDebugHelpers.h"

Než se pokusíte získat data o pohledu, zkontrolujte, jestli vaše zařízení podporuje sledování očí pomocí UEyeTrackerFunctionLibrary::IsEyeTrackerConnected . Pokud je podporováno sledování očí, vyhledejte začátek a konec paprsku pro trasování čar z UEyeTrackerFunctionLibrary::GetGazeData. Odtud můžete vytvořit vektor pohledu a předat jeho obsah do LineTraceSingleByChannel a ladit všechny výsledky 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);
            }
        }
    }
}

Další kontrolní bod vývoje

Pokud sledujete cestu unreal developmentu, kterou jsme nastavili, jste uprostřed zkoumání základních stavebních bloků MRTK. Odtud můžete pokračovat k dalšímu stavebnímu bloku:

Nebo přejděte na Mixed Reality možností a rozhraní API platformy:

K kontrolním bodům unreal development se můžete kdykoli vrátit.

Viz také