Tobii Pro Glasses 3¶
Experimental support
The reader (cwtool/devices/tobii_g3.py) was written from the 1.x Tobii branch (legacy-TobiiProIII,
2022) and Tobii's recording format, and is tested on synthetic recordings only. Every result carries a warning
until a real recording has confirmed it. Open issue 45 lists what to check.
Folder¶
Copy the recording folder from the recording unit's SD card:
<recording>/
├── recording.g3 # JSON: created (UTC start), duration, stream files, scene camera calibration
├── gazedata.gz # gaze and pupil, one JSON object per line
├── eventdata.gz # events (optional)
├── scenevideo.mp4 # scene camera
├── 9_28_10.csv # lux logs (or lux.csv), here or in lux/
└── <date>_event_log.csv # optional, from tools/event_logger.py
What is read¶
| Used for | Source |
|---|---|
| start time | recording.g3 → created (UTC); the recording start is taken as the start of the scene video. Without it the lux log and event logs cannot be matched and are not read (a note says so; exported Unix times are empty): the file's modification time would be the copy time after an SD card transfer |
| time zone | recording.g3 → timezone (IANA name, as used by 1.x): event logs without a zone are read in it |
| pupil | gazedata.gz → data.eyeleft.pupildiameter, data.eyeright.pupildiameter (mm) |
| gaze | gazedata.gz → data.gaze2d, normalised scene video coordinates, origin top left |
| invalid samples | samples with empty data; each eye separately, so a sample with one eye tracked still counts for that eye |
| scene video | recording.g3 → scenecamera.file (default scenevideo.mp4), frames timed by its frame rate |
| field of view | recording.g3 → scenecamera.camera-calibration (focal length, resolution) with a pinhole model, else the nominal 95° × 63° |
| events | eventdata.gz entries of type event, named by their tag (other types, such as syncport, are ignored); an event_log CSV is read as well |
Events are turned into intervals as for the Neon: <label>.begin / <label>.end pairs become one event, other
events last until the next one.
Differences from 1.x: 1.x kept only samples with both pupils, and flipped gaze y (1 − y), which suits the Pupil
Core's coordinates, not Tobii's. 2.0 keeps each eye separately and does not flip; load(..., flip_gaze_y=True)
reproduces the 1.x behaviour if a real recording shows the flip was right.
Luminance¶
Like the other glasses, the Glasses 3 is used with the external lux sensor, distributed over the view with the scene video; without lux logs the camera is used alone (Luminance).
Profile¶
| Support | experimental |
| Pupil | mm, scale 1 |
| Luminance | lux sensor |
| Field of view | from the camera calibration (nominal 95° × 63°); adapting field 200° × 135° |
| Circular scene | no |
| Rate | measured (50 Hz, or 100 Hz if set on the unit) |