Unity Days ときどき blender

Unity や VR/AR に関すること。たまにblender。

Oculus Riftでのカメラ位置の初期化

目的

UnityのVirtual Reality Supportedを利用すると、Main Cameraが自動的にセンサーで取得した位置に移動します。 このままでは扱いにくいので、指定の位置にカメラを配置するスクリプトを作ります。 Unityの標準で使えるInputTrackingを使って実装することで、特別なアセットを使うことなく、他のHMDでも機能するように実装したつもりです(Riftしか持っていないのでViveとかで動作確認できてません。)

手順
  1. Player Settings → Virtual Reality Supported にチェックを入れる
  2. Empty GameObject を作り、VRCameraと名づける
  3. Main CameraをVRCameraの子オブジェクトにして、Main CameraのPositionを(0,0,0)にする
  4. vrcameraスクリプト(以下参照)を作ったオブジェクトに追加する

これでMain Cameraがvrcameraオブジェクトの位置で初期化できる。

f:id:Dmiyamo3:20170709112834p:plain

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.VR;

public class vrcamera : MonoBehaviour {
    void Start () {
        Vector3 pos = InputTracking.GetLocalPosition(VRNode.CenterEye);
        this.transform.position -= pos;
    }
}