void Init() { #if !UNITY_EDITOR bool result; var matrix_data = NRFrame.GetEyeProjectMatrix(out result, leftCamera.nearClipPlane, leftCamera.farClipPlane); if (result) { leftCamera.projectionMatrix = matrix_data.LEyeMatrix; rightCamera.projectionMatrix = matrix_data.REyeMatrix; var eyeposFromHead = NRFrame.EyePosFromHead; leftCamera.transform.localPosition = eyeposFromHead.LEyePose.position; leftCamera.transform.localRotation = eyeposFromHead.LEyePose.rotation; rightCamera.transform.localPosition = eyeposFromHead.REyePose.position; rightCamera.transform.localRotation = eyeposFromHead.REyePose.rotation; centerCamera.transform.localPosition = (leftCamera.transform.localPosition + rightCamera.transform.localPosition) * 0.5f; centerCamera.transform.localRotation = Quaternion.Lerp(leftCamera.transform.localRotation, rightCamera.transform.localRotation, 0.5f); leftCamera.cullingMask = m_LeftCullingMask; rightCamera.cullingMask = m_RightCullingMask; isInited = true; } #else isInited = true; #endif }
private IEnumerator Initialize() { while (NRFrame.SessionStatus != SessionState.Running) { NRDebugger.Log("[NRHMDPoseTracker] Waitting to initialize."); yield return(new WaitForEndOfFrame()); } #if !UNITY_EDITOR bool result; var matrix_data = NRFrame.GetEyeProjectMatrix(out result, leftCamera.nearClipPlane, leftCamera.farClipPlane); if (result) { leftCamera.projectionMatrix = matrix_data.LEyeMatrix; rightCamera.projectionMatrix = matrix_data.REyeMatrix; var eyeposFromHead = NRFrame.EyePosFromHead; leftCamera.transform.localPosition = eyeposFromHead.LEyePose.position; leftCamera.transform.localRotation = eyeposFromHead.LEyePose.rotation; rightCamera.transform.localPosition = eyeposFromHead.REyePose.position; rightCamera.transform.localRotation = eyeposFromHead.REyePose.rotation; centerCamera.transform.localPosition = (leftCamera.transform.localPosition + rightCamera.transform.localPosition) * 0.5f; centerCamera.transform.localRotation = Quaternion.Lerp(leftCamera.transform.localRotation, rightCamera.transform.localRotation, 0.5f); } #endif NRDebugger.Log("[NRHMDPoseTracker] Initialized success."); }
private void Init() { bool result; var leftCamera = transform.Find("LeftCamera").GetComponent <Camera>(); var rightCamera = transform.Find("RightCamera").GetComponent <Camera>(); var matrix_data = NRFrame.GetEyeProjectMatrix(out result, leftCamera.nearClipPlane, leftCamera.farClipPlane); if (result) { if (m_PoseSource == PoseSource.CenterEye) { leftCamera.projectionMatrix = matrix_data.LEyeMatrix; rightCamera.projectionMatrix = matrix_data.REyeMatrix; var eyeposFromHead = NRFrame.EyePosFromHead; leftCamera.transform.localPosition = eyeposFromHead.LEyePose.position; leftCamera.transform.localRotation = eyeposFromHead.LEyePose.rotation; rightCamera.transform.localPosition = eyeposFromHead.REyePose.position; rightCamera.transform.localRotation = eyeposFromHead.REyePose.rotation; } else { var matrix = m_PoseSource == PoseSource.LeftEye ? matrix_data.LEyeMatrix : matrix_data.REyeMatrix; gameObject.GetComponent <Camera>().projectionMatrix = matrix; NRDebugger.Log("[HMDPoseTracker Init] apply matrix:" + matrix.ToString()); } isInited = true; } }