Eye Trackingで視線の位置を取得する

はじめに

今回の記事はEye Trackingの小ネタです。
前回の記事では視線の位置を表示するデモ動画を掲載しました。
(記事の最後の方です)

blog.jbs.co.jp

視線の点が小さくてこれだと少しわかりにくいのでは?と思ったので、「視線の位置にある程度の大きさのオブジェクトを配置する」というのを試してみました。

環境

Unity 2020.3.26f1
MRTK 2.7.3

実装手順

視線の位置を取得するためには以下のコードを利用します。

CoreServices.InputSystem.EyeGazeProvider.HitPosition;

公式ドキュメントには以下のページに記載があります。 docs.microsoft.com

これをUpdate関数の中で利用すればオブジェクトが常に視線の位置に来るようにできます。

今回は以下のようにスクリプトを作ります。

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

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

    void Update()
    {
        //オブジェクトを視線の位置に配置
        gameObject.transform.position = CoreServices.InputSystem.EyeGazeProvider.HitPosition;
    }
}

次にUnityエディタでの作業です。
① まずHierarchyで右クリックしてCubeを作ります。
② CubeのInspectorから以下の設定を行います。

  • Scaleは(0.1, 0.1, 0.1)にする
  • Box Colliderはチェックを外して無効化する
  • スクリプトをCubeに追加(ここではEye Testという名前です) f:id:jbs_tafurukawa:20220408104128p:plain 以上で完了です。

デモ動画

HoloLens 2にデプロイすると、以下のようにCubeが視線の位置に表示されます。

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

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

アプリケーション開発をしています。.NETやAI関連が好きです。

担当記事一覧