diff --git a/CLAUDE.md b/CLAUDE.md index 11cdd7c..fd49cf1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -27,6 +27,13 @@ Toujours répondre en français à l'utilisateur. Code, commentaires de code, co | Bridge web / UI de live coding | `web_realart/` | | Plans / specs en cours | `docs/superpowers/plans/` | +## Environment variables + +| Env | Default | Effect | +|-----|---------|--------| +| `POSE_FILTER` | `median+kalman+lookahead+ik` | filter chain stages — extra: `one_euro_joints` (joint-space CHI 2012 One Euro, inserted before kalman), `one_euro_bones` (bone-vector One Euro applied after SMPL-X fusion in multi.py), `arkit_fuse` (overrides 14 body slots with ARKit ARSkeleton3D from the iOS app, expects /body3d/kp on :57128) | +| `IPHONE_OSC_PORT` | `57128` | UDP port the iPhone ARBodyTracker app pushes /body3d/kp to (always-on listener in data_only_viz) | + ## Conventions globales - Python : **uv** systématiquement (jamais pip/poetry/conda directs). diff --git a/data_only_viz/CLAUDE.md b/data_only_viz/CLAUDE.md index f252139..97f3963 100644 --- a/data_only_viz/CLAUDE.md +++ b/data_only_viz/CLAUDE.md @@ -31,6 +31,12 @@ Python **3.11+** requis. `pyproject.toml` est la source de vérité — ne jamai - État partagé multi-thread : `state.py` expose `State.lock()` — toujours mutationner sous lock. - Filtrage temporel : `euro_filter.py` (One Euro Filter) sur les keypoints avant tracker. +- ARKit fusion : `iphone_osc_listener.py` consume /body3d/kp UDP :57128 + → `state.persons_arkit_joints`. `pose_filter.py::ArkitFuse` (stage + `arkit_fuse`) splices the 14 mapped body slots into MediaPipe pose + before kalman ; `multi_hmr_worker::arkit_pelvis_z_override` locks the + SMPL-X cam translation z to the ARKit pelvis. Mapping in + `arkit_joint_map.py`. - Association multi-personne : `tracker.py` IoU-based, `scipy.optimize.linear_sum_assignment`. - Shaders Metal dans `shaders/` (`.metal`), recompilés au runtime ; topologie mesh (SMPL faces) en binaire dans `mesh_topology.py`. - OSC out : `osc_listener.py` / `pose_bridge.py` — destination `oscope-of` sur `:57123`.