Input Tatapan

Melihat input dalam aplikasi realitas campuran adalah tentang mencari tahu apa yang dilihat pengguna Anda. Saat kamera pelacak mata di perangkat Anda cocok dengan sinar di ruang dunia Unreal, data garis pandang pengguna Anda menjadi tersedia. Tatapan dapat digunakan dalam cetak biru dan C++, dan merupakan fitur inti untuk mekanisme seperti interaksi objek, temuan cara, dan kontrol kamera.

Mengaktifkan pelacakan mata

  • Di HoloLens Pengaturan > Proyek, aktifkan kemampuan Input Tatapan :

Cuplikan layar kemampuan pengaturan proyek HoloLens dengan input tatapan disorot

  • Buat aktor baru dan tambahkan ke adegan Anda

Catatan

Pelacakan mata HoloLens di Unreal hanya memiliki sinar tatapan tunggal untuk kedua mata. Pelacakan stereoskopis, yang memerlukan dua sinar, tidak didukung.

Menggunakan pelacakan mata

Pertama, periksa apakah perangkat Anda mendukung pelacakan mata dengan fungsi IsEyeTrackerConnected . Jika fungsi mengembalikan true, panggil GetGazeData untuk menemukan di mana mata pengguna melihat dalam bingkai saat ini:

Cetak biru fungsi Is Eye Tracking Connected

Catatan

Titik fiksasi dan nilai keyakinan tidak tersedia di HoloLens.

Gunakan asal tatapan dan arah dalam jejak garis untuk mengetahui dengan tepat di mana pengguna Anda mencari. Nilai tatapan adalah vektor, dimulai dari asal tatapan dan berakhir pada asal ditambah arah tatapan dikalikan dengan jarak jejak garis:

Cetak biru fungsi Dapatkan Data Tatapan

Mendapatkan orientasi kepala

Anda juga dapat menggunakan rotasi Head Mounted Display (HMD) untuk mewakili arah kepala pengguna. Anda bisa mendapatkan arah kepala pengguna tanpa mengaktifkan kemampuan Input Tatapan, tetapi Anda tidak akan mendapatkan informasi pelacakan mata apa pun. Tambahkan referensi ke cetak biru sebagai konteks dunia untuk mendapatkan data output yang benar:

Catatan

Mendapatkan Data HMD hanya tersedia di Unreal 4.26 dan seterusnya.

Cetak biru fungsi Get HMDData

Menggunakan C++

  • Dalam file build.cs game Anda, tambahkan EyeTracker ke daftar PublicDependencyModuleNames :
PublicDependencyModuleNames.AddRange(
    new string[] {
        "Core",
        "CoreUObject",
        "Engine",
        "InputCore",
        "EyeTracker"
});
  • Di File/ Kelas C++ Baru, buat aktor C++ baru yang disebut EyeTracker
    • Solusi Visual Studio akan membuka kelas EyeTracker baru. Bangun dan jalankan untuk membuka game Unreal dengan aktor EyeTracker baru. Cari "EyeTracker" di jendela Place Actors dan seret dan letakkan kelas ke jendela game untuk menambahkannya ke proyek:

Cuplikan layar actor dengan jendela place actor terbuka

  • Di EyeTracker.cpp, tambahkan termasuk untuk EyeTrackerFunctionLibrary, dan DrawDebugHelpers:
#include "EyeTrackerFunctionLibrary.h"
#include "DrawDebugHelpers.h"

Periksa apakah perangkat Anda mendukung pelacakan mata dengan UEyeTrackerFunctionLibrary::IsEyeTrackerConnected sebelum mencoba mendapatkan data tatapan apa pun. Jika pelacakan mata didukung, temukan awal dan akhir sinar untuk jejak garis dari UEyeTrackerFunctionLibrary::GetGazeData. Dari sana, Anda dapat membuat vektor tatapan dan meneruskan kontennya ke LineTraceSingleByChannel untuk men-debug hasil hit sinar apa pun:

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

Titik Pemeriksaan Pengembangan Berikutnya

Jika Anda mengikuti perjalanan pengembangan Unreal yang telah kami susun, Anda berada di tengah-tengah menjelajahi blok penyusun inti MRTK. Dari sini, Anda dapat melanjutkan ke blok penyusun berikutnya:

Atau lompat ke kemampuan platform dan API Mixed Reality:

Anda selalu dapat kembali ke titik pemeriksaan Pengembangan tidak nyata kapan saja.

Lihat juga