public static Matrix4x4 GetAlternateLandscapeProjectionMatrix() { //Debug.Log("landscape hfov=" + Constants.CAM_LARGE_FOV + " vfov=" + Constants.CAM_SMALL_FOV); float[] mat_data = new float[16]; PikkartARCore.GetProjectionMatrix(mat_data); /*alternateLandscapeProjectionMatrix.m00 = mat_data[0]; * alternateLandscapeProjectionMatrix.m01 = mat_data[1]; * alternateLandscapeProjectionMatrix.m02 = mat_data[2]; * alternateLandscapeProjectionMatrix.m03 = mat_data[3]; * * alternateLandscapeProjectionMatrix.m10 = mat_data[4]; * alternateLandscapeProjectionMatrix.m11 = mat_data[5]; * alternateLandscapeProjectionMatrix.m12 = mat_data[6]; * alternateLandscapeProjectionMatrix.m13 = mat_data[7]; * * alternateLandscapeProjectionMatrix.m20 = mat_data[8]; * alternateLandscapeProjectionMatrix.m21 = mat_data[9]; * alternateLandscapeProjectionMatrix.m22 = mat_data[10]; * alternateLandscapeProjectionMatrix.m23 = mat_data[11]; * * alternateLandscapeProjectionMatrix.m30 = mat_data[12]; * alternateLandscapeProjectionMatrix.m31 = mat_data[13]; * alternateLandscapeProjectionMatrix.m32 = mat_data[14]; * alternateLandscapeProjectionMatrix.m33 = mat_data[15];*/ //horizontal field of view = 2 atan(0.5 width / focallength) double v = 1.0 / (double)(mat_data[0]); double at = Math.Atan(v); double hfov = 2.0 * at; float camera_ar = Constants.CAMERA_REQUESTED_WIDTH / Constants.CAMERA_REQUESTED_HEIGHT; float t = ScreenUtilities.GetPortraitAspectRatio() * camera_ar * (float)Math.Tan(hfov / 2.0); float a = 2.0f * (float)Math.Atan((double)(t)) * 57.2958f; alternateLandscapeProjectionMatrix = Matrix4x4.Perspective( a, ScreenUtilities.GetLandscapeAspectRatio(), Constants.NEAR_CLIP_PLANE, Constants.FAR_CLIP_PLANE); return(alternateLandscapeProjectionMatrix); }
public static Matrix4x4 GetAlternatePortraitProjectionMatrix() { //Debug.Log("portrait hfov=" + Constants.CAM_LARGE_FOV + " vfov=" + Constants.CAM_SMALL_FOV); float[] mat_data = new float[16]; PikkartARCore.GetProjectionMatrix(mat_data); /*alternateLandscapeProjectionMatrix.m00 = mat_data[0]; * alternateLandscapeProjectionMatrix.m01 = mat_data[1]; * alternateLandscapeProjectionMatrix.m02 = mat_data[2]; * alternateLandscapeProjectionMatrix.m03 = mat_data[3]; * * alternateLandscapeProjectionMatrix.m10 = mat_data[4]; * alternateLandscapeProjectionMatrix.m11 = mat_data[5]; * alternateLandscapeProjectionMatrix.m12 = mat_data[6]; * alternateLandscapeProjectionMatrix.m13 = mat_data[7]; * * alternateLandscapeProjectionMatrix.m20 = mat_data[8]; * alternateLandscapeProjectionMatrix.m21 = mat_data[9]; * alternateLandscapeProjectionMatrix.m22 = mat_data[10]; * alternateLandscapeProjectionMatrix.m23 = mat_data[11]; * * alternateLandscapeProjectionMatrix.m30 = mat_data[12]; * alternateLandscapeProjectionMatrix.m31 = mat_data[13]; * alternateLandscapeProjectionMatrix.m32 = mat_data[14]; * alternateLandscapeProjectionMatrix.m33 = mat_data[15];*/ double v = 1.0 / (double)(mat_data[0]); double at = Math.Atan(v); double hfov = 2.0 * at * 57.2958; alternatePortraitProjectionMatrix = Matrix4x4.Perspective( (float)hfov, ScreenUtilities.GetPortraitAspectRatio(), Constants.NEAR_CLIP_PLANE, Constants.FAR_CLIP_PLANE); return(alternatePortraitProjectionMatrix); }