Girişi Gaze

Karma gerçeklik uygulamalarında giriş, kullanıcılarınızın neleri öğrendikleridir. Cihazınızdaki gözle bulunan göz izleme kameraları, gerçek zamanlı olmayan bir dünya alanındaki ışınlarla eşleşiyorsa, kullanıcının görüş alanı verileri kullanılabilir hale gelir. Gaze, hem planlar hem de C++ ' da kullanılabilir ve nesne etkileşimi, yol bulma ve kamera denetimleri gibi çeşitli mekanizması için temel bir özelliktir.

Göz izlemeyi etkinleştirme

  • Project Ayarlar HoloLensiçin, gaze giriş özelliğini etkinleştirin:

gaze girişi vurgulanmış HoloLens proje ayarı özellikleri ekran görüntüsü

  • Yeni bir aktör oluşturun ve sahneye ekleyin

Not

gerçek olmayan HoloLens göz izleme, her iki gözde yalnızca tek bir gaze ray 'a sahiptir. İki ışını gerektiren Stereoscopic izleme desteklenmez.

Göz izlemeyi kullanma

İlk olarak, cihazınızın IsEyeTrackerConnected işleviyle göz izlemeyi destekleyip desteklemediğini kontrol edin. İşlev true değerini döndürürse, Kullanıcı gözlerinizin geçerli çerçevede nerede bakılabileceği bulmak için GetGazeData çağırın:

Göz önünde Izleme bağlı işlevinin Blueprint 'i

Not

İzleme noktası ve güvenirlik değeri HoloLens kullanılamaz.

Kullanıcılarınızın tam olarak nerede bakılabileceği hakkında bilgi edinmek için bir satır izlemede Gaze kaynağını ve yönünü kullanın. Gaze değeri, Gaze kaynağından başlayan ve kaynak ve Gaze yönü satır izleme uzaklığına çarpılarak bir vektördür:

Verileri al işlevinin şeması

Baş yön alma

Ayrıca, kullanıcının kafasının yönünü göstermek için baş takılmış ekran (HMD) döndürme işlemini de kullanabilirsiniz. Kullanıcıların baş yönünü, daha fazla giriş özelliğini etkinleştirmeden elde edebilirsiniz, ancak size hiçbir göz izleme bilgisi almazsınız. Doğru çıkış verilerini almak için bir as World bağlamı olarak şema öğesine bir başvuru ekleyin:

Not

HMD verilerinin alınması yalnızca Real 4,26 ve üzeri sürümlerde kullanılabilir.

Get HMDData işlevinin şeması

C++ kullanma

  • Oyunun Build. cs dosyasında Publicdependencymodulenames listesine Eyetracker ekleyin:
PublicDependencyModuleNames.AddRange(
    new string[] {
        "Core",
        "CoreUObject",
        "Engine",
        "InputCore",
        "EyeTracker"
});
  • Dosya/yeni C++ sınıfında, Eyetracker adlı yeni bir c++ aktör oluşturun
    • Visual Studio bir çözüm, yeni eyetracker sınıfını açar. Yeni EyeTracker aktöri ile gerçek olmayan oyunu açmak için derleyin ve çalıştırın. Aktör penceresinde "EyeTracker" araması yapın ve bunu projeye eklemek için dosyayı oyun penceresine sürükleyip bırakın:

Aktör yerleştir penceresini açık bir aktör ekran görüntüsü

  • Eyetracker. cpp' de, Eyetrackerfunctionlibraryve drawhata ayıklama ghelpopiçineklemeleri ekleyin:
#include "EyeTrackerFunctionLibrary.h"
#include "DrawDebugHelpers.h"

Herhangi bir Gaze verisi almaya çalışmadan önce cihazınızın Uıeyetrackerfunctionlibrary:: IsEyeTrackerConnected ile göz izlemeyi destekleyip desteklemediğini denetleyin. Göz izleme destekleniyorsa, Uıeyetrackerfunctionlibrary:: GetGazeDataöğesinden bir hat izlemesi için bir ışın başlangıcını ve bitişini bulun. Buradan, herhangi bir Ray isabet sonucunu ayıklamak için bir Gaze vektörü oluşturabilir ve içeriğini Linetkcesingtabychannel ' a geçirebilirsiniz:

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

Sonraki geliştirme kontrol noktası

Belirlediğimiz gerçek zamanlı olmayan geliştirme yolculuğunu takip ediyorsanız, MRTK çekirdek oluşturma bloklarını araştırırken Orta ölçekli olursunuz. Buradan, sonraki yapı bloğuna devam edebilirsiniz:

Ya da karma gerçeklik platformu özelliklerine ve API 'Lerine atlayın:

Dilediğiniz zaman gerçek zamanlı olmayan geliştirme kontrol noktalarına dönebilirsiniz.

Ayrıca bkz.