UnityでVR用カメラを自作しよう


皆さんご存知、あの、なかしまです。

ここ数年業界内でVR熱が激しさを増していますが、そのせいか色々とツールやプラグインが充実しすぎて、簡単にコンテンツが作れてしまいます。

別にそれは悪いことではないのだけれど、なんとなく不安になるのが技術者の性というものではないでしょうか。

そこで今回はVRアプリを作るためのカメラコンポーネントを自作してみようと思います。

 

カメラを配置する

まずは、画面にカメラを格納する空のゲームオブジェクトと、カメラを2つ準備します。
スクリーンショット 2015-03-27 14.14.12
二つのカメラには視差をつけなければいけないので、ここでは適当にパラメータを指定しておきます。
スクリーンショット 2015-03-27 14.15.56
これで簡単なVR用カメラの完成です。

VRカメラの視差をインスペクタから変更する

これだけだと不便なのでインスペクタから視差を調整できるようにします。

 

public Camera cameraL;
public Camera cameraR;

[Range(0.1f, 10.0f)]
public float parallax = 1.0f;

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

}

void OnValidate() {
var position = new Vector3 (parallax, 0, 0);
cameraL.transform.localPosition = -position;
cameraR.transform.localPosition = position;
}

スクリーンショット 2015-03-27 14.29.01

これで、視差を簡単に変更出来るようになりました。

画面をレンズに合わせて湾曲させる

これだけでもある程度VR感を出すことは出来ますが、よりよくするために画面を球に湾曲させVR端末で見たときに自然になるようにします。
スクリーンショット 2015-03-27 14.35.28
これはすでにすでに存在しているオキュラスの形を参考にして作成してみます。
まずはDemoのスクショを撮影して見本を手に入れます。
スクリーンショット 2015-03-27 14.41.26
見本をプロジェクトに取り込んでアタリにします。
スクリーンショット 2015-03-27 14.47.17
歪まさせるのには魚眼レンズを使います。見本を見ながらそれっぽい値を探してみましょう。
スクリーンショット 2015-03-27 14.59.01
歪みに関しては、デバイスに依存する部分なので簡単に変更出来る仕組みを入れておくと便利です。

早速実機でテスト

完成したらアプリを作成して実際に見てみましょう!歪みがある分、デバイスに最適化されてとてもちゃんと見えますよ!

 

やっぱりVRは面白いですね!もう時代はモバイルからVRに変わってると思います。さよなら現実世界!!!