#ChannelPlayer · FOVE · Rift · Unity · VRソフト

トラッキングオフ実装の調整

#ChannelPlayerのStore版と、FOVE/Rift共用版では実装が異なり、カメラに前者ではOVRCameraRigを使っていて、後者では普通のUnityのCamera+FoveInterface2を使っている。トラッキングオフを両方とも実装しているが、Unityのカメラと異なり、OVRの方はトラッキングを停止すると、どうしてもカメラの向きや位置がずれてしまっていた。位置が合うように現在のHMDの位置と角度を取得して反映させるようにしたが、FOVE/Rift共用版では問題無いのだが、OVRの方は一瞬ブレてしまう。どうにも直せないのでトラッキングオフ/オンの際に、1フレームだけOVRのカメラを停止させるようなワークアラウンドを入れてみた。良好になった。以下にコードを示すが、SetActive()とpauseWAを使って、カメラのトラッキングオフ/オンの瞬間だけ、カメラを停止している。

    void LateUpdate()
    {
        trackingPos = UnityEngine.XR.InputTracking.GetLocalPosition(UnityEngine.XR.XRNode.CenterEye);
        trackingRot = UnityEngine.XR.InputTracking.GetLocalRotation(UnityEngine.XR.XRNode.CenterEye);

        if (pauseWA)
        {
            pauseWA = false;
            _Camera.SetActive(true);
        }

        // Camera Tracking off/on
        if (Input.GetButtonDown("XB1Menu") || Input.GetKeyDown(KeyCode.X))
        {
            if (_fixed)
            {
                _Camera.SetActive(false);
                pauseWA = true;
                // 非固定にする。
                OVRManager.instance.usePositionTracking = true;
                OVRManager.instance.useRotationTracking = true;
                //XRDevice.DisableAutoXRCameraTracking(_camera, false);
                _fixed = false;
                
            }
            else
            {
                _Camera.SetActive(false);
                pauseWA = true;
                // 固定にする。
                OVRManager.instance.usePositionTracking = false;
                OVRManager.instance.useRotationTracking = false;
                //XRDevice.DisableAutoXRCameraTracking(_camera, true);
                _fixed = true;
                // 現在位置をベースにする
                basePos = trackingPos;
                baseRot = trackingRot;
            }
        }
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中