どこにでもいるSEの備忘録

たぶん動くと思うからリリースしようぜ

HoloLens 2 のアイトラッキング機能のサンプルを動かす

最近、HoloLens 2の技術調査をやってました。今回もHoloLens関連になります。

www.nogawanogawa.work

www.nogawanogawa.work

HoloLensの初代とHoloLens 2の大きな違いとして視線追跡(アイトラッキング)機能があります。 アイトラッキングは個人的にあまり馴染みがないので、今回はどんなふうにしたら使えるのか、サンプルプログラムを動かしながら確認してみたいと思います。

視線追跡(アイトラッキング)

公式のドキュメントはこの辺りのようです。

docs.microsoft.com

HoloLens 2 には、レンズの内側に赤外線センサーが搭載されており、この赤外線センサーによってユーザーの目の動きを検知して視線を測定しているようです。

取得した視線のデータはHoloLensのアプリの中で使用することができます。 UnityでHoloLensアプリを実装する場合には、MRTKにアイトラッキングの制御の機能が含まれているので、そちらで利用可能です。

microsoft.github.io

試しに使ってみる

毎回のことですが、実機がないので実際に動かすことはできませんが、Unity上で実験してみたいと思います。

アイトラッキングに関しては、HoloLens用のUnity パッケージであるMixed Reality Toolkit内にサンプルがあるので、まずはそちらを使用してやってみます。

github.com

サンプルシーンを動かしてみる

まずは、こちらのリポジトリをクローンしましょう。 データ量がものすごく大きいので、ネットワーク環境の良いところで実施することをおすすめします。

ダウンロードしたら、

MixedRealityToolkit-Unity/Assets/MRTK/Examples/Demos/EyeTracking/Scenes

にある、

EyeTrackingDemo-00-RootScene.unity

のシーンを開きます。

読み込みに結構時間がかかりますが、読み込んでしまえば普通に動きました。

視線追跡のスクリプト

具体的な視線追跡のスクリプトを見ていきます。 多分この辺のスクリプトが関係しているという部分をピックアップして確認します。

なんとなく読んでいくと、

  • OnLookAtで視線がオブジェクトと交差したイベントを起動
  • GetCursorPosInTextureで交差した座標を取得
  • DrawAtコルーチンが起動
  • ComputeHeatmapColorAtで色を決定
  • ComputeHeatmapAtで着色

って感じですかね。雰囲気は。 カスタマイズするときはこの辺を参考に、ガチャガチャいじっていけばいける気がします。

参考にさせていただいた記事

その他、以下の記事を大変参考にさせていただきました。

qiita.com

www.hiromukato.com

www.hiromukato.com

感想

実機で動かしてないのでうまく使えているのか全く実感がありませんが、とりあえずサンプルコードを使って雰囲気を体験してみました。 とりあえずサンプルを動かしてみたって感じですが、アイトラッキングは使いようによっては色々使えそうだと感じました。 次使うときはもうちょっと突っ込んだところまでやってみたいと思います。