Skip to content

Possible Missing Reinitialization After Face Tracking Data Stalls #3

Description

@Kushyameln01

While using the VIVE Facial Tracker for extended periods, I occasionally encountered a state where tracking stopped working and could only be restored by reconnecting the DisplayPort / VIVE Streaming connection.

This made me question why the Face Tracking subsystem itself was not recovering automatically, so I reviewed the implementation of the official ViveStreamingFaceTrackingModule.

After valid Eye or Lip data is received once, the module sets:

EyeTrackerInited = true
LipTrackerInited = true


However, if Face Tracking callbacks later stop arriving while the HMD itself remains connected to VIVE Streaming, there does not appear to be a watchdog that checks how long it has been since the last valid Eye or Lip packet was received.

This could result in the following state:

Eye / Lip data received successfully
↓
TrackerInited = true
↓
Face Tracking callbacks stop
↓
HMD remains connected
↓
TrackerInited remains true
↓
No reinitialization is triggered
↓
Face Tracking remains stalled

When the Streaming connection itself is disconnected, StopFaceTracking() resets the tracker state, and VS_StartFaceTracking() is called again after reconnecting.

This behavior appears consistent with the observed case where Face Tracking only recovers after the DisplayPort / VIVE Streaming connection is re-established.

A possible improvement would be to store the timestamp of the most recent Eye and Lip packets and add a watchdog that automatically performs:

VS_StopFaceTracking()

Reset tracker state

VS_StartFaceTracking()


if no valid Face Tracking data has been received for a defined timeout period.

This may allow the Face Tracking subsystem to recover without requiring the entire HMD or DisplayPort connection to be reconnected.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions