コード例 #1
0
        public void ApplyCorrectedProjectionMatrix(Matrix4x4 projectionMatrix, bool primaryCamera)
        {
            Matrix4x4 inverse = projectionMatrix.inverse;

            if (primaryCamera)
            {
                this.mExternallySetLeftMatrix = projectionMatrix;
                CameraConfigurationUtility.ExtractCameraClippingPlanes(inverse, out this.mNewLeftNearClipPlane, out this.mNewLeftFarClipPlane);
                this.mNewLeftVerticalVirtualFoV   = CameraConfigurationUtility.ExtractVerticalCameraFoV(inverse);
                this.mNewLeftHorizontalVirtualFoV = CameraConfigurationUtility.ExtractHorizontalCameraFoV(inverse);
            }
            else
            {
                this.mExternallySetRightMatrix = projectionMatrix;
                CameraConfigurationUtility.ExtractCameraClippingPlanes(inverse, out this.mNewRightNearClipPlane, out this.mNewRightFarClipPlane);
                this.mNewRightVerticalVirtualFoV   = CameraConfigurationUtility.ExtractVerticalCameraFoV(inverse);
                this.mNewRightHorizontalVirtualFoV = CameraConfigurationUtility.ExtractHorizontalCameraFoV(inverse);
            }
            if (this.CameraParameterChanged())
            {
                ScreenOrientation screenOrientation;
                this.CheckForSurfaceChanges(out screenOrientation);
            }
            this.mPrimaryCamera.projectionMatrix   = this.mLastAppliedLeftProjection;
            this.mSecondaryCamera.projectionMatrix = this.mLastAppliedRightProjection;
            if (base.IsVideoBackgroundEnabled())
            {
                this.mVideoBackgroundBehaviours[this.mPrimaryCamera].ApplyStereoDepthToMatrices();
                this.mVideoBackgroundBehaviours[this.mSecondaryCamera].ApplyStereoDepthToMatrices();
            }
        }
コード例 #2
0
        public static Matrix4x4 ScalePerspectiveProjectionMatrix(Matrix4x4 inputMatrix, float targetVerticalFoVDeg, float targetHorizontalFoVDeg)
        {
            Matrix4x4 result   = inputMatrix;
            float     num      = targetVerticalFoVDeg * 0.0174532924f;
            float     num2     = targetHorizontalFoVDeg * 0.0174532924f;
            double    arg_3C_0 = (double)(CameraConfigurationUtility.ExtractVerticalCameraFoV(inputMatrix.inverse) * 0.0174532924f);
            float     num3     = CameraConfigurationUtility.ExtractHorizontalCameraFoV(inputMatrix.inverse) * 0.0174532924f;
            float     num4     = (float)(Math.Tan(arg_3C_0 / (double)2f) / Math.Tan((double)(num / 2f)));
            float     num5     = (float)(Math.Tan((double)(num3 / 2f)) / Math.Tan((double)(num2 / 2f)));

            result[0] = result[0] * num5;
            result[8] = result[8] * num5;
            result[5] = result[5] * num4;
            result[9] = result[9] * num4;
            return(result);
        }