Skip to content

Hmd-eyes integration remake v1.0

Compare
Choose a tag to compare
@fx-lange fx-lange released this 06 Sep 10:58
· 69 commits to master since this release
c96b6b5

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

Overview

  • 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 and PupilData introduced to simplify working with the "pupil" topic
  • TimeSync: 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 the GazeListener from GazeVisualizer
    • GazeVisualizer now displays the raw gaze direction additionally to the hit marker
    • removed unity time from GazeData, use TimeSync 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