Oculus Goで楽しむ立体写真を作成する

Oculus Goのギャラリーアプリで、2Dの映画を見ると、映画館の中で、大スクリーンを見ている感覚で、本当に迫力あります。
自作の立体写真も、是非、この大スクリーンに投影してみたいということで、やり方をしらべたら、ギャラリーアプリでもVR180フォーマットもしくは、半天球SBS、全天球T/Bフォーマットに載せてあげれば、見られる事が分かりましたが、全天球空間のどこにどういう大きさで立体写真を配置するかとか、普通に立体写真を表示すると、円筒に投影されるのですが、平面に投影したいとか、色々希望がでてきますが、これを、いちいち出来合いのアプリでやるのは、結構大変です。ということで、SPMで、簡単にOculus Goで見られる立体写真を保存する機能を作成しました。もちろん、一括変換もできますので、大量のファイルもOculus Goのギャラリーアプリでスライドショー上映もできるようになります。

wakufactoryさんが、Oculus Goのブラウザアプリで見られるWEBビューワー「360 VR photo viewer」を公開してくれましたので、これを使うと、SPMで作成した半天球SBSや全天球T/Bフォーマットの立体写真をWEB上で公開することもできます。サンプルは、こちらをご覧ください。

ステレオフォトメーカーのページから最新SPMベータ(Ver5.26p以降で対応)をダウンロードしてください。
1.立体写真を開き、メニュー→編集→全天球画像編集→VR180ファイルとして保存を選ぶ
 
2. オプションの説明
2-1 全天球想定解像度
全天球(水平360°、垂直180°)を正距円筒図法(equirectangular)という横:縦=2:1の画像の中に埋め込む形で指定します。
Oculus Goのギャラリーアプリは、4K(3840x2160)以上は、動作が不安定となるようです。たとえ、VR180フォーマットで小さい画像でも、アプリ内で全天球展開しているみたいなので、4K程度に設定しておく方が無難です。また、全天球処理に使用するOpenGLのテクスチャーサイズは、2のべき乗という制限があり、それ以外のサイズは、変換され、2のべき乗で処理されます。
ということで、デフォルトの4096x2048のままをお勧めします。6000x3000でも動作しましたが、画質の差は良く判りませんでした。

2-2 表示画角
全天球空間のどこに表示するかを、水平画角、垂直画角で指定します。
ここで、指定した範囲に収まるように、全天球想定解像度と、元画像のアスペクト比から、画像を自動的にリサイズします。
円周上に立体写真を上映する場合、カメラで撮影した画角と、表示する画角を合わせた方が、違和感は少なくなります。
例えば、35mm換算で、焦点距離と水平画角の関係は、
24mm - 73.7°
28mm - 65.5°
35mm - 54.4°
50mm - 39.6°
となります。もちろん、トリミング等を行うと変わってしまいますが、目安と考えていただければと思います。
また、後述するように、投影方法を平面投影にすると、撮影画角と表示画角が違っていても、違和感はなくなると思います。
Oculus Goの表示画角は、水平、垂直90°くらいですが、実際に見られるのは、60〜70°くらいです。
デフォルトは、ギャラリーアプリの動画再生のスクリーンに合わせて水平70°垂直50°としています。
例えば、水平だけ指定したい場合は、垂直は180°にすれば、水平で指定できる事になります。

2-3 投影方法
正距円筒図法(equirectangular)の中に、立体写真を配置して、Oculus Goで見ると、円筒に投影したように見えます。
平面に投影するには、あらかじめ、画像を真ん中が膨らむ形に変形させてあげるようにする必要があります。
平面投影補正値は、初期値が75となっていますが、100とか大きく設定すると、補正しきれず、円筒に見えるようになり、逆に小さくすると、補正し過ぎで逆円筒になっていきます。
投影方法は、好みによりますので、色々、いじって、好みの投影方法をお選び下さい。

2-4 出力画像タイプ
VR180 : 左画像のJPEGファイルの中に、XMLで右画像と、全天球想定解像度や全天球の何処に画像を配置するかの数値データを埋め込んでいます。普通に開くと左画像しか見えませんが、SPM(メニュー→編集→全天球画像編集→VR180JPEGを開く)やOculus Goのギャラリーアプリでは、自動で全天球空間に指定された情報を元に立体再生してくれます。拡張子は、「.vr.jpg」です。

半天球SBS : 正距円筒図法(equirectangular)の半分、例えば、全天球4096x2048の場合、2048x2048の中央に指定の画角で立体写真を配置し、左右画像をサイドバイサイド形式で保存します。Oculus Goのギャラリーアプリでも、表示できますが、手動で、180°3Dを選択する必要があります。前述のWEBビューワー「360 VR photo viewer」を使用する場合は、この形式で保存することをお勧めします。

全天球T/B : 正距円筒図法(equirectangular)の中央に指定の画角で立体写真を配置し、左右画像をトップアンドボトム形式で保存します。Oculus Goのギャラリーアプリでも、表示できますが、手動で、360°3Dを選択する必要があります。全天球3D画像形式としては、一番標準的な画像形式です。

2-5 フローティングウィンドウ
普通の立体写真の場合、ウィンドウバイオレーションを起こさないように、立体を奥側に配置することが多いですが、Oculus Goの場合、奥側のズレが大きいと焦点を合わせるのが難しくなります。フローティングウィンドウで、画像全体を手前にもってくることで、見やすくなる可能性があります。
画像横幅に対する、比(0.1%単位)で指定します。 3%の場合は、30と入力して下さい。
出力例) 
平面投影 VR180


円筒投影 半天球SBS


円筒投影 全天球T/B
一括変換のやり方
メニュー→ファイル→一括変換
出力ファイル形式で「VR180 for Oculus」「JPG]を指定します。
他の設定も可能だと思います(未確認)。
注意)他の一括変換系のダイアログでも、「VR180 for Oculus」が選択できる事がありますが、処理できませんので、ご注意下さい。
処理開始ボタンを押すと、設定画面が表示されるので、お好みの設定で、一括変換してください。
作成した画像は、Oculus Goに転送し、ギャラリーアプリ等で、ご鑑賞下さい。
Oculus 360 Photosというアプリでも再生できましたが、ジャギーが目立ちお勧めできません。