VRではトラッキング方式と密接に関わるシステム構成として、Outside-InとInside-Outがあります。第1回の今回は、外の空間側にカメラが設置され、VRヘッドセットを観測することによりVRヘッドセットのトラッキングを行うOutside-In方式について勉強します。
はじめに
VRではトラッキング方式と密接に関わるシステム構成として、Inside-OutとOutside-Inがあります。トラッキング方式の詳細に入る前に、まずこの言葉の意味を知っておきましょう。
ことばの定義
Outside-In
従来方式ということでまずOutside-Inを説明します。Outside-Inというのは、外側から内を観測するという意味合いで、すなわち外の空間側にカメラが設置され、VRヘッドセットを観測することによりVRヘッドセットのトラッキングを行う方式になります。
Inside-Out
逆にInside-Outというのは、内側から外を観測するという意味合いで、すなわちVRヘッドセット側にカメラが搭載され、外界を観測することによりVRヘッドセットのトラッキングを行う方式になります。比較的新しい方式と言えます。
それでは詳細に入って行きます。
Outside-In
繰り返しになりますが、Outside-Inは外の空間側にカメラが設置され、VRヘッドセットを観測することによりVRヘッドセットのトラッキングを行う方式です。
代表的な機器として、PS VR, Oculus Rift, HTC Vive (Pro)があげられます。
PS VR
PS VRの場合、VRヘッドセットが青く光り、その可視光源の位置や形状をステレオカメラで観測することにより、VRヘッドセットの位置と向きを推定します。
ステレオカメラであるPS Cameraのカメラ間隔は、人間の目と目の間の距離(Inter-pupillary Distance = IPD)とほぼ同じに設定されていますので、あなたの視覚とほぼ同じ視差でVRヘッドセットを観測していることになります。
では、あなたの目の前2m離れた場所にあるものを見てみましょう。そして顔を5cm程度前後に動かしてみます。見ているものに変化を感じましたか ? 恐らくほとんどの人が、視界の周辺部の変化は顕著に感じると思いますが、正面に見えているものの大きさにはほとんど違いを感じないと思います。
しかしVRヘッドセットを被って顔を5cm程度前後に動かしたときに、VR空間が正確に5cm程度動いてくれないと、顕著に違和感を感じます。つまり、トラッキングシステムは、ほとんど変化しないこの微妙な大きさの違いを本来正確に認識しないといけない、ということになります。
トラッキングの詳細は別の回に譲りますが、PS VRの場合だと、VRヘッドセットの位置と方向を7か所という少ない青色光源の位置、面積、形状、複数の光源間の距離や位置関係から正確に割り出さないといけないわけで、特に絶対位置の検出に対しては、ほとんど不可能なことに開発者は挑んでいると言えます。(つまり、あなたは目の前にあるものが、1m95cm先か2m先か見分けられますか ? ということなのです)
PS Moveでの資産をできる限り生かす施策のしわ寄せと言ってよいと思いますが、その弱点を補うために、絶対的な位置や向きではなく、相対的に正確で滑らかな位置や向きの推定に注力していることは想像に難くありません。
Oculus Rift
Oculus Riftの場合、可視光ではなく赤外光源を利用しています。VRヘッドセットの表面に、Constellation(星座 – なんとも素敵な表現 !)と呼ばれる赤外線LEDが44個も配置され、それらを赤外線カメラであるOculus Sensorで観測することにより、VRヘッドセットの位置や向きを推定します。
赤外線なので光っているところは目で見えませんが、“oculus rift constellation” で検索すると、赤外線カメラ映像を見ることができます。トラッキングの回で深堀りしますが、実は44個の赤外線LEDがばらばらにまたたいているんですよ。LEDの場所を即座に特定するためのしくみと考えられますが、なんともロマンティックな仕様です。
PS VRに比べて圧倒的に光源数が多いので、単眼の赤外光カメラでも比較的精度よくVRヘッドセットの位置と向きを推定できているのではないかと考えられますが、それでもカメラから離れるほど検出精度が指数関数的に劣化することは容易に想像できます。
その弱点を補うために、Oculus Sensorを2台設置し、その間の空間でVRヘッドセットを使用することが強く推奨されています。片方から遠ざかると片方に近づくため、一定の精度を確保できるというわけです。
また、オクルージョン状態すなわち手前のものにさえぎられて奥のものが見えない状況を回避する意味でも、2台以上のセンサーを用いる効果は大きいです。
さて、PS VRが可視光源なのに対し、Oculus Riftでは赤外光源が用いられていました。簡単に言ってしまうと、可視光源は環境光の影響を受けやすい面があり、赤外光源の方が外乱要素が少ないと言えます。
HTC Vive
一方HTC Viveの場合はかなり様相が異なります。
Lighthouse(灯台 – これまた想像をかき立てられる名前ですね !)を2台設置し、その間の空間で32個のあばた顔のVRヘッドセットを使用する構成は、Oculus Riftと同じように見えますが、実はLighthouse側に赤外線LED群が搭載され、フラッシュしたりサーチ/スウィープしながら光っていて(だから灯台なんですね !)、32個のあばたのひとつひとつがフォトディテクター(赤外線受光部)になっています。
“htc vive lighthouse” で検索すると、Lighthouseが光っているようすや各赤外線受光部で時間間隔を計測するしくみが示されていたり、分解ハッキング記事も数多くみられます。どれもとてもおもしろいので、是非読んでみましょう。
そのしくみは複雑で、どこまで実際のトラッキングに使われているのかわかりませんが、Lighthouseに搭載された各赤外線光源は周波数が変えられ、さまざまなタイミングで入ってくる赤外線信号をVRヘッドセット側の各受光部が受け取ることにより、どの光源からきた信号がいつ入ったかを精密に検出することができ、その情報から各受光部の絶対位置を高精度に割り出し、VRヘッドセットの位置と向きを精度よく推定します。
言うなれば、LighthouseはTVのリモコンが束になっているようなもの、VRヘッドセット側にはTVのリモコン受光部が束になっているようなものですね。TV+リモコンでは、各社で赤外線信号の周波数やヘッダー情報をはじめとするフォーマットが異なるため混信しないわけですが、似たような工夫がこのシステムには詰まっています。
HTC Viveは三者の中でもっともトラッキング精度が良いと言われていますから、VRヘッドセットの位置検出においては、カメラ画像の分解能よりも赤外線信号の時間分解能の方が、精度面で高く寄与できるということなんですね。
Controller
トラッキング対象としてVRヘッドセットのほかにコントローラーがあります。PS VRはPS Move、Oculus RiftはOculus Touch、HTC ViveはWand Controllerがあげられますが、そのトラッキング方式はそれぞれのVRヘッドセットのトラッキング方式と同じものになります。
すなわち、PS Moveは可視光で光りますし、Oculus Touchは輪っか部分に赤外線LEDが散りばめられています。そして、Wand Controllerには赤外線受光部が装備されているわけです。
その他の特徴
Outside-In方式の特徴として、外部デバイス(すなわちカメラやLighthouseのこと)が配置されることがあげられます。これにより、VR体験できるスペースはその外部デバイスが効力を発揮する空間に限られます。
この制限の助けもあり、Outside-In方式の場合はデバイスはすべてPCに接続され、高負荷演算はPCで行うのが普通です。(PS VRはPS4、PS5ですね)ハイエンドPCを利用することにより、高精度なトラッキングを低遅延で行えることは大きなメリットです。
さいごに
長くなってしまったのでInside-Outは次回にしますね。
PS VRやOculus Riftでは、外界にカメラがあってVRヘッドセット上に配置された光源を検出することによって、VRヘッドセットの位置と向きを推定するということで、Outside-Inということばの定義にも整合するものでした。
一方HTC Viveの場合は、外界に光源があってVRヘッドセット側に受光部があるという構成なのでOutside-Inって言っていいの ? むしろInside-Outなんじゃないの ? という意見もあるかも知れませんが、外界側にもデバイスが必要ということで、一般にはOutside-Inにくくられるかと思います。
まあ定義は定義でしかないので、この素晴らしいしくみを正しく理解していれば良いでしょう。正直この複雑怪奇なシステムを最初に考えた人は天才だと思っています。
勉強になりましたか ? 次回はInside-Outです。お楽しみに !