Bagikan melalui


Navigasi yang didukung mata di MRTK — MRTK2

MRTK

Bayangkan Anda membaca informasi tentang slate dan ketika Anda mencapai akhir teks yang ditampilkan, teks secara otomatis menggulir ke atas untuk mengungkapkan lebih banyak konten. Atau Anda dapat dengan lancar memperbesar tampilan di mana Anda melihat. Peta juga secara otomatis menyesuaikan konten untuk menjaga hal-hal yang menarik dalam bidang pandang Anda. Aplikasi menarik lainnya adalah pengamatan hands-free hologram 3D dengan secara otomatis membawa bagian hologram yang Anda lihat ke depan. Ini adalah beberapa contoh yang dijelaskan di halaman ini dalam konteks navigasi yang didukung mata.

Deskripsi berikut mengasumsikan bahwa Anda sudah terbiasa dengan cara mengatur pelacakan mata di adegan MRTK Anda dan dengan dasar-dasar mengakses data pelacakan mata di MRTK Unity. Contoh yang dibahas dalam hal berikut adalah semua bagian dari EyeTrackingDemo-03-Navigation adegan (Aset/MRTK/Contoh/Demos/EyeTracking/Scenes/EyeTrackingDemo-03-Navigation).

Ringkasan: Gulir otomatis teks, pan besar yang didukung tatapan mata, dan perbesar tampilan peta virtual, rotasi 3D yang diarahkan tatapan tangan.

Gulir otomatis

Gulir otomatis memungkinkan pengguna untuk menggulir teks tanpa mengangkat jari. Cukup lanjutkan membaca dan teks akan secara otomatis menggulir ke atas atau ke bawah tergantung di mana pengguna mencari. Anda dapat memulai dari contoh yang disediakan di EyeTrackingDemo-03-Navigation (Aset/MRTK/Contoh/Demo/EyeTracking/Adegan). Contoh ini menggunakan komponen TextMesh untuk memungkinkan pemuatan dan pemformatan teks baru secara fleksibel. Untuk mengaktifkan gulir otomatis, cukup tambahkan dua skrip berikut ke komponen collider kotak teks Anda:

ScrollRectTransf

Untuk menggulir textMesh atau lebih umum berbicara komponen RectTransform , Anda dapat menggunakan skrip ScrollRectTransf . Jika Anda ingin menggulir tekstur alih-alih RectTransform, gunakan ScrollTexture alih-alih ScrollRectTransf. Dalam hal berikut, parameter ScrollRectTransf yang tersedia di Editor Unity dijelaskan secara lebih rinci:

Parameter Deskripsi
LimitPanning Jika diaktifkan, akan menghentikan konten yang dapat digulir pada batasnya.
RectTransfToNavigate Referensi ke RectTransform untuk menggulir masuk.
RefToViewport Referensi ke RectTransform induk dari konten yang dapat digulir untuk menentukan offset dan batas yang benar.
AutoGazeScrollIsActive Jika diaktifkan, teks akan secara otomatis menggulir jika pengguna melihat wilayah aktif (misalnya, bagian atas dan bawah panel gulir Anda jika kecepatan gulir vertikal bukan nol).
ScrollSpeed_x Jika diatur ke nilai yang tidak sama dengan nol, gulir horizontal akan diaktifkan. Nilai negatif berarti perubahan arah gulir: Kiri ke kanan vs kanan ke kiri.
ScrollSpeed_y Jika diatur ke nilai yang tidak sama dengan nol, gulir vertikal akan diaktifkan. Nilai negatif berarti perubahan arah gulir: Naik ke bawah vs. ke bawah ke atas.
MinDistFromCenterForAutoScroll Jarak minimal yang dinormalisasi dalam x dan y dari tengah kotak temuan target (0, 0) untuk menggulir. Dengan demikian, nilai harus berkisar antara 0 (selalu gulir) dan 0,5 (tanpa gulir).
UseSkimProofing Jika diaktifkan, ini mencegah gerakan gulir mendadak saat melihat-lihat dengan cepat. Ini mungkin membuat pengguliran terasa kurang responsif. Ini dapat disetel dengan nilai SkimProofUpdateSpeed .
SkimProofUpdateSpeed Semakin rendah nilainya, semakin lambat pengguliran akan mempercepat setelah skimming. Nilai yang disarankan: 5.

