Exemple #1
0
        /// <summary>
        /// Creates a new monoscopic camera.
        /// </summary>
        /// <param name="preserveAspectRatio">Preserves the aspect ratio of the video
        /// background and augmentations as the screen size changes.</param>
        public MonoCamera(DisplayManager displayManager, bool preserveAspectRatio) : base(displayManager)
        {
            this.preserveAspectRatio = preserveAspectRatio;
            this.opticalSeeThrough   = false;

            gameObject = new GameObject("Mono Camera");

            // set camera pose
            gameObject.transform.SetParent(displayManager.transform, false);
            if (useImuPose)
            {
                gameObject.transform.localPosition = Vector3.zero;
                gameObject.transform.localRotation = Quaternion.identity;
            }
            else
            {
                float[] posRaw = new float[3];
                float[] rotRaw = new float[4];
                DSHUnityPlugin.CameraGetPose(posRaw, rotRaw);
                gameObject.transform.localPosition = ServiceManager.Vector3FromFloatArray(posRaw);
                #if !UNITY_EDITOR
                gameObject.transform.localRotation = ServiceManager.QuaternionFromFloatArray(rotRaw);
                #endif
            }

            camera = gameObject.AddComponent <Camera> ();
            InitCamera(camera);

            ServiceManager.Instance.VisionParametersAvailable += Resize;
            DisplayManager.Instance.ScreenSizeChanged         += Resize;
        }
        void Setup()
        {
            float[] posRaw = new float[3]; float[] rotRaw = new float[4];
            DSHUnityPlugin.CameraGetPose(posRaw, rotRaw);

            float visionAspect = ServiceManager.Instance.GetVisionAspectRatio();

            float dist    = ServiceManager.Instance.GetFarClipPlane() * 0.95f;
            float halfFov = Mathf.Deg2Rad * (ServiceManager.Instance.GetVisionFieldOfView() / 2.0f);
            float height  = Mathf.Tan(halfFov) * dist * 2.0f;
            float width   = visionAspect * height;

            //var rot = ServiceManager.QuaternionFromFloatArray (rotRaw);
            transform.localPosition = /*ServiceManager.Vector3FromFloatArray(posRaw) + rot * */ (new Vector3(0.0f, 0.0f, dist));
            #if !UNITY_EDITOR
            //transform.localRotation = rot;
            #endif
            transform.localScale = new Vector3(width, -height, 1.0f);
        }