調べもの帳

「役に立ちそうだなー」「これお金になりそうだなー」って思うことを書く

視覚情報の座標を常に受け取り続けるサンプルコード

これさえできればアイトラッカー関係のアプリケーションはいくらでも作成できると思います。 まずここからTobii EyeX SDKをダウンロードしてください。

http://developer.tobii.com/downloads/

今回、開発する環境はWindows/C#/Visual Studio2015で行うため、SDK for .NET系のSDKをダウンロードしてください。 ファイルの中にlibフォルダとsourceフォルダがあります。

sourceフォルダにはTobiiが用意して下ったサンプルコードがあります。 (測定用のプログラムもあるので、まずそのコードを読んだ方がいいかも)

libフォルダにはdllファイルがあり、こちらを作成するプログラムに追加する必要があります。 「参照の追加」からTobii.EyeX.Client.Net20.dllとEyeXFramework.dllを追加し、プロジェクトから「既存の項目」として、Tobii.EyeX.Client.dllを追加します。 (Tobii.EyeX.Client.dllのプロパティで「出力ディレクトリにコピー」という項目があって、ここを「新しい場合はコピーする」と設定しないとビルドできないかも…)

実際どのようなコードを作成する必要があるのかというと、EyeXHostクラスのオブジェクトを管理する コントローラクラスを用意すればいいと思います。 このコントローラクラスに視覚情報のx, y座標をメンバ変数として管理し、 取得するたびに最新の値に更新されるようにすれば、リアルタイムで視覚情報が反映されるアプリケーションを作成することができるはずです。

※ Tobii EyeXのSDKでモニターのサイズとか取得できるかどうかちょっとわからないので暫定対応しています

結局のところ、このクラスで行っている処理は

  1. EyeXHostオブジェクトを作成する

  2. EyeXHostオブジェクトを起動する

  3. EyeXHostオブジェクトからデータストリームを取得する

  4. データストリームのNextイベントリスナーに、新しいイベントが発生したらメンバ変数のx, yを更新するようなイベントハンドラを追加

つまり、視覚情報の座標データをアイトラッカーから受け取ったら、 メンバ変数のx, yを更新するようになります。

とりあえず作成したサンプルはgithubに載せておきます。動かなかったり、変なところがあれば連絡いただけると幸いです。

github.com