Forum Discussion
virtualHCG
2 years agoExpert Protege
Quest Pro and blinking detection in Unreal Engine
Has anyone being able to detect eyes closed/open state using Meta XR and Quest Pro? We are able to get tracking data but the eye closed variable never changes. Looking at the Meta XR code it seems eye blinking is not being returned (see screenshot). The confidence value is always at 0.998047 regardless of if the eyes are closed or not. Gaze Direction and Gaze Origin are returning data but for some reason when the eyes are closed Gaze Direction keeps outputting changing data, so not sure what can be used to detect eyes closed/open.
4 Replies
Replies have been turned off for this discussion
- JensNimiquetaHonored Guest
I have the same problem in Unity. Did you ever find a solution?
Considering reading the value of "FaceExpression.EyesClosed" in OVRFaceExpressions as a temporary fix.
- ccd_researchHonored Guest
Also interested in this, I'll be trying to read the FaceExpression.EyesClosed value in the meantime.
- WoodyLoksHonored Guest
EyeClosed Value is always zero when I tried π
Any update on this thread? Were you guys ( ccd_research JensNimiqueta virtualHCG ) able to get any value apart from zero using FaceExpression.EyesClosed ?
I would really appreciate your time and effort into this matter. Thanks in Advance! - ccd_researchHonored Guest
Hi! Thanks for the reminder.
I was able to get it working on Meta Quest Pro using a `OVRFaceExpressions` instance attached to a `GameObject` in my scene.
Within the script to manage eye tracking data collection, I get the `OVRFaceExpressions` instance using something like this:
// Top of the class private OVRFaceExpressions faceComponent; // `Start` function public void Start() { // ... faceComponent = FindObjectOfType<OVRFaceExpressions>(); // ... }I have the following in my `Update` method collecting the actual `EyesClosed` estimates:
float LBlinkWeight = -1.0f; float RBlinkWeight = -1.0f; if (faceComponent) { faceComponent.TryGetFaceExpressionWeight(OVRFaceExpressions.FaceExpression.EyesClosedL, out LBlinkWeight); faceComponent.TryGetFaceExpressionWeight(OVRFaceExpressions.FaceExpression.EyesClosedR, out RBlinkWeight); }I was able to get values aside from 0.0 or 1.0 out of this. Make sure in your OVR Manager instance you've selected all the options to enable face tracking, as it's separate to eye tracking. Settings I changed for face tracking:
- Quest Features -> General -> Face Tracking Support -> "Required"
- Movement Tracking -> Face Tracking Data Sources -> Visual [x]; Audio [x]
- Permission Requests On Startup -> Face Tracking [x]
EDIT: I know this thread is Unreal Engine, this solution is in Unity. I figured I'd reply anyway in case it is helpful.
Quick Links
- Horizon Developer Support
- Quest User Forums
- Troubleshooting Forum for problems with a game or app
- Quest Support for problems with your device