niku9's blog

素人がOculusRift + Unity + αでVRアプリを作る日々を綴るブログです

Tobii EyeX SDK for Unityを触ってみる

先日、Tobii EyeX Controllerが届いたので早速触ってみました。Tobii EyeX に関する日本語の情報が少なかったので、自分なりにまとめてみることにしました。
※私の理解不足で誤った情報が含まれている可能性があります。間違いがありましたら私のtwitterアカウントまでご指摘いただければ幸いです。

Tobii EyeX SDK for Unityをインストールしよう

Tobii EyeX Controllerが届いたら、同封された説明書に沿って、Controllerの設置とUSB3.0でPCと接続します。
http://developer.tobii.com/eyex-setup/のDownloadボタンから、EyeX EngineとEyeX Controllerのドライバをダウンロード、インストールします。
キャリブレーションや設定が自動的に開始されます。設定の変更や再キャリブレーションするには、インストールされたTobii EyeX Settingsを起動すれば何度でも設定できます。
つぎに、http://developer.tobii.com/downloads/の、Tobii EyeX SDK for Unity 0.23をダウンロードします。

Developer's Guide Unity.pdfを読もう

Tobii EyeX SDK for Unity 0.23をダウンロードすると、TobiiEyeXSdk-Unity-0.23.325ディレクトリにDeveloper's Guide Unity.pdfがあります。もしくは、http://developer.tobii.com/documentation/から見れます。実はこれが EyeX SDKのリファレンスにあたります。

これにはサンプルコードも含め、SDKの概要と使い方が書いてあります。

詳細は次回以降にするとして、ここでは知っておきたい基本的事項について簡単にまとめておきます。
・EyeX Engineとは、Tobii EyeX ControllerなどのEyeTrackingデバイスのセンサ情報とキーボードなどのユーザインプット情報を監視し、アプリケーションとのインタラクションを司るものです。
・EyeX Engine APIへのアクセス方法は2種類提供されており、ひとつは、EyeX SDKを経由してEye Engine APIにアクセスします。今回はこれを使用します。
・もうひとつはGaze SDKといい、EyeX SDKよりも低レベルを扱えるSDKのようです。 今回は触れません。
・また、ちょこちょこ目にするTobii REXとは、LinuxAndroid用のEyeTrackingデバイスのようですが、$795もします。。。ので、今回は触れません。
Unity Free版でもEyeX SDKは使えます!(重要)

UnitySamplesで遊ぼう

Developer's Guide Unity.pdfを読んでいてもイメージが掴めないので、TobiiEyeXSdk-Unity-0.23.325\UnitySamplesを動かしてみます。

Unityを起動し、ダウンロードしたUnitySamplesをOpenします。
UnitySamples\Assets\Scenesには5つのサンプルシーンがあります。適当に選んだSceneを実行し、実行中にtabキーを押すと次のシーンに移動できます。
ここで注意点として、EyeX Engineへのキーボード入力は特殊キーと呼ばれるキー(デフォルトではアプリケーションキー)で操作します。ちなみに、Tobii EyeX Settingsから変更出来ます。

Scripts\EyeXにはユニティ用EyeXフレームワークスクリプトがあり、Scripts\Behaviorsにはサンプルシーン用のScriptsがあります。どちらもC#で書かれておりオープンソースなので、自作アプリにこれを改造して使用することができます。

MonoDevelopでビルドしよう

Scripts\BehaviorsのスクリプトをダブルクリックでMonoDevelopを起動し、ビルドすると、


Error Error: System.BadImageFormatException: ファイルまたはアセンブリ 'file:///~(略)~\TobiiEyeXSdk-Unity-0.23.325\UnitySamples\Assets\Plugins\Tobii.EyeX.Client.Net20.dll'、またはその依存関係の 1 つが読み込めませんでした。間違ったフォーマットのプログラムを読み込もうとしました。 (Error: System.BadImageFormatException) (Assembly-UnityScript-firstpass)


というエラーが起こりました。
この原因は、Forumによると、アセンブリC#以外の言語も含んで作られたからだそうです。
なので、UnitySamples.slnではなく、UnitySamples-csharp.slnをMonoで読みこめば良いとのことです。
MonoのFile/OpenからUnitySamples-csharp.slnを読み込んでビルドします。 すると、参照エラーが大量に発生したので、MonoのSolutionのReferencesにTobii.EyeX.Client.Net20.dllを追加したら、正常にビルドが出来ました。

自作Sceneを追加しよう

続いて、Sceneに自作Sceneを追加していこうと思います。
UnityのFile/New SceneでMySceneを作成し、まずは5つのサンプルSceneを参考に作ってみるのが良いかと思います。 私は、2番めのサンプルEyePositionSceneと似たようなSceneを作成し、センサによる3Dデータの取得とオブジェクトへの反映の動作確認をしました。

所感

Tobii EyeX SDKのリファレンスはDeveloper's Guide Unity.pdfになっていることから取っ付きにくい印象でしたが、UnitySamplesのScriptsを見れば、大方使い方を理解できそうだと思います。

次回以降に、SDKの詳しい使い方を紹介できればと思います。