void Update() { // Retrieve new eye tracking data each frame and store it in the member variable. // It is recommended to place the eye tracker at the top of the update order. ViveSR.Error e = SREye.GetEyeData_v2(ref eyeData); if (e != 0) { string eName = Enum.GetName(typeof(ViveSR.Error), e); Debug.LogError("[EyeTracker] Error " + eName + " occurred while retrieving data."); } }
// Update is called once per frame void Update() { var error = SRanipal_Eye_API.GetEyeData(ref EyeData); var newData = SRanipal_Eye.GetVerboseData(out EyeData.verbose_data); //No new data received from camera sensor - skip step if (!newData) { return; } //Show error only once and not every frame if (error != ViveSR.Error.WORK && lastError != error) { Debug.LogError("An error happened: " + error.ToString()); } lastError = error; var leftEye = EyeData.verbose_data.left.gaze_direction_normalized; var rightEye = EyeData.verbose_data.right.gaze_direction_normalized; // if (leftEye != Vector3.zero && rightEye != Vector3.zero) // Debug.Log("Eyes: LEFT:=" + leftEye + ", RIGHT:=" + rightEye); if (leftEye != Vector3.zero) { this.validTracking = true; CalculateWorldSpace(leftEye); } else if (rightEye != Vector3.zero) { this.validTracking = true; CalculateWorldSpace(rightEye); } else { this.validTracking = false; } }
IEnumerator Start() { if (RenderEyetracking == null) { Debug.LogError("ActiveSessionView missing FixationRenderCamera"); WarningText.text = "ActiveSessionView missing FixationRenderCamera"; yield break; } if (VRSceneCamera == null) { Debug.LogError("ActiveSessionView missing VRSceneCamera"); WarningText.text = "ActiveSessionView missing VRSceneCamera"; yield break; } RenderEyetracking.Initialize(VRSceneCamera); var copy = VRSceneCamera.gameObject.AddComponent <CopyVRViewToRenderTexture>(); copy.Initialize(MainCameraRenderImage); WarningText.gameObject.SetActive(false); #if CVR_AH if (AdhawkApi.Calibrator.Instance != null) { if (!AdhawkApi.Calibrator.Instance.Calibrated) { WarningText.text = "Eye Tracking not Calibrated"; } while (!AdhawkApi.Calibrator.Instance.Calibrated) { yield return(new WaitForSeconds(1)); if (AdhawkApi.Calibrator.Instance == null) { break; } } if (!AdhawkApi.Calibrator.Instance.Calibrated) { WarningText.text = "Eye Tracking Calibrated"; yield return(new WaitForSeconds(2)); WarningText.enabled = false; } } else { WarningText.text = "Could not find Calibrator"; } #elif CVR_PUPIL if (calibrationController == null) { calibrationController = FindObjectOfType <PupilLabs.CalibrationController>(); } if (calibrationController != null) { calibrationController.OnCalibrationSucceeded += PupilLabs_OnCalibrationSucceeded; calibrationController.OnCalibrationStarted += PupilLabs_OnCalibrationStarted; calibrationController.OnCalibrationFailed += PupilLabs_OnCalibrationFailed; } else { WarningText.text = "Could not find Calibration Controller"; } #elif CVR_TOBIIVR WarningText.enabled = false; #elif CVR_FOVE if (!Fove.Unity.FoveManager.IsEyeTrackingCalibrated()) { WarningText.text = "Eye Tracking not Calibrated"; } while (Fove.Unity.FoveManager.IsEyeTrackingCalibrating() || !Fove.Unity.FoveManager.IsEyeTrackingCalibrated()) { if (Fove.Unity.FoveManager.IsEyeTrackingCalibrating()) { WarningText.text = "Calibration In Progress"; } yield return(new WaitForSeconds(1)); } if (Fove.Unity.FoveManager.IsEyeTrackingCalibrated()) { WarningText.text = "Eye Tracking Calibrated"; yield return(new WaitForSeconds(2)); WarningText.enabled = false; } #elif CVR_VIVEPROEYE bool needCalibration = false; int output = ViveSR.anipal.Eye.SRanipal_Eye_API.IsUserNeedCalibration(ref needCalibration); ViveSR.Error error = (ViveSR.Error)output; if (output != 0) { WarningText.text = "Eye Tracking Calibration Error " + error.ToString(); } else if (needCalibration) { WarningText.text = "Eye Tracking needs Calibration"; } else { WarningText.text = "Eye Tracking Calibrated"; yield return(new WaitForSeconds(2)); WarningText.enabled = false; } #elif CVR_VARJO if (Varjo.VarjoPlugin.GetGaze().status == Varjo.VarjoPlugin.GazeStatus.VALID) { WarningText.text = "Eye Tracking Calibrated"; yield return(new WaitForSeconds(2)); WarningText.enabled = false; } else { WarningText.text = "Eye Tracking not Calibrated"; } #else WarningText.text = "No Eye Tracking Found!"; #endif }