9ee7990dcd
New module hand_slots.route_hands(): - Chirality path: iPhone ARBodyTracker Vision 0/1 -> L/R slots, alignment preserved before invalid-hand filtering. - Fallback: ascending cx sort (mirror-aware). - swap=True: swaps the two slots at the very end (safety knob, HAND_SWAP_LR=1, if a source inverts Vision chirality). - near_min gate: drops slots below wrist->middle-MCP distance. 18 new tests covering all branches.
data_only_viz
Python + Metal visualiser for the AV-Live data-only patch.
Hand features OSC
/pose/hands [pid=0, lx, ly, lopen, lspeed, rx, ry, ropen, rspeed, dist]
- Emitted once per pipeline tick by
pose_bridge.send_handsto sclang:57121. - L = leftmost hand on screen, R = rightmost; absent hand -> its 4 floats are 0.
- Ranges: positions/openness/dist in [0,1]; speed >= 0 (normalized units/frame).
- Consumed by SuperCollider
~handFeat(data_only) and the Metal renderer uniforms. - Multi-person is not yet carried (pid is always 0).