はじめに
Eye Trackingについて調べていたら、「Dwell」というMRTKのUIを使うと目線でボタンを押すことができるようです。
今回はこの実装方法について書きたいと思います。
環境
Unity 2020.3.26f1
MRTK 2.7.3
前提
Eye Trackingを使うための設定が完了していること
実装方法
まずUnityエディタのProjectウィンドウにて、「PressableButtonHoloLens2_Dwell」と検索して該当のPrefabをHierarchyに追加します。(下図の①)
InspectorからDwellHandlerを開き、Dwell Trigger Poiner TypeをEyes
に設定します。(下図の②)
これだけでEye Trackingでボタンを押すための設定は完了です。
デフォルトの設定だと2秒間ボタンに対して視線を向けているとボタンを押したと判定されます。
(Time To Complete Dwell
の値で調節できます)
次にボタンを押したときの処理を実装します。今回は「ボタンを押す毎に表示されている数値が1増加する」とします。
まず以下のようなスクリプトを作ります。
using Microsoft.MixedReality.Toolkit.Input; using TMPro; using UnityEngine; public class EyeDwellTest : MonoBehaviour { int num = 0; [SerializeField] TextMeshPro guiText; void Start() { //目線を常に表示 PointerUtils.SetGazePointerBehavior(PointerBehavior.AlwaysOn); } void Update() { guiText.text = num.ToString(); } public void AddCounter() { num++; } }
次にUnityエディタでオブジェクトを作っていきます。
Hierarchyで右クリック→UI
→Text - TextMeshPro
とクリックしていきます。デフォルトだと大きすぎるのでInspectorのScaleを(0.01, 0.01, 0.01)と設定します。
Hierarchyで右クリック→Create Empty
で空のオブジェクトを作成し、先ほど作成したスクリプトを追加します。
Gui Text
には1のテキストをドラッグアンドドロップします。
最後にボタンを押したときの処理を設定します。最初に追加したPressableButtonHoloLens2_Dwell
のInspectorからDwellHandler
を開きます。Dwell Completed
というイベントに以下のように処理を追加します。
① +ボタンを押して処理を追加
② スクリプトを追加した空のオブジェクトをドラッグアンドドロップ
③ AddCounter
を選択
これですべての作業は完了です。
デモ動画
以下の動画のように、ボタンに視線を合わせ続けていると(今回は2秒)ボタンを押すことができます。