Eye Tracking Metrics
Fixations and Saccades
Fixations: These occur when the eyes are relatively stationary and are focused on a single point of interest. Fixations indicate where a person is directing their attention and are used to infer cognitive processes like information intake, reading comprehension, and visual search.
Saccades: These are rapid, ballistic movements of the eyes that occur between fixations. Saccades are used to shift focus from one point of interest to another. They are critical for understanding how information is linked across different areas of the visual field and are often analyzed to determine how people navigate through visual environments.
SightLab uses the I-DT Method for Saccades and Fixations referenced in this paper
Overview
The Identification using Dispersion Threshold (I-DT) method is a popular algorithm used in eye-tracking to distinguish fixations from saccades based on spatial dispersion. This method is ideal for applications where precise fixation identification is required, such as in virtual reality environments where accurate user interaction and gaze-dependent content delivery are critical.
Principle
The I-DT method categorizes groups of consecutive eye positions as fixations if they fall within a predefined dispersion threshold, measured in visual angle, over a specified minimum duration. Dispersion is defined as the spread of the gaze points, typically calculated as the maximum distance between any two points in a potential fixation cluster.
Parameters
- Dispersion Threshold: This threshold is usually set between 0.5° to 1° of visual angle, depending on the precision of the eye tracker and the distance from the eye to the tracking device.
- Minimum Duration: The duration threshold is generally set between 100 ms to 200 ms. This parameter ensures that only sustained gaze on a specific area is considered a fixation, thereby reducing the noise from rapid, involuntary eye movements.
Procedure
- Data Collection: Gather raw gaze data points as coordinates over time from the eye-tracking device integrated within the VR setup.
-
Data Processing:
- Calculate the distance (in angular degrees) between all pairs of points within a moving window of the specified minimum duration.
- If the maximum distance between any pair of points within this window does not exceed the dispersion threshold, label the entire set of points in the window as a fixation.
- If the distance exceeds the threshold, classify the point where this occurs as the start of a saccade.
- Calculation Method for Fixations and Saccades in SightLab:
- Vector Calculation: For each gaze point within the designated analysis window, SightLab computes a vector from the avatar’s head position to the gaze point. This is done by subtracting the head position coordinates from the gaze point coordinates. The method for angular distance is using the dotproduct formula.
- Angle Calculation: The method calculates the angle between consecutive vectors (representing consecutive gaze points) using a function that determines the angle between two vectors. This angle represents the angular variation in gaze direction between two consecutive points.
- Threshold Check:
- Fixation Identification: If the maximum angular variation between any pair of consecutive gaze points within the specified window does not exceed a predetermined angular threshold, the entire set of points within this window is classified as a fixation. This implies a relatively stable gaze direction, indicative of the user focusing on a specific area or object in the virtual environment.
- Saccade Identification: If the angular variation exceeds the threshold at any point, this point is identified as the start of a saccade, indicating a rapid shift in gaze direction.
- Saccade Identification: Points not included in fixations are considered part of saccades. The transition from a fixation to a non-fixation point indicates the initiation of a saccade.
Applications in SightLab
In SightLab, the I-DT method is utilized to ensure that the VR software accurately interprets user gaze and attention, enhancing the interactive experience by dynamically adjusting content based on where the user is looking. This method is crucial for developing intuitive and responsive VR environments, where user engagement and interaction depend significantly on where and how long a user looks at specific elements within the virtual space.
SightLab uses a dynamic windowing technique to analyze angular variations in gaze direction relative to the head's position to classify eye movements. This method effectively differentiates between fixations (stable gaze) and saccades (rapid gaze shifts) based on how much the gaze direction changes over time, providing a robust approach for eye-tracking in virtual reality settings.
Advantages
- High accuracy in distinguishing between fixations and saccades, particularly beneficial in VR applications where gaze data directly influences user experience.
- Reduced susceptibility to noise and small, involuntary eye movements, ensuring robust performance in diverse usage scenarios.
- Adjust values if wanting to change from default
sightlab.setFixationSaccadeThresholds(dispersionThreshold = 1, durationThreshold = 0.1)
This can also be set in the GUI in the "Thresholds" section
Method:
end = self.gazePoints[self.timeStampList[i + index]]
endVector = [end[0] - avatarHead[0], end[1] - avatarHead[1], end[2] -avatarHead[2]]
angleVariation = vizmat.AngleBetweenVector(endVector, beginVector)
Fixations and Saccades saved in the data files
Trial_data file (saved as a running stream of data per trial)
In the trial_data files, fixations and saccade states are saved per time stamp as well as saccade amplitude, at the end of a saccade the average amplitude and peak velocity are also displayed. In the trial_timeline files a tally of the number of fixations per view on objects of interest is kept, and in the experiment_summary file the same tally per view is shown as well as the average saccade amplitude, velocity and peak and time to first fixation.
06-24-2024-12-02-33__trial_data_1
Dwell Time spheres visualization in the Session Replay
Dwell Time
This metric measures the total time spent looking at a specific area or element, combining all fixations and saccades within this area. It is used to assess interest or engagement with the content.
The threshold time in Sightlab is used to calculate the dwell time. This value represents the duration for which the gaze must remain on a target object or a region of interest to start recording dwell time. You can adjust this threshold to suit the specifics of your experiment.
When a user's gaze remains on a specific object or point in the virtual environment for a predetermined duration, the onGazeTime function is triggered. This function is part of a system of gaze event handlers, which also include onGazeBegin and onGazeEnd, to manage the start and end of gaze interactions. Specifically, onGazeTime is responsible for capturing events where the gaze duration meets or exceeds a set threshold, indicating a view.
To adjust from default, use the GUI or this method
sightlab.setDwellTimeThreshold(dwellTime = DWELL_THRESHOLD)
Heat Map
Heat map visualization in the replay. There is also an option for an aggregated heatmap, this can show all the data in the folder, for a specific session or a using a specific condition. Use the sliders in the replay to adjust the heatmap settings. Use "Occlusion" to not have the heatmap be visible if you have an object or wall that is blocking it from your view of the replay.