Penyiapan gulir yang didukung mata di Unity

EyeTrackingTarget

Memasang komponen EyeTrackingTarget memungkinkan penanganan peristiwa terkait tatapan mata secara fleksibel. Sampel gulir menunjukkan pengguliran teks yang dimulai ketika pengguna melihat panel dan berhenti ketika pengguna menjauh darinya. Pengaturan gulir yang didukung mata di Unity: EyeTrackingTarget

Pan dan zoom yang didukung tatapan

Siapa yang belum menggunakan peta virtual sebelumnya untuk mencari rumah mereka atau menjelajahi tempat yang sama sekali baru? Pelacakan mata memungkinkan Anda untuk langsung menyelami bagian-bagian yang Anda minati dan setelah diperbesar, Anda dapat dengan lancar mengikuti jalan untuk menjelajahi lingkungan Anda! Ini tidak hanya berguna untuk menjelajahi peta geografis, tetapi juga untuk memeriksa detail dalam foto, visualisasi data, atau bahkan citra medis streaming langsung. Untuk menggunakan kemampuan ini di aplikasi Anda mudah! Untuk konten yang dirender ke Tekstur (misalnya, foto, data yang dialirkan), cukup tambahkan skrip PanZoomTexture . Untuk RectTransform gunakan PanZoomRectTransf. Memperluas kemampuan Gulir Otomatis , kami pada dasarnya memungkinkan untuk menggulir secara vertikal dan horizontal secara bersamaan dan memperbesar konten tepat di sekitar titik fokus pengguna saat ini.

Parameter Deskripsi
LimitPanning Jika diaktifkan, akan menghentikan konten yang dapat digulir pada batasnya.
HandZoomEnabledOnStartup Menunjukkan apakah gerakan tangan diaktifkan secara otomatis untuk melakukan gerakan zoom. Anda mungkin ingin menonaktifkannya pada awalnya untuk menghindari pemicu tindakan zoom secara tidak sengaja.
RendererOfTextureToBeNavigated Perender yang direferensikan dari tekstur yang akan dinavigasi.
Zoom_Acceleration Akselerasi zoom yang menentukan curamnya pemetaan fungsi kecepatan logistik.
Zoom_SpeedMax Kecepatan zoom maksimum.
Zoom_MinScale Skala minimum tekstur untuk memperbesar - misalnya, 0,5f (setengah ukuran asli).
Zoom_MaxScale Skala maksimum tekstur untuk memperkecil - misalnya, 1f (ukuran asli) atau 2,0f (dua kali lipat ukuran asli).
Zoom_TimeInSecToZoom Zoom berwaktu: Setelah dipicu, memperbesar/memperkecil akan dilakukan untuk jumlah waktu tertentu dalam hitungan detik.
Zoom_Gesture Jenis gerakan tangan yang digunakan untuk memperbesar/memperkecil.
--- ---
Pan_AutoScrollIsActive Jika diaktifkan, teks akan secara otomatis menggulir jika pengguna melihat wilayah aktif (misalnya, bagian atas dan bawah panel gulir Anda jika kecepatan gulir vertikal bukan nol).
Pan_Speed_x Jika diatur ke nilai yang tidak sama dengan nol, gulir horizontal akan diaktifkan. Nilai negatif berarti perubahan arah gulir: Kiri ke kanan vs kanan ke kiri.
Pan_Speed_y Jika diatur ke nilai yang tidak sama dengan nol, gulir vertikal akan diaktifkan. Nilai negatif berarti perubahan arah gulir: Naik ke bawah vs. ke bawah ke atas.
Pan_MinDistFromCenter Jarak minimal yang dinormalisasi dalam x dan y dari tengah kotak temuan target (0, 0) untuk menggulir. Dengan demikian, nilai harus berkisar antara 0 (selalu gulir) dan 0,5 (tanpa gulir).
UseSkimProofing Jika diaktifkan, ini mencegah gerakan gulir mendadak saat melihat-lihat dengan cepat. Ini mungkin membuat pengguliran terasa kurang responsif. Ini dapat disetel dengan nilai SkimProofUpdateSpeed .
SkimProofUpdateSpeed Semakin rendah nilainya, semakin lambat pengguliran akan mempercepat setelah skimming. Nilai yang disarankan: 5.

