最近、HoloLens 2の技術調査をやってました。今回もHoloLens関連になります。
HoloLensの初代とHoloLens 2の大きな違いとして視線追跡(アイトラッキング)機能があります。 アイトラッキングは個人的にあまり馴染みがないので、今回はどんなふうにしたら使えるのか、サンプルプログラムを動かしながら確認してみたいと思います。
視線追跡(アイトラッキング)
公式のドキュメントはこの辺りのようです。
HoloLens 2 には、レンズの内側に赤外線センサーが搭載されており、この赤外線センサーによってユーザーの目の動きを検知して視線を測定しているようです。
取得した視線のデータはHoloLensのアプリの中で使用することができます。 UnityでHoloLensアプリを実装する場合には、MRTKにアイトラッキングの制御の機能が含まれているので、そちらで利用可能です。
試しに使ってみる
毎回のことですが、実機がないので実際に動かすことはできませんが、Unity上で実験してみたいと思います。
アイトラッキングに関しては、HoloLens用のUnity パッケージであるMixed Reality Toolkit内にサンプルがあるので、まずはそちらを使用してやってみます。
サンプルシーンを動かしてみる
まずは、こちらのリポジトリをクローンしましょう。 データ量がものすごく大きいので、ネットワーク環境の良いところで実施することをおすすめします。
ダウンロードしたら、
MixedRealityToolkit-Unity/Assets/MRTK/Examples/Demos/EyeTracking/Scenes
にある、
EyeTrackingDemo-00-RootScene.unity
のシーンを開きます。
読み込みに結構時間がかかりますが、読み込んでしまえば普通に動きました。
サンプルシーンを動かしてみただけ。 pic.twitter.com/ThT6jV5Vnf
— 野川の側 (@nogawanogawa) 2020年6月6日
視線追跡のスクリプト
具体的な視線追跡のスクリプトを見ていきます。 多分この辺のスクリプトが関係しているという部分をピックアップして確認します。
なんとなく読んでいくと、
- OnLookAtで視線がオブジェクトと交差したイベントを起動
- GetCursorPosInTextureで交差した座標を取得
- DrawAtコルーチンが起動
- ComputeHeatmapColorAtで色を決定
- ComputeHeatmapAtで着色
って感じですかね。雰囲気は。 カスタマイズするときはこの辺を参考に、ガチャガチャいじっていけばいける気がします。
参考にさせていただいた記事
その他、以下の記事を大変参考にさせていただきました。
感想
実機で動かしてないのでうまく使えているのか全く実感がありませんが、とりあえずサンプルコードを使って雰囲気を体験してみました。 とりあえずサンプルを動かしてみたって感じですが、アイトラッキングは使いようによっては色々使えそうだと感じました。 次使うときはもうちょっと突っ込んだところまでやってみたいと思います。