LoginSignup
10
11

More than 5 years have passed since last update.

[Unity] VRのカメラトラッキングを切る

Posted at

はじめに

カメラの動きを制限したい

HMDの動きをトラッキングされちゃうと困っちゃうときってありますよね.

回転トラッキングを切りたいんですが,位置トラッキングを切る記事はあれど回転トラッキングを切る方法が見つかりません.

「VR用のカメラの前にUIでRawImageを張り付けて,別のカメラで撮影したイメージを描写する」
なんてことをやってたんですが,カメラ位置の調整がとんでもなく面倒です.もしくは不可能です.

ということで探しました.

視点固定の方法

XRDevice.DisableAutoXRCameraTracking()

トラッキングをオフするコード

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR;

public class CameraControlForVR : MonoBehaviour
{
    [SerializeField] Camera target;

    // Use this for initialization
    void Start()
    {
        XRDevice.DisableAutoXRCameraTracking(target, false);
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown("a"))
        {
            XRDevice.DisableAutoXRCameraTracking(target, false);
        }
        if (Input.GetKeyDown("s"))
        {
            XRDevice.DisableAutoXRCameraTracking(target, true);
        }
    }
}

  • インスペクタでCameraにVR用のカメラを指定してあげる
  • aを押下するとトラッキングOn
  • sを押下するとトラッキングOff

という単純なスクリプトです.

結果

きちんとカメラの姿勢・位置が固定されました.
描写自体が止まっているように見えますが,後ろで動いているものはきちんと動いて見えます.

結論

視点を強制的に固定する方法がわかった.

問題点

回転だけでなく位置トラッキングも切れる

位置だけはトラッキングしたいんだよなあというときには使えません.
工夫の必要がありそうです.

再開時に視点が飛ぶ

トラッキングを再開したときに向いている向きに視点が飛びます.
シームレスに変化させたいときはこれまた工夫がいりそうです.

ひとまず備忘録として.
暇があれば文章を整えます.

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11