Pelacakan mata — MRTK3
Gambaran Umum
Pelacakan mata ditangani secara asli oleh Unity Input System, namun MRTK3 menyediakan pembantu yang berguna untuk mempermudah penambahan pelacakan mata.
Secara default MRTK XR Rig
prefab sudah memiliki pengontrol tatapan MRTK3. Jika Anda tidak menggunakan MRTK XR Rig
dan ingin menggunakan pengontrol tatapan MRTK3, tambahkan MRTK Gaze Controller
prefab ke adegan Unity Anda.
Prefab pengontrol tatapan MRTK memiliki Unity XR Controller dan Interactor yang mengikat input tatapan mata dan kepala Unity. Tindakan pengontrol diatur sehingga tatapan mata disukai di atas tatapan kepala. Jika tatapan mata dinonaktifkan, tidak dikonfigurasi, atau tidak dikalibrasi, pengontrol akan menggunakan pose tatapan kepala sebagai gantinya. Untuk detail selengkapnya tentang bagaimana pengikatan tindakan pengontrol tatapan MRTK3 telah dikonfigurasi, lihat aset Unity Tindakan Input Default MRTK yang disertakan.
Penting
Jika Anda ingin mengaktifkan pelacakan mata saat menggunakan OpenXR, Profil Interaksi Tatapan Mata harus ditambahkan ke konfigurasi profil interaksi OpenXR. Lihat Menyiapkan proyek OpenXR baru dengan MRTK untuk informasi selengkapnya tentang mengonfigurasi pengaturan OpenXR di Unity.
Selain itu, jika Anda menggunakan Platform Windows Universal, pastikan untuk menambahkan kemampuan GazeInput di Kemampuan Pengaturan > Penerbitan Pengaturan > Proyek>.
Interaksi Tatap Fuzzy
Pengontrol tatapan MRTK3 telah disiapkan untuk menggunakan FuzzyGazeInteractor
, interaksi Unity yang mengimplementasikan teknik interaksi tatapan fuzzy di mana objek dalam sudut kerucut tertentu dan rentang jarak ditargetkan dan berinteraksi berdasarkan arah tatapan pengguna. Sistem penilaian membantu memprioritaskan target potensial berdasarkan kesesuaiannya untuk interaksi.
Skrip mendefinisikan beberapa bidang dan properti yang mengontrol perilaku interaksi tatapan. Beberapa bidang penting meliputi:
- coneAngle: Sudut di mana objek akan dipertimbangkan untuk ditargetkan dengan tatapan.
- minGazeDistance dan maxGazeDistance: Jarak minimum dan maksimum di mana objek dapat ditargetkan dengan tatapan. distanceWeight, angleWeight, distanceToCenterWeight, dan angleToCenterWeight: Bobot yang ditetapkan ke kriteria berbeda yang digunakan untuk menentukan "skor tatapan" objek.
- presisi: Nilai yang digunakan untuk menyesuaikan presisi raycast fisika tatapan fuzzy.
- performAdditionalRaycast: Bendera yang menunjukkan apakah raycast tambahan setelah tatapan mata dilakukan untuk meningkatkan hasil penilaian.
- precisionCurve: Kurva animasi yang digunakan untuk mengontrol tingkat presisi berdasarkan jarak ke target.
Skrip mengambil alih beberapa metode dari kelas XRRayInteractor
dasar untuk menyediakan implementasinya sendiri. Metode penimpaan penting meliputi:
- IsHitValid: Menentukan apakah hit pada objek yang dapat berinteraksi dianggap valid berdasarkan kriteria sudut dan jarak yang ditentukan oleh bidang coneAngle, minGazeDistance, dan maxGazeDistance.
- ScoreHit: Menilai hit raycast yang dapat berinteraksi dan terkait berdasarkan jarak, sudut hit raycast, dan sudut pusat target. Skor adalah kombinasi dari faktor tertimbang.
- ConecastScoreCompare: Membandingkan hit raycast dengan skor mereka dalam urutan naik.
- GetValidTargets: Mengambil target yang valid untuk interaksi tatapan berdasarkan hit raycast dan skornya.
Interactor Dwell Manager
Pengontrol tatapan MRTK3 juga diatur dengan InteractorDwellManager
komponen skrip. Skrip ini mengimplementasikan pilihan berbasis tempat tinggal pada objek yang dapat berinteraksi menggunakan XR Interaction Toolkit di Unity. Ini mengelola timer tinggal, memicu pemilihan, dan melacak status tinggal yang dapat berinteraksi untuk interaktor yang ditentukan. Untuk memanfaatkan pemilihan hunian tatapan, yang ditargetkan dapat berinteraksi harus MRTK3 StatefulInteractable
dan memiliki bendera yang Use Gaze Dwell
ditetapkan.
Catatan
Pilihan berbasis tinggal tidak disarankan di mana input tangan atau suara dimungkinkan, karena tempat tinggal dapat menyebabkan aktivasi elemen UI yang tidak dapat diprediksi atau tidak diinginkan. Aplikasi mungkin masih ingin mempertimbangkan input tetap untuk aksesibilitas atau dalam skenario di mana input suara dan tangan tidak tersedia. Untuk panduan desain tentang cara terbaik menggunakan tinggal, lihat Tatapan mata dan tempat tinggal serta Tatapan kepala dan tempat tinggal.
Setelah memasuki status hover, interaksi ini akan terus memilih sebelum waktu pemicu tetap berlalu, setelah itu pilihan dipicu pada interaktif. Pengaturan tetap dapat dikonfigurasi menggunakan yang berikut ini:
- DwellTriggerTime: Menentukan berapa lama interaktor tetap memilih interaktif setelah memasuki status melayang.