Data produced by the HTC Vive gaze module
One entity, named HTC_Data, carries a GazeComponent and a
PupillometryDataComponent per capture.
Gaze
| Field | Source |
|---|---|
gaze_origin, gaze_direction | Combined (both-eyes) gaze ray from the Vive Streaming SDK. |
left_gaze_origin, left_gaze_direction | Left-eye gaze ray. |
right_gaze_origin, right_gaze_direction | Right-eye gaze ray. |
left_eye_occluded, right_eye_occluded | Set from the SDK’s per-eye blink flag, not from eyelid openness or an occlusion detector - a blinking eye is reported as occluded, an eye that is closed for another reason is not distinguished from a blink. |
blink | true when either eye’s blink flag is set. |
IPD, combined_eye_position, left_eye_position, right_eye_position, the gaze quality
fields, has_glasses, gaze_point and gaze_screen_point are left at their default values - this module does not populate them.
Pupillometry
| Field | Source |
|---|---|
left_eyelid_openness, right_eyelid_openness | From the SDK. |
left_eye_pupil_diameter, right_eye_pupil_diameter | From the SDK. |
pupil_diameter | Computed by this module as the average of the left and right pupil diameters - not a value the SDK provides directly. |
The combined eyelid_openness field, every *_quality field and other_pupil_data are left at
their default values.
What the SDK sends but this module does not publish
The Vive Streaming SDK’s eye-data payload carries six facial-expression fields per eye - wide, squeeze, look-down, look-out, look-in and look-up - that this module parses into memory but never reads out into any published field. If you need those signals, they are not available through HEAT Capture today.
The payload also carries a device-side timestamp, marked unused in the module’s own source; the capture timestamp HEAT Capture records is its own wall-clock time when the frame is built, not the headset’s.
First sample after tracking starts
The first eye-data update received by the module instance is discarded unread; later updates are published. This is a one-time warm-up discard. The current implementation does not reset it when face tracking stops and starts again.