mrk88 Posted February 10, 2020 Posted February 10, 2020 I am trying to poll eyeData in a thread, and I am recording eyeData.timestamp and eyeData.frame_sequence. - It seems that the timestamps are not received consecutively (there is a 7 or 8 difference between two timestamps). - Also, the frameCounts have missing frames too. For example in the samples below, the frame number 3506, 3511, 3518 and etc are missing: Frame #, eyeData.timestamp, eyeData.frame_sequence 0 599227 3500 1 599235 3501 2 599243 3502 3 599251 3503 4 599260 3504 5 599268 3505 6 599285 3507 7 599293 3508 8 599301 3509 9 599310 3510 10 599326 3512 11 599335 3513 12 599343 3514 13 599351 3515 14 599360 3516 15 599368 3517 16 599385 3519 17 599393 3520 18 599401 3521 19 599410 3522 20 599418 3523 21 599435 3525 22 599443 3526 23 599451 3527 24 599460 3528 25 599468 3529 26 599476 3530 27 599493 3532 28 599501 3533 29 599510 3534 30 599518 3535 31 599535 3537 32 599535 3537 33 599551 3539 34 599560 3540 35 599568 3541 36 599576 3542 37 599593 3544 38 599601 3545 39 599610 3546 40 599618 3547
mrk88 Posted February 10, 2020 Author Posted February 10, 2020 and this is the code I collect the data with: void QueryEyeData() { while (Abort == false) { SRanipal_Eye_API.GetEyeData(ref eyeData); ViveSR.Error error = SRanipal_Eye_API.GetEyeData(ref EyeData); if (error == ViveSR.Error.WORK) { logResults(frameCount); logResults(eyeData.timestamp); logResults(eyeData.frame_sequence); frameCount++; logFile.WriteLine(" "); if (frameCount % 120 == 0) frameCount = 0; } Thread.Sleep(FrequencyControl); } }
mrk88 Posted February 10, 2020 Author Posted February 10, 2020 Also, when collecting gaze data (Such as below), should we collect them in a thread (same as above)? or in the Unity's Update function? gazeOriginLeft = eyeData.verbose_data.left.gaze_origin_mm; //gaze origin gazeOriginRight = eyeData.verbose_data.right.gaze_origin_mm; gazeDirectionLeft = eyeData.verbose_data.left.gaze_direction_normalized; //gaze direction gazeDirectionRight = eyeData.verbose_data.right.gaze_direction_normalized; pupilDiameterLeft = eyeData.verbose_data.left.pupil_diameter_mm; //pupil size pupilDiameterRight = eyeData.verbose_data.right.pupil_diameter_mm; pupilPositionLeft = eyeData.verbose_data.left.pupil_position_in_sensor_area;// pupil positions pupilPositionRight = eyeData.verbose_data.right.pupil_position_in_sensor_area; eyeOpenLeft = eyeData.verbose_data.left.eye_openness; // eye openness eyeOpenRight = eyeData.verbose_data.right.eye_openness;
alwyuyang Posted February 10, 2020 Posted February 10, 2020 Could you upload the script how do you create the thread , read and write the eye data?
mrk88 Posted February 10, 2020 Author Posted February 10, 2020 10 minutes ago, alwyuyang said: Could you upload the script how do you create the thread , read and write the eye data? ViveProEyeProducerThread.cs Thanks. I attach this script to a GameObject in my scene. I am not able to collect any verbose data while using a thread. The verbose data I can only collect in Update function. and that is where I'm confused. If we can only collect verbose data in Update(), then we will be collecting them with 90Hz frequency not 120.
alwyuyang Posted February 10, 2020 Posted February 10, 2020 15 hours ago, mrk88 said: ViveProEyeProducerThread.cs 2.09 kB · 1 download Thanks. I attach this script to a GameObject in my scene. I am not able to collect any verbose data while using a thread. The verbose data I can only collect in Update function. and that is where I'm confused. If we can only collect verbose data in Update(), then we will be collecting them with 90Hz frequency not 120. Thanks for sharing the script which is the same to mine. Actually I have the same problem. I think we are looking for an equivalent "Update() function of Vive Eye" which can run automatically in 120 Hz, right? This is the problem we have no idea. @Daniel_Y @zzy @Corvus
fayre Posted May 15, 2020 Posted May 15, 2020 I am currently having the same issue. Verbose data seems to be only collectable in the main thread and therefore in the update function. And that's not the stated 120Hz... hoping to find a solution for this though
Daniel_Y Posted May 26, 2020 Posted May 26, 2020 On 5/15/2020 at 9:27 PM, fayre said: I am currently having the same issue. Verbose data seems to be only collectable in the main thread and therefore in the update function. And that's not the stated 120Hz... hoping to find a solution for this though Have you tried callback mode, referring to this thread How to get output from the eye-tracker faster than Update in Unity @fayre
Recommended Posts
Archived
This topic is now archived and is closed to further replies.