UnityでFOVEがキャリブレーション中かどうか?など
AnsweredFOVE対応にしているのですが、FOVEを身につけるとキャリブレーションモードになります。
1.この間アプリケーションの実行をpauseしたいのですが、キャリブレーション中を知る方法はありますでしょうか?
2.その後、キャリブレーションが成功したかどうかを判断する方法はありますでしょうか?失敗した場合は、どういうシーケンスが良いのでしょうか?
よろしくお願いします。
-
お世話になります。
私自身がUnityをほとんど知らないので、不正確・不親切な回答になってしまうかもしれませんが、ひとまずお答えします。
一つ目の質問ですが、キャリブレーション中かどうかの確認は次の関数でできると思います。
static bool UnityEngine.FoveInterface.IsEyeTrackingCalibrating ()
http://docs.getfove.com/unityapi/class_unity_engine_1_1_fove_interface.html#a984f4cdb7f0864b1ff30ea1bafe1e1fb
また、キャリブレーションを実施する関数・キャリブレーション済みかどうかを確認する関数もございます。(プラグインのチェックボックスを有効にしている場合、開始時に自動的にキャリブレーションを行います)
-
二つ目の質問、キャリブレーションに成功しているかどうかを知る方法についてですが、現在は「ありません」。
まず、FOVE Software v0.11.4 のキャリブレーションプロセス自身には、失敗を自身で認識する機能がありません。
ドリフト補正(被りなおしたりして顔がずれたときに補正する)の失敗は認識しますが、これはキャリブレーションの成功・失敗とは別です。「キャリブレーション失敗」は、FOVE Software が提供する視線ベクトルが、プレイヤーが見ている方向を正確に示さない状況を指すと考えております。
v0.11.4 時点では、この「キャリブレーション失敗」は、キャリブレーション後に何かを見てもらって視線ベクトルが期待通りかをテストしない限り判断できません。
アプリケーション側で、「キャリブレーション精度をテストして再度キャリブレーションをする機構」か、あるいは「キャリブレーション失敗だと思ったプレイヤーが自ら再キャリブレーションを開始するための操作手段」を提供、ということになると思います。アイトラッキングの精度向上にはFOVEとしても尽力しており、次回リリース予定のFOVE Softwareでも改善する見込みです。
しかしながら、現時点ではそのような対応をお願いすることになります。
お手数をおかけして申し訳ありません。キャリブレーションの開始は次の関数で可能です。
static bool UnityEngine.FoveInterface.EnsureEyeTrackingCalibration()
http://docs.getfove.com/unityapi/class_unity_engine_1_1_fove_interface.html#a990b5170230434c7e34118dca9d571eaキャリブレーション失敗時のフローをどうするか、というのはアプリケーションのデザインにもよると思います。
なお、私が何かを実装するとしたら
- 視線ベクタの方向をユーザーが知る手段
(常時表示で邪魔ならば何かのボタンを押している間のみ表示するなど)
- ユーザー操作で再キャリブレーションする機能
- ユーザー操作で視線追跡をアプリケーション側で無視し正面を見ていると見なす機能
(FOVE VRの Eye tracking modeでも視線追跡を無効化できますが、設定変更にはFOVEランタイムを一度停止する必要があります)
を自分が使うために入れると思います。
自分が使うだけならアプリケーション側で失敗を認識する必要はありませんので…。つたない回答ですみませんが、よろしくおねがいします。
Please sign in to leave a comment.
Comments
4 comments