Aracılığıyla paylaş


Bakış Girişi

Karma gerçeklik uygulamalarındaki bakış girişi, kullanıcılarınızın neye baktığını bulmakla alakalıdır. Cihazınızdaki göz izleme kameraları Unreal'ın dünya alanında bulunan ışınlarla eşleştiğinde, kullanıcınızın görüş hattı verileri kullanılabilir hale gelir. Bakış hem şemalarda hem de C++'da kullanılabilir ve nesne etkileşimi, yol bulma ve kamera denetimleri gibi mekaniklere yönelik temel bir özelliktir.

Gözle izlemeyi etkinleştirme

  • Proje Ayarları > HoloLens'teBakış Girişi özelliğini etkinleştirin:

Bakış girişinin vurgulandığı HoloLens proje ayarı özelliklerinin ekran görüntüsü

  • Yeni bir aktör oluşturma ve bunu sahnenize ekleme

Not

Unreal'da HoloLens gözle izleme, her iki göz için tek bir bakış ışınına sahiptir. İki ışın gerektiren stereoskopik izleme desteklenmez.

Gözle izlemeyi kullanma

İlk olarak, cihazınızın IsEyeTrackerConnected işleviyle göz izlemeyi desteklediğini denetleyin. İşlev true döndürürse, kullanıcının gözlerinin geçerli çerçevede nereye baktığını bulmak için GetGazeData'yı çağırın:

Göz İzleme Bağlı işlevinin şeması

Not

Düzeltme noktası ve güvenilirlik değeri HoloLens'te kullanılamaz.

Kullanıcılarınızın tam olarak nereye baktığını bulmak için bir çizgi izlemesinde bakış kaynağını ve yönünü kullanın. Bakış değeri, bakış noktasından başlayıp çıkış noktasından başlayıp bakış yönü ile çizgi izleme mesafesinin çarpıldığı bir vektördür:

Bakış Verilerini Al işlevinin şeması

Baş yönlendirme alma

Ayrıca, kullanıcının kafasının yönünü temsil etmek için Baş Bağlı Ekranın (HMD) döndürmesini de kullanabilirsiniz. Bakış Girişi özelliğini etkinleştirmeden kullanıcıların yönlendirmesini alabilirsiniz, ancak size hiçbir göz izleme bilgisi almazsınız. Doğru çıkış verilerini almak için şemaya dünya bağlamı olarak bir başvuru ekleyin:

Not

HMD Verilerini Alma özelliği yalnızca Unreal 4.26 ve üzeri sürümlerde kullanılabilir.

Get HMDData işlevinin şeması

C++ kullanma

  • Oyununuzun build.cs dosyasında PublicDependencyModuleNames listesine EyeTracker ekleyin:
PublicDependencyModuleNames.AddRange(
    new string[] {
        "Core",
        "CoreUObject",
        "Engine",
        "InputCore",
        "EyeTracker"
});
  • Dosya/ Yeni C++ Sınıfı'ndaEyeTracker adlı yeni bir C++ aktörü oluşturun
    • Visual Studio çözümü yeni EyeTracker sınıfını açar. Yeni EyeTracker aktörüyle Unreal oyununu açmak için derleyin ve çalıştırın. Aktörleri Yerleştir penceresinde "EyeTracker" için arama yapın ve sınıfı sürükleyip oyun penceresine bırakarak projeye ekleyin:

Aktör penceresinin açık olduğu aktörün ekran görüntüsü

  • EyeTracker.cpp dosyasındaEyeTrackerFunctionLibrary ve DrawDebugHelpers için eklemeler ekleyin:
#include "EyeTrackerFunctionLibrary.h"
#include "DrawDebugHelpers.h"

Herhangi bir bakış verisi almaya çalışmadan önce cihazınızın UEyeTrackerFunctionLibrary::IsEyeTrackerConnected ile göz izlemeyi desteklediğini denetleyin. Gözle izleme destekleniyorsa UEyeTrackerFunctionLibrary::GetGazeData'dan bir çizgi izlemesi için ray'in başlangıcını ve sonunu bulun. Buradan bir bakış vektörünü oluşturabilir ve herhangi bir ışın isabeti sonucunun hatalarını ayıklamak için içeriğini LineTraceSingleByChannel'e 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 Denetim Noktası

Ortaya koyduğumuz Gerçekleşmemiş geliştirme yolculuğunu takip ediyorsanız MRTK temel yapı taşları keşfetmenin tam ortasındasınız demektir. Buradan sonraki yapı taşına devam edebilirsiniz:

İsterseniz Karma Gerçeklik platform özelliklerine ve API'lere atlayabiliriz:

İstediğiniz zaman Gerçekleşmemiş geliştirme denetim noktalarına geri dönebilirsiniz.

Ayrıca bkz.