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;
            }
        }