public static Matrix4x4 GetEyeFromHeadMatrix(CardboardEye eye) { if (eyeFromHeadMatrixLeft == null || eyeFromHeadMatrixRight == null) { RefreshProjectionMatrix(); } float[] targetMatrix = eye == CardboardEye.kLeft ? eyeFromHeadMatrixLeft : eyeFromHeadMatrixRight; return(CardboardUtility.ArrayToMatrix4x4(targetMatrix)); }
public static void RetrieveCardboardDeviceV1Params() { CardboardQrCode_getCardboardV1DeviceParams(ref _encodedDeviceParams, ref _paramsSize); Debug.Log("CardboardQrCode.RetrieveCardboardDeviceV1Params() size=" + _paramsSize); encodedBytes = ReadByteArray(_encodedDeviceParams, _paramsSize); if (_paramsSize > 0) { decodedParams = DeviceParams.Parser.ParseFrom(encodedBytes); } Debug.LogFormat("CardboardQrCode.RetrieveCardboardDeviceV1Params() decode device params: \r\n{0}", CardboardUtility.DeviceParamsToString(decodedParams)); }
private static void RefreshCamera_Eye(Camera eyeCam, Matrix4x4 projectionMat, Matrix4x4 eyeFromHeadMat) { if (!projectionMat.Equals(Matrix4x4.zero)) { eyeCam.projectionMatrix = projectionMat; } //https://github.com/googlevr/cardboard/blob/master/sdk/lens_distortion.cc if (!eyeFromHeadMat.Equals(Matrix4x4.zero)) { Pose eyeFromHeadPoseGL = CardboardUtility.GetPoseFromTRSMatrix(eyeFromHeadMat); eyeFromHeadPoseGL.position.x = -eyeFromHeadPoseGL.position.x; eyeCam.transform.localPosition = eyeFromHeadPoseGL.position; eyeCam.transform.localRotation = eyeFromHeadPoseGL.rotation; } }
public static void RetrieveDeviceParam() { CardboardQrCode_getSavedDeviceParams(ref _encodedDeviceParams, ref _paramsSize); Debug.Log("CardboardQrCode.RetrieveDeviceParam() size=" + _paramsSize); encodedBytes = ReadByteArray(_encodedDeviceParams, _paramsSize); if (_paramsSize > 0) { decodedParams = DeviceParams.Parser.ParseFrom(encodedBytes); } // Debug.LogFormat("CardboardQrCode.RetrieveDeviceParam() params length={0}, byte=\r\n {1}", // encodedBytes.Length, string.Join(" , ", encodedBytes)); Debug.LogFormat("CardboardQrCode.RetrieveDeviceParam() decode device params: \r\n{0}", CardboardUtility.DeviceParamsToString(decodedParams)); }
private static void InitCameraProperties() { if (!isProfileAvailable) { return; } CardboardLensDistortion.RetrieveEyeMeshes(); CardboardLensDistortion.RefreshProjectionMatrix(); projectionMatrixLeft = CardboardLensDistortion.GetProjectionMatrix(CardboardEye.kLeft); projectionMatrixRight = CardboardLensDistortion.GetProjectionMatrix(CardboardEye.kRight); eyeFromHeadMatrixLeft = CardboardLensDistortion.GetEyeFromHeadMatrix(CardboardEye.kLeft); eyeFromHeadMatrixRight = CardboardLensDistortion.GetEyeFromHeadMatrix(CardboardEye.kRight); (CardboardMesh, CardboardMesh)eyeMeshes = CardboardLensDistortion.GetEyeMeshes(); viewMeshLeftRaw = eyeMeshes.Item1; viewMeshRightRaw = eyeMeshes.Item2; viewMeshLeft = CardboardUtility.ConvertCardboardMesh_Triangle(eyeMeshes.Item1); viewMeshRight = CardboardUtility.ConvertCardboardMesh_Triangle(eyeMeshes.Item2); }
private static void CardboardLensDistortion_getProjectionMatrix(IntPtr lens_Distortion, CardboardEye eye, float z_near, float z_far, float[] projection_matrix) { CardboardUtility.Matrix4x4ToArray(Matrix4x4.Perspective(70, 0.8f, 0.5f, 1000)).CopyTo(projection_matrix, 0); }
private static void CardboardLensDistortion_getDistortionMesh( IntPtr lens_Distortion, CardboardEye eye, ref CardboardMesh mesh) { mesh = CardboardUtility.CreateMockupCardboardMesh(eye); }