Jump to content

Eye Openness difference between callback and GetEyeOpenness

Recommended Posts


I encountered an issues with measuring eye openness. I was trying to use the callback so that I can get rapid samples, and it seemed to be working until I started looking at eye openness. I was following suggestions elsewhere in this forum for counting blinks and was checking if the openness was less than a threshold, like 0.1. I was just registering blinks all the time.

Upon more checking I found out that the left eye had a wide range of values, from near 0 to very large, reaching 2,000,000. The right eye, on the other hand, was always extremely small, 10^-15, but maxing out at small values 10^-5. 

Wanting to check if I was just not tracking the right eye well I tried to get this information using GetEyeOpenness called from the Update method, and I get the values that are suggested in the API and forums, 1 is the max for both right and left eyes. When my eyes are completely shut the value does drop to 0. When I tried to have one eye open and the other closed it worked properly, but for some reason the left eye is registered as less open when the right is closed than the right eye is registered as open when the left is closed. This could be just how my eyes work  though.

I have attached minimal examples of both methods of getting this information along with the output files I got. During recording I started with the eye open (you can see the tracker takes a moment to get it correct, but I expected this), then I closed and opened, then I closed again, and opened. Then I closed the left eye while keeping the right open, and then I switched. 


Is there a reason the data in the EyeData struct should be different than the output of the GetEyeOpenness method?


EyeDataRecordCallback.txt EyeDataRecordUpdate.txt RightLeftExample.cs RightLeftExampleCallback.cs

Link to comment
Share on other sites

  • 3 weeks later...


Thank you!

Is there anything in the documentation where I can read more about what wide is? 
For GetEyeOpenness is explains openness as a value clamped between 0 and 1. For the SingleEyeDate struct, the float eye_openess it simply says its a value representing how open the eye is, but it doesn't say anything about wide.

It seems that based upon my results that wide was behaving very differently for the two eyes. For one eye I was getting between 0 and up to 2 million. This means, if openness is between 0 and 1, that wide was sometimes very large, ranging from 0 to 2 million. For the other eye I was getting tiny values between 10^-15 and 10^-5. This means, if openness is between 0 and 1 then for this eye, the wide variable is negative, pushing the value I found to be extremely tiny. So whatever wide represents it seems to be very different for my two eyes, and it seems to entirely overwhelm any signal contained in the openness variable. 


  • Like 1
Link to comment
Share on other sites

  • 2 years later...
On 7/6/2021 at 4:58 PM, Tony PH Lin said:


The value in EyeData struct contains wide + openness

GetEyeOpenness is only openness, so that's the difference.



I'm a student now developing an app with Unity, and I have a problem with GetEyeOpenness.

I use the code below to get the openness feature, but when I start the app, the openness of the left and right eye are always shown as '1'.

Have you ever seen this kind of problem, thank you.

        bool isLeftEyeOpennessAvailable = EyeManager.Instance.GetLeftEyeOpenness(out LEO);
        bool isRightEyeOpennessAvailable = EyeManager.Instance.GetRightEyeOpenness(out REO);


Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...