Aligns all class/struct/enum/delegate prefixes with the module name PS_AI_ConvAgent. Removes redundant Conv_ from ElevenLabsComponent (PS_AI_Agent_Conv_ElevenLabsComponent → PS_AI_ConvAgent_ElevenLabsComponent). UI strings now use "PS AI ConvAgent". CoreRedirects updated for both ElevenLabs* and PS_AI_Agent_* legacy references. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
37 lines
2.1 KiB
Markdown
37 lines
2.1 KiB
Markdown
# PS_AI_ConvAgent — Notes pour Claude
|
|
|
|
## Naming Convention
|
|
- **Module**: `PS_AI_ConvAgent` / `PS_AI_ConvAgentEditor`
|
|
- **API macro**: `PS_AI_CONVAGENT_API`
|
|
- **Class prefix**: `PS_AI_ConvAgent_` (e.g. `UPS_AI_ConvAgent_PostureComponent`)
|
|
- **ElevenLabs-specific**: suffix `_ElevenLabs` (e.g. `UPS_AI_ConvAgent_ElevenLabsComponent`)
|
|
- **UI display**: `"PS AI ConvAgent"` (categories, DisplayName)
|
|
- **CoreRedirects**: DefaultEngine.ini handles both ElevenLabs* and PS_AI_Agent_* → PS_AI_ConvAgent_*
|
|
|
|
## 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_ConvAgent_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_ConvAgent_PostureComponent** (game thread) : cascade Eyes→Head→Body, produit FQuat + eye curves
|
|
- **AnimNode_PS_AI_ConvAgent_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())
|