public Vector3 GetEyeTrackingPos() { if (!Pvr_UnitySDKEyeManager.Instance.EyeTracking) { return(Vector3.zero); } bool result = Pvr_UnitySDKAPI.System.UPvr_getEyeTrackingData(ref eyePoseData); if (!result) { PLOG.E("UPvr_getEyeTrackingData failed " + result); return(Vector3.zero); } EyeDeviceInfo info = GetDeviceInfo(); Vector3 frustumSize = Vector3.zero; frustumSize.x = 0.5f * (info.targetFrustumLeft.right - info.targetFrustumLeft.left); frustumSize.y = 0.5f * (info.targetFrustumLeft.top - info.targetFrustumLeft.bottom); frustumSize.z = info.targetFrustumLeft.near; var combinedDirection = eyePoseData.foveatedGazeDirection; float denominator = Vector3.Dot(combinedDirection, Vector3.forward); if (denominator > float.Epsilon) { eyePoint = combinedDirection * (frustumSize.z / denominator); eyePoint.x /= frustumSize.x; // [-1..1] eyePoint.y /= frustumSize.y; // [-1..1] } return(eyePoint); }
public Vector3 GetEyeTrackingPos() { if (!Pvr_UnitySDKEyeManager.Instance.trackEyes) { return(Vector3.zero); } EyeDeviceInfo info = GetDeviceInfo(); Vector3 frustumSize = Vector3.zero; frustumSize.x = 0.5f * (info.targetFrustumLeft.right - info.targetFrustumLeft.left); frustumSize.y = 0.5f * (info.targetFrustumLeft.top - info.targetFrustumLeft.bottom); frustumSize.z = info.targetFrustumLeft.near; bool result = Pvr_UnitySDKAPI.System.UPvr_getEyeTrackingData(ref eyePoseData); if (!result) { Debug.LogError("UPvr_getEyeTrackingData failed " + result); return(Vector3.zero); } //Debug.LogFormat("eyePoseData.combinedEyePoseStatus: {0}", eyePoseData.combinedEyePoseStatus.ToString()); //Debug.LogFormat("eyePoseData.leftEyeGazePoint: {0}, Vector: {1}", eyePoseData.leftEyeGazePoint.ToString("f6"), eyePoseData.leftEyeGazeVector.ToString("f6")); //Debug.LogFormat("eyePoseData.rightEyeGazePoint: {0}, Vector: {1}", eyePoseData.rightEyeGazePoint.ToString("f6"), eyePoseData.rightEyeGazeVector.ToString("f6")); //Debug.LogFormat("eyePoseData.combinedEyeGazePoint: {0}, Vector: {1}", eyePoseData.combinedEyeGazePoint.ToString("f6"), eyePoseData.combinedEyeGazeVector.ToString("f6")); var combinedDirection = Vector3.zero; if ((eyePoseData.combinedEyePoseStatus & (int)pvrEyePoseStatus.kGazeVectorValid) != 0) { combinedDirection = eyePoseData.combinedEyeGazeVector; } if (combinedDirection.sqrMagnitude > 0f) { combinedDirection.Normalize(); //Debug.LogFormat("Eye Direction: ({0}, {1}, {2})", combinedDirection.x.ToString("f6"), combinedDirection.y.ToString("f6"), combinedDirection.z.ToString("f6")); float denominator = Vector3.Dot(combinedDirection, Vector3.forward); if (denominator > float.Epsilon) { eyePoint = combinedDirection * frustumSize.z / denominator; eyePoint.x /= frustumSize.x; // [-1..1] eyePoint.y /= frustumSize.y; // [-1..1] //Debug.LogFormat("Eye Point: ({0}, {1})", eyePoint.x.ToString("f6"), eyePoint.y.ToString("f6")); } } return(eyePoint); }
public Vector3 GetEyeTrackingPos() { if (!Pvr_UnitySDKEyeManager.Instance.trackEyes) { return(Vector3.zero); } EyeDeviceInfo info = GetDeviceInfo(); Vector3 frustumSize = Vector3.zero; frustumSize.x = 0.5f * (info.targetFrustumLeft.right - info.targetFrustumLeft.left); frustumSize.y = 0.5f * (info.targetFrustumLeft.top - info.targetFrustumLeft.bottom); frustumSize.z = info.targetFrustumLeft.near; bool result = Pvr_UnitySDKAPI.System.UPvr_getEyeTrackingData(ref eyePoseData); if (!result) { PLOG.E("UPvr_getEyeTrackingData failed " + result); return(Vector3.zero); } var combinedDirection = Vector3.zero; if ((eyePoseData.combinedEyePoseStatus & (int)pvrEyePoseStatus.kGazeVectorValid) != 0) { combinedDirection = eyePoseData.combinedEyeGazeVector; } if (combinedDirection.sqrMagnitude > 0f) { combinedDirection.Normalize(); float denominator = Vector3.Dot(combinedDirection, Vector3.forward); if (denominator > float.Epsilon) { eyePoint = combinedDirection * frustumSize.z / denominator; eyePoint.x /= frustumSize.x; // [-1..1] eyePoint.y /= frustumSize.y; // [-1..1] } } return(eyePoint); }