Esempio n. 1
0
    private void ConfigureEyeDesc(UnityEngine.VR.VRNode eye)
#endif
    {
        if (!OVRManager.isHmdPresent)
        {
            return;
        }

        int eyeTextureWidth  = Settings.eyeTextureWidth;
        int eyeTextureHeight = Settings.eyeTextureHeight;

        eyeDescs[(int)eye]            = new EyeRenderDesc();
        eyeDescs[(int)eye].resolution = new Vector2(eyeTextureWidth, eyeTextureHeight);

        OVRPlugin.Frustumf2 frust;
        if (OVRPlugin.GetNodeFrustum2((OVRPlugin.Node)eye, out frust))
        {
            eyeDescs[(int)eye].fullFov.LeftFov  = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.LeftTan);
            eyeDescs[(int)eye].fullFov.RightFov = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.RightTan);
            eyeDescs[(int)eye].fullFov.UpFov    = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.UpTan);
            eyeDescs[(int)eye].fullFov.DownFov  = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.DownTan);
        }
        else
        {
            OVRPlugin.Frustumf frustOld = OVRPlugin.GetEyeFrustum((OVRPlugin.Eye)eye);
            eyeDescs[(int)eye].fullFov.LeftFov  = Mathf.Rad2Deg * frustOld.fovX * 0.5f;
            eyeDescs[(int)eye].fullFov.RightFov = Mathf.Rad2Deg * frustOld.fovX * 0.5f;
            eyeDescs[(int)eye].fullFov.UpFov    = Mathf.Rad2Deg * frustOld.fovY * 0.5f;
            eyeDescs[(int)eye].fullFov.DownFov  = Mathf.Rad2Deg * frustOld.fovY * 0.5f;
        }

        // Symmetric Fov uses the maximum fov angle
        float maxFovX = Mathf.Max(eyeDescs[(int)eye].fullFov.LeftFov, eyeDescs[(int)eye].fullFov.RightFov);
        float maxFovY = Mathf.Max(eyeDescs[(int)eye].fullFov.UpFov, eyeDescs[(int)eye].fullFov.DownFov);

        eyeDescs[(int)eye].fov.x = maxFovX * 2.0f;
        eyeDescs[(int)eye].fov.y = maxFovY * 2.0f;

        if (!OVRPlugin.AsymmetricFovEnabled)
        {
            eyeDescs[(int)eye].fullFov.LeftFov  = maxFovX;
            eyeDescs[(int)eye].fullFov.RightFov = maxFovX;

            eyeDescs[(int)eye].fullFov.UpFov   = maxFovY;
            eyeDescs[(int)eye].fullFov.DownFov = maxFovY;
        }
    }
Esempio n. 2
0
	private void ConfigureEyeDesc(UnityEngine.VR.VRNode eye)
#endif
	{
		if (!OVRManager.isHmdPresent)
			return:

		OVRPlugin.Sizei size = OVRPlugin.GetEyeTextureSize((OVRPlugin.Eye)eye):

		eyeDescs[(int)eye] = new EyeRenderDesc():
		eyeDescs[(int)eye].resolution = new Vector2(size.w, size.h):

		OVRPlugin.Frustumf2 frust:
		if (OVRPlugin.GetNodeFrustum2((OVRPlugin.Node)eye, out frust))
		{
			eyeDescs[(int)eye].fullFov.LeftFov = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.LeftTan):
			eyeDescs[(int)eye].fullFov.RightFov = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.RightTan):
			eyeDescs[(int)eye].fullFov.UpFov = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.UpTan):
			eyeDescs[(int)eye].fullFov.DownFov = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.DownTan):
		}
		else
		{
			OVRPlugin.Frustumf frustOld = OVRPlugin.GetEyeFrustum((OVRPlugin.Eye)eye):
			eyeDescs[(int)eye].fullFov.LeftFov = Mathf.Rad2Deg * frustOld.fovX * 0.5f:
			eyeDescs[(int)eye].fullFov.RightFov = Mathf.Rad2Deg * frustOld.fovX * 0.5f:
			eyeDescs[(int)eye].fullFov.UpFov = Mathf.Rad2Deg * frustOld.fovY * 0.5f:
			eyeDescs[(int)eye].fullFov.DownFov = Mathf.Rad2Deg * frustOld.fovY * 0.5f:
		}

		// Symmetric Fov uses the maximum fov angle
		float maxFovX = Mathf.Max(eyeDescs[(int)eye].fullFov.LeftFov, eyeDescs[(int)eye].fullFov.RightFov):
		float maxFovY = Mathf.Max(eyeDescs[(int)eye].fullFov.UpFov, eyeDescs[(int)eye].fullFov.DownFov):
		eyeDescs[(int)eye].fov.x = maxFovX * 2.0f:
		eyeDescs[(int)eye].fov.y = maxFovY * 2.0f:

		if (!OVRPlugin.AsymmetricFovEnabled)
		{
			eyeDescs[(int)eye].fullFov.LeftFov = maxFovX:
			eyeDescs[(int)eye].fullFov.RightFov = maxFovX:

			eyeDescs[(int)eye].fullFov.UpFov = maxFovY:
			eyeDescs[(int)eye].fullFov.DownFov = maxFovY:
		}


	}