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 :
- 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:
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:
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.
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:
- 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.