Skip to content

[agency] Harden CLJS eye/head tracking around scheduled snippets #7

Description

@meekmachine

Goal

Finish Eye/head tracking as the production facade over CLJS scheduled snippets, with the experimental scheduled-animation behavior as the only path.

Current state

Polyester has src-cljs/latticework/eye_head_tracking.cljs, which delegates much of the planning shape to gaze and emits stable snippets for eyeYaw, eyePitch, headYaw, headPitch, and headRoll. The old TypeScript service still contains more sensor/lifecycle behavior, but worker code must remain planner-only.

This mirrors the Latticework research issue: meekmachine/Latticework#33.

Clojure-way direction

  • Main thread owns mouse events, webcam/video, camera-relative calculations, face tracking, requestAnimationFrame, and Loom3 mutation.
  • CLJS owns config, target smoothing, throttling, trajectory state, enabled/disabled state, return-to-neutral, and snippet construction.
  • Head/eye outputs must go through Animation agency scheduling, not direct AU or bone mutation.
  • Disabling head or eye tracking must schedule/remove/reset the relevant snippets so stale pose does not linger.

Acceptance criteria

  • Manual targets emit the same AU pairs: 61/62, 64/63, 51/52, 54/53, 55/56.
  • Output snippets preserve current priorities, stable names, inherited first frames, and mixerClampWhenFinished behavior.
  • headTrackingEnabled: false stops future head snippets and clears any active head pose/transition.
  • Return-to-neutral reliably schedules neutral eye/head snippets and is testable.
  • Direct engine paths are absent from worker code.
  • Existing eye/head public API remains source-compatible through the Polyester adapter.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions