예제 #1
0
            private void GetDeviceDescription()
            {
                var displayJson = context.getStringParameter("/display");

                deviceDescriptor = DeviceDescriptor.Parse(displayJson);
                if (deviceDescriptor != null)
                {
                    //// temporary overrides to simulate OSVR HDK
                    //// without actually reading in the json value
                    //deviceDescriptor.DisplayMode = "horz_side_by_side";
                    //deviceDescriptor.MonocularHorizontal = 90f;
                    //deviceDescriptor.MonocularVertical = 101.25f;
                    //deviceDescriptor.OverlapPercent = 100f;
                    //deviceDescriptor.PitchTilt = 0f;
                    //deviceDescriptor.K1Red = 0f;
                    //deviceDescriptor.K1Green = 0f;
                    //deviceDescriptor.K1Blue = 0f;
                    //deviceDescriptor.RightRoll = 0f;
                    //deviceDescriptor.LeftRoll = 0f;
                    //deviceDescriptor.CenterProjX = 0.5f;
                    //deviceDescriptor.CenterProjY = 0.5f;

                    LeftEye  = new VREye(pose, Eye.Left, deviceDescriptor);
                    RightEye = new VREye(pose, Eye.Right, deviceDescriptor);

                    switch (deviceDescriptor.DisplayMode)
                    {
                    case "full_screen":
                        ViewMode = MonoGame.ViewMode.Mono;
                        break;

                    case "horz_side_by_side":
                    case "vert_side_by_side":
                    default:
                        ViewMode = MonoGame.ViewMode.Stereo;
                        break;
                    }
                    //SetResolution(deviceDescriptor.Width, deviceDescriptor.Height); // set resolution before FOV
                    VerticalFieldOfView = MathHelper.Clamp(deviceDescriptor.MonocularVertical, 0, 180);
                    // TODO: should we provide HorizontalFieldOfView?
                    //SetDistortion(deviceDescriptor.K1Red, deviceDescriptor.K1Green, deviceDescriptor.K1Blue,
                    //    deviceDescriptor.CenterProjX, deviceDescriptor.CenterProjY); //set distortion shader

                    // if the view needs to be rotated 180 degrees, create a parent game object that is flipped
                    // 180 degrees on the z axis
                    if (deviceDescriptor.Rotate180 > 0)
                    {
                        LeftEye.RotatePi  = true;
                        RightEye.RotatePi = true;
                    }

                    SetEyeRotation(deviceDescriptor.OverlapPercent, deviceDescriptor.MonocularHorizontal);
                    SetEyeRoll(deviceDescriptor.LeftRoll, deviceDescriptor.RightRoll);
                }
            }
예제 #2
0
 /// <summary>
 /// This function will parse the Json display parameters from /display using Newstonsoft
 ///
 /// Returns a DeviceDescriptor object containing stored json values.
 /// </summary>
 public DeviceDescriptor GetDeviceDescription()
 {
     return(_deviceDescriptorJson == null ? null : DeviceDescriptor.Parse(_deviceDescriptorJson));
 }