Gangtae Park, Mingyu Han, and Ian Oakley
ETRA '26: Symposium on Eye Tracking Research and Applications
OpenEye is an open-source framework for cross-device eye tracking on head-mounted displays (HMDs) using the Pupil Labs Neon eye tracker.
The framework provides:
- Cross-device gaze tracking
- Calibration and mapping pipelines
- Signal filtering and logging
- Device-specific processing pipelines
- 3D-printable hardware mounts
Supported devices:
- Meta Quest 3
- Apple Vision Pro
- XREAL Air 2 Ultra
The project is designed to support reproducible eye-tracking research across heterogeneous XR platforms.
The repository is organized by device-specific directories.
<Device>/
├── gui_unit/
│ ├── app/
│ │ └── app.py
│ │
│ └── core/
│ ├── config.py
│ ├── filter.py
│ ├── logger.py
│ ├── mapping.py
│ └── networking.py
│
├── processing_unit/
│
├── mount/
│ └── mount.stl
│
├── pyproject.toml
└── README.md
| Component | Description |
|---|---|
| GUI Unit | Calibration, gaze visualization, filtering, logging |
| Processing Unit | Device-specific rendering and interaction pipeline |
| Mount | 3D-printable hardware mount for Neon integration |
git clone https://github.com/witlab-kaist/OpenEye.git
cd OpenEyeIf you only need one device implementation:
git clone --filter=blob:none --no-checkout https://github.com/witlab-kaist/OpenEye.git
cd OpenEye
git sparse-checkout init --cone
# Choose one:
git sparse-checkout set quest
git sparse-checkout set avp
git sparse-checkout set xreal
git checkoutpip install -e .# Choose one:
openeye-quest-gui
openeye-avp-gui
openeye-xreal-guiDefault device-specific parameters are defined in:
<Device>/gui_unit/core/config.py
You can override them using a JSON configuration file:
openeye-<device>-gui --config path/to/config.json- Sampling rate
- Filter cutoff frequency
- Mapping model parameters
- Evaluation task settings
- Canvas resolution
@article{park26openeye,
author = {Park, Gangtae and Han, Mingyu and Oakley, Ian},
title = {OpenEye: Cross-Device Eye Tracking for Head-Mounted Displays},
journal = {Proceedings of the ACM on Human-Computer Interaction},
volume = {10},
number = {ETRA},
articleno = {ETRA017},
year = {2026},
month = {may},
pages = {1--17},
doi = {10.1145/3806031},
publisher = {ACM}
}This work was supported by:
- National Research Foundation of Korea (NRF)
- IITP (Institute of Information & Communications Technology Planning & Evaluation)
as described in the accompanying paper.