Penyiapan pan dan zoom yang didukung mata di Unity

Rotasi 3D berbasis perhatian

Bayangkan melihat objek 3D dan bagian-bagian yang ingin Anda lihat lebih ajaib beralih ke arah Anda - seolah-olah sistem akan membaca pikiran Anda dan tahu untuk mengubah item ke arah Anda! Itulah ide untuk rotasi 3D berbasis perhatian yang memungkinkan Anda menyelidiki semua sisi hologram tanpa mengangkat jari. Untuk mengaktifkan perilaku ini, cukup tambahkan skrip OnLookAtRotateByEyeGaze ke bagian dari GameObject Anda dengan komponen Collider . Anda dapat mengubah beberapa parameter yang tercantum di bawah ini untuk membatasi seberapa cepat dan ke arah mana hologram akan berubah.

Seperti yang dapat Anda bayangkan, memiliki perilaku ini aktif setiap saat dapat dengan cepat menjadi cukup mengganggu dalam adegan yang ramai. Inilah sebabnya mengapa Anda mungkin ingin memulai dengan perilaku ini dinonaktifkan lalu mengaktifkannya dengan cepat menggunakan perintah suara. Atau, kami menambahkan contoh di EyeTrackingDemo-03-Navigation (Aset/MRTK/Contoh/Demo/EyeTracking/Scenes) untuk menggunakan TargetMoveToCamera tempat Anda dapat memilih target yang berfokus dan terbang di depan Anda - cukup katakan "Datanglah kepada saya".

Setelah dalam mode dekat, mode rotasi otomatis diaktifkan secara otomatis. Dalam mode itu, Anda dapat mengamatinya dari semua sisi baik hanya bersandar dan melihatnya, berjalan di sekitarnya atau menjangkau untuk mengambil dan memutarnya dengan tangan Anda. Saat Anda menutup target (lihat & mencubit atau mengatakan "Kirim kembali"), target akan kembali ke lokasi aslinya dan akan berhenti bereaksi terhadap Anda dari jauh.

Parameter Deskripsi
SpeedX Kecepatan rotasi horizontal.
Cepat Kecepatan rotasi vertikal.
InverseX Untuk membalik arah rotasi horizontal.
Inversey Untuk membalikkan arah rotasi vertikal.
RotasiThreshInDegrees Jika sudut antara 'Tatapan ke Target' dan 'Kamera ke Target' kurang dari nilai ini, jangan lakukan apa pun. Ini untuk mencegah rotasi jittery kecil..
MinRotX Sudut rotasi horizontal minimum. Ini untuk membatasi rotasi ke arah yang berbeda.
MaxRotX Sudut rotasi horizontal maksimum. Ini untuk membatasi rotasi ke arah yang berbeda.
MinRotY Sudut rotasi vertikal minimal untuk membatasi rotasi di sekitar sumbu x.
MaxRotY Sudut rotasi vertikal maksimum untuk membatasi rotasi di sekitar sumbu y.

Penyiapan rotasi 3D yang didukung mata di Unity

Singkatnya, skrip di atas akan memungkinkan Anda untuk mulai menggunakan tatapan mata untuk berbagai tugas navigasi input seperti menggulir teks, memperbesar dan menggeser tekstur serta memutar menyelidiki hologram 3D.

Lihat juga


Kembali ke "Pelacakan mata di MixedRealityToolkit"