Edited at

全天球で擬似ポジトラ

More than 3 years have passed since last update.


全天球で擬似ポジトラ


この記事はRICOH THETA Advent Calendar 2015の12日目です。

会社の引越し作業後の最強に寝たい状況で書いてます。

Thetaの写真、OculusDK2で見てますか?

そんなニッチ層向けの記事です。


Thetaの写真、ポジトラHMDで見ると酔うんだけど?

Thetaの写真をOculusRiftDK2で見ると、まぁ見やすいんだけどポジトラには対応してません。

いつものように顔を前後に動かすと

『あれ?景色が顔にくっついてくるんだけど???』

という状態になります。それもそのはず、Thetaは写場ですので、そもそもポジトラには対応していません。

これが、意外と酔います。


じゃあ、Theta写真をでかくすればいいんだろ?

残念ながら、そのまま大きくしても、Theta写真を貼り付けてる円も大きく距離も離れるため

意味がなくなります。試しに円の内側にTheta写真を貼り付けてスケール変えてみてください。

見え方は何も変わりません。


じゃあ、どうすればいい。Fovを変えましょう。

Fov(Field of view)を変えてあげましょう。

oculusランタイム0.44の頃は、fovが自由に変えられました。

そこからしばらくはfovが固定される不遇の時代でしたがunity5.3から再び変更できるようになっています。


なんでFovを変えるの?

全天球視聴の場合はFovがズームの役割を担います。

それを利用して、HMDのポジトラから

・近づいたらちょっとズームアップ

・遠ざかったらちょっとズームダウン

してあたかもその写場に対して移動できているような錯覚を与えます。

このアイデアはVR師匠の桜花さんとoculusアプリ開発者のゆーじさんから教えて頂きました。


Q.効果は?

A.抜群。

全天球写真/動画を2年以上作り続けていますが、この仕組みを取り入れてから酔が格段に減りました。

ただし、この効果が自然すぎて”気付かれない”事が多いです。正直”デフォルト機能”として入れられることを期待しています。


計算式はよ


fovcontroller.cs

camera_Vec = cam.transform.forward;

pos_Vec = cam.transform.position;
dot = - Vector3.Dot (camera_Vec, pos_Vec);//前後方向成分のみ抜き出し
cam.fieldOfView = fov + (dot * level);//levelで変動値調整