HoloLens 2でOpenXRを利用する場合のEye Tracking設定方法

はじめに

HoloLens 2でEye Trackingを動作させるための設定は以下のページに記載があります。
Eye Tracking - Mixed Reality Toolkit | Microsoft Docs
しかし、OpenXRを利用する場合はこのページだけの手順では動作しませんでした。そこでこの記事ではチェックするポイントをまとめてみました。

環境

Unity 2020.3.26f1
MRTK 2.7.3
Mixed Reality OpenXR Plugin 1.3.1

チェックするポイント

MRTKの設定

  • Inpu Data Providersに【OpenXR XRSDK Eye Gaze Provider】が存在し、Supported Platform(s)の「Windows Universal」にチェックが入っている

  • Pointersの【Is Eye Tracking Enabled】にチェックが入っている

UnityのProject Settingsの設定

  • Player → Publishing Settins → Capabilitiesの【GazeInput】にチェックが入っている

  • Open XRのInteraction Profilesに【Eye Gaze Interaction Profile】が追加されている

HoloLens 2で動かしてみる

以上の設定をしてHoloLens 2にデプロイすれば目線が表示されます。しかし、HoloLens 2が手を認識すると目線が表示されなくなってしまいました。
そこで以下のスクリプトを作成しました。

using Microsoft.MixedReality.Toolkit.Input;
using UnityEngine;

public class EyeTest : MonoBehaviour
{
    void Start()
    {
        //目線を常に表示
        PointerUtils.SetGazePointerBehavior(PointerBehavior.AlwaysOn);
    }
}

Unityエディタにて、このスクリプトをオブジェクトに追加します。

あとはHoloLens 2にデプロイすれば、以下のようにEye Trackingが動作することを確認できます。
(ちょっと見にくいですが、動いている小さい点が目線の位置です)

あとがき

以上、Eye Trackingを実装するうえでの設定方法でした。
ちなみに私はチェックポイントの「Open XRのInteraction Profilesに【Eye Gaze Interaction Profile】が追加されている」というところが抜けており、結構悩みました・・・
少し遠回りしましたが、解決できてよかったです。

2022年4月8日追記

「動画の視線が小さくてわかりにくい」と思った方は、以下のブログをどうぞ!
ある程度の大きさのオブジェクトを視線に追従させている動画を公開しています。

blog.jbs.co.jp

参考

Getting Eye Tracking to work with OpenXR on HoloLens 2 - DotNetByExample - The Next Generation (localjoost.github.io)

執筆担当者プロフィール
古川 貴浩

古川 貴浩(日本ビジネスシステムズ株式会社)

HoloLens 2アプリケーションの開発をしています。

担当記事一覧