3.1. フェイストラッキングシステムの制約
3.1.1. デプス推定
これまで、スクリーンに対するユーザー相対位置は完全に把握できると想定してきました。しかし残念ながら、SNAKE では完全な位置の把握はできません。フェイストラッキング機能により検知できるユーザー位置は、角度の面では良い精度で取得できますが、ユーザーとの距離については正確に計算することはできません。
そこでユーザーとの距離については、立体視効果を最大限享受できる最適視認距離にユーザーがいる、と想定することにします。
3.1.2. 平均的な両目の間隔値の使用
たとえシステムによって両目の位置を追跡できたとしても、個々のユーザーの実際の両目の間隔を知ることはできません。カメラ画像に写るユーザーの両目の間隔はスクリーンからの距離に応じて変わるため、そのまま両目の間隔として使うことはできません。そこで、平均的な両目の間隔を持つ仮想のユーザーを想定します。最適視認距離にユーザーがいるときに両目の間隔が平均値になるという想定で、カメラ画像に写る実際のユーザーも同じだと考えます。カメラ画像から得られる生の値ではなく、この仮想のユーザーの目の位置を全ての計算で使います。
3.1.3. ユーザー検出失敗時の対処
ユーザーがフェイストラッキングシステムの視認範囲外にでることがあります。悪条件のせいで認識がされないこともありえます。この場合、フェイストラッキングシステムは直前の位置情報とジャイロ入力を用いてユーザー位置について最善と思われる推測値を算出します。推測は直前に検出したユーザー位置から始めます。しばらくの間ジャイロ入力から SNAKE 本体に動きがないと分かった場合、推測値は時間とともに画面中央に移ります。検出できない期間が続いたときに、ユーザーは画面中央に戻ってくるだろうと想定しているからです。SNAKE 本体が動いている場合、ユーザーは静止し本体が動かされていると想定し、本体の動きからユーザー位置を推定します。
この挙動は少なくとも 3D ブレ防止機能のない立体液晶と同等のユーザー体験が得られるように設計されています。また、ユーザーが本体を動かした場合にも、良いユーザー体験を提供できます。
3.2. 快適性と最大視差
実験によって視差を保つことの重要性がわかっています。視差の限界距離という特別な値を考慮して、両目の左右画像におけるオブジェクトの距離を設計する必要があります。もしこの限界を超えていたら、多くのユーザーは不快に感じるでしょう。
先の章で説明した理想的な立体視カメラを利用し、オブジェクトがウィンドウ面からはるか遠くにある場合に、そのような状況が発生します。実際、無限遠に配置されたオブジェクトを両目の距離と同じだけ離して描画されると視差が大きくなってしまいます。この制約を踏まえて使える手法があります。
3.2.1. ニアクリップ面とファークリップ面
ウィンドウ面の近くにニアクリップ面とファークリップ面を設定すれば、目にするオブジェクトの最大視差を低減できます。
3.2.2. 両目間隔の縮小
他に両目間隔を短くしてシーンを描画し最大視差を低減させる方法があります。こうすることで遠くのオブジェクトの視差を低減できますが、近くのオブジェクトの立体視効果も低減されてしまいます。
3.2.3. FOV の拡大
以降のパートで説明しますが、ファークリップ面での視差は FOV を大きくすることで低減可能です。