Bagikan melalui


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.

Gambar yang menunjukkan pengaturan tindakan tatapan dalam aset Unity Tindakan Input Default MRTK.

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.