# PS_AI_Agent — Notes pour Claude ## Plugin Rename (completed) - Plugin: `PS_AI_Agent_ElevenLabs` → `PS_AI_ConvAgent` - Generic classes: `ElevenLabs*` → `PS_AI_Agent_*` (e.g. `UPS_AI_Agent_PostureComponent`) - ElevenLabs-specific classes keep `_ElevenLabs` suffix (e.g. `UPS_AI_Agent_Conv_ElevenLabsComponent`) - CoreRedirects in DefaultEngine.ini handle .uasset references ## Posture System — Diagonal Tilt Bug (à corriger) ### Problème Le tilt diagonal (ear-to-shoulder) est PLUS VISIBLE avec la neck bone chain qu'avec le mono-bone. Le swing-twist decomposition ne suffit pas. ### Cause probable Le swing-twist est fait une seule fois sur le tip bone (head), puis le CleanOffset est extrait via `Swing * Inverse(TipBoneRot)`. Ce CleanOffset est ensuite distribué via Slerp à chaque bone de la chaîne. Mais chaque bone a une orientation locale différente — appliquer le même offset "world-space-like" à des bones avec des axes locaux différents peut réintroduire du tilt. ### Piste de fix Faire le swing-twist **PER-BONE** : pour chaque bone de la chaîne, composer le FractionalRot avec le bone's own rotation, swing-twist autour du bone's own tilt axis, puis appliquer le swing seulement. ### Fichiers concernés - `AnimNode_PS_AI_Agent_Posture.cpp` — Evaluate_AnyThread, section multi-bone chain - Commit actuel: `8df6967` sur main ### Config actuelle neck chain (BP_Taro) neck_01=0.25, neck_02=0.35, head=0.40 ## Architecture Posture - **PS_AI_Agent_PostureComponent** (game thread) : cascade Eyes→Head→Body, produit FQuat + eye curves - **AnimNode_PS_AI_Agent_Posture** (anim thread) : applique rotation sur bone(s) + injecte curves - Pipeline 100% FQuat (pas de round-trip FRotator) - Thread safety via FCriticalSection - ARKit eye curves normalisées par range fixe (40°/35°), pas par MaxEye threshold - Body drift compensation: applied ONLY on first chain bone, AFTER swing-twist - Debug gaze: per-eye lines from Face mesh using Z-axis (GetAxisZ())