- Home /
 
Switching VR Camera's = double initial Rotation value
I have a strange problem when I try and swap OVRCamera's in Unity. I'm currently using Unity 5.4.1f1 and the latest ovr_unity_utilities_1.8.0.
I have edited the MultiCam script from the OculusSampleFrameworkProject_1.5.0 to allow me to swap between OVRPlayerControllers instead of OVRCameraRigs. It's set up to swap on a button press from the controller (for testing) and when the player collides with a trigger object, or when a player presses a button (using Gaze Pointer).
Anyway the issue I have is that whenever I switch to my second OVRPlayerController the initial rotation of the X and Z axis seem to be doubled so to the user the world is tilted.
For example if I leave my Oculus headset on the desk and look at the CenterEyeAnchor rotation settings for the first OVRPlayerController it may show X=-6 y=0 z=-0.1 wheras when I switch to the second OVRPlayerController the figures are x=-12 y=0 z=-0.2
I can't see why this would be the case?
The script is below.
 using UnityEngine;
 
 public class MultiCameraSetup : MonoBehaviour {
 
     public OVRPlayerController[] playerControllers = new OVRPlayerController[0];
 
     public Transform[] rayTransformControllers = new Transform[0];
     public int                currentController = 0;
 
     public OVRInput.RawButton forwardButton = OVRInput.RawButton.Y;
     public OVRInput.RawButton backwardButton = OVRInput.RawButton.X;
 
     public static bool doIStart = false;
     void Start() {
         UpdateCameraControllers();
         UpdateRayTransformControllers ();
     }
     public static void SwapBool() {
         if (doIStart == false) {
             doIStart = true;
             Debug.Log ("Bool Switched");
         }
     }
 
     void UpdateCameraControllers() {
         for (int i = 0; i < playerControllers.Length; i++) {
             if (playerControllers [i] == null) {
                 continue;
             }
             playerControllers [i].gameObject.SetActive (i == currentController);
             OVRManager.display.RecenterPose();
         }
     }
     void UpdateRayTransformControllers() {
             for ( int i = 0; i < rayTransformControllers.Length; i++ ) {
                 if ( rayTransformControllers[i] == null ) {
                     continue;
                 }
 
             RayTransforms.mainRayTransform = rayTransformControllers [i];
             }
 
         OVRGazePointer.instance.Awake();
     }
     void Update() {
         
         if (doIStart == true){
             doIStart = false;
             Debug.Log("Glowring Activated");
             SwapCameras ();
         }
 
         if ( OVRInput.GetDown(forwardButton)) {
             if ( ++currentController == playerControllers.Length ) {
                 currentController = 0;
             }
             UpdateCameraControllers();
             UpdateRayTransformControllers ();
         } else if ( OVRInput.GetDown(backwardButton)) {
             if ( --currentController < 0 ) {
                 currentController = playerControllers.Length - 1;
             }
             UpdateCameraControllers();
             UpdateRayTransformControllers ();
         }
     }
 
     void SwapCameras ()
     {
         if ( ++currentController == playerControllers.Length ) {
             currentController = 0;
         }
         UpdateCameraControllers();
         UpdateRayTransformControllers ();
     }
 
 }
 
 
              Your answer