Hmd-eyes integration remake v1.0
We are pleased to announce the release of hmd-eyes v1.0!!
hmd-eyes v1.0 is a complete overhaul of the old hmd-eyes plugin, with a cleaner and more flexible architecture.
We are dropping support for the 2d approach and focus entirely on 3d gaze tracking. Starting with a new gaze demo scene and more robust gaze visualization.
Hmd-eyes now offers screen casting to Pupil Capture (v1.15+), which makes it fully compatible with the record and playback functionality of Pupil Capture and Pupil Player.
All new features and changes are listed below.
Download the latest bundle and refer to the readme and documentation for how to get started.
Feel free to join our #hmd-eyes channel on discord and let us know what you think.
Dependencies
- Pupil Capture/Service v1.15+
- Unity 2018.3+
ProjectSettings/Player/Configuration/Scripting Runtime Verion
set to .NET 4.x Equivalent.- Due to an issue with MessagePack, the default project setting for
ProjectSettings/Player/Configuration/API Compatibility Level
is not supported and needs to be set to .NET 4.x
Features and Changes
Architecture overhaul
- replacing pure static classes by single responsibility
MonoBehaviors
- event based communication and wiring components in the Unity Inspector
- plugin split into three layers (network, communication, flow control) building on one another
- simplified settings and flexible calibration targets utilizing
ScriptableObjects
- instead of hidden objects due to on start initialization, everything can be pre-setup in the scene
Gaze representation optimized for VR
Screen casting
We dropped support for Unity screen recordings (which weren't compatible with Pupil Player). Instead Hmd-Eyes now offers streaming VR content directly to Pupil Capture. This way it is fully compatible with the record and playback functionality of Pupil Capture and Pupil Player.
New time synchronization approach
From v1.0 on, Hmd-Eyes and Pupil Capture/Service are not running on the same clock anymore (previously set by Hmd-Eyes). Instead the TimeSync
component now supports converting between pupil time and unity time.
Extendable calibration routine
Pre-parsed Pupil data
The new PupilListener
offers parsed PupilData
, no need to parse the nested "pupil" dictionary by hand anymore.
Changelog
v1.0 since v1.0-beta
- Screen Casting functionality added
PupilListener
andPupilData
introduced to simplify working with the "pupil" topicTimeSync
: changed into its own component (MonoBehaviour) to improve accessibility and reduce dependencies- Calibration Controller:
- new event for 'calibration routine done' (user perspective)
- preview for calibration targets added
- Gaze:
GazeController
introduced to decouple controlling theGazeListener
fromGazeVisualizer
GazeVisualizer
now displays the raw gaze direction additionally to the hit marker- removed unity time from
GazeData
, useTimeSync
component instead
- Connection:
- solve freeze on connect issue by using async receive and request abstraction
- cancel running routines (like calibration) on disconnect
- simplified inner network resource management
- recorder: fix recording path issue and allow setting a custom path
Current Limitations
- no heatmap or spherical video demo
- no hololens support