From 7c235106d6313cd0a9a8bfc84a92452d6d631d64 Mon Sep 17 00:00:00 2001 From: "j.foucher" Date: Wed, 25 Feb 2026 13:58:23 +0100 Subject: [PATCH] Add Uasset and fox for postures --- .../MetaHumans/Animations/BodyBP.uasset | Bin 0 -> 36458 bytes .../MetaHumans/Animations/target.uasset | Bin 0 -> 28790 bytes .../Private/ElevenLabsPostureComponent.cpp | 36 ++++++++++++++---- build Lancelot.bat | 35 +++++++++++++++++ 4 files changed, 63 insertions(+), 8 deletions(-) create mode 100644 Unreal/PS_AI_Agent/Content/MetaHumans/Animations/BodyBP.uasset create mode 100644 Unreal/PS_AI_Agent/Content/MetaHumans/Animations/target.uasset create mode 100644 build Lancelot.bat diff --git a/Unreal/PS_AI_Agent/Content/MetaHumans/Animations/BodyBP.uasset b/Unreal/PS_AI_Agent/Content/MetaHumans/Animations/BodyBP.uasset new file mode 100644 index 0000000000000000000000000000000000000000..c99bf00f0bb650e8f36d870ee09b1db131917623 GIT binary patch literal 36458 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 literal 0 HcmV?d00001 diff --git a/Unreal/PS_AI_Agent/Content/MetaHumans/Animations/target.uasset b/Unreal/PS_AI_Agent/Content/MetaHumans/Animations/target.uasset new file mode 100644 index 0000000000000000000000000000000000000000..6203785354543fecd5e4daf4a0d23f951243734d GIT binary patch literal 28790 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 0.0f) { // Looking right: left eye looks outward, right eye looks inward (nasal) - const float Value = FMath::Clamp(EyeYaw / MaxEyeHorizontal, 0.0f, 1.0f); + const float Value = FMath::Clamp(EyeYaw / ARKitEyeRangeHorizontal, 0.0f, 1.0f); CurrentEyeCurves.Add(EyeLookOutLeft, Value); CurrentEyeCurves.Add(EyeLookInRight, Value); } else if (EyeYaw < 0.0f) { // Looking left: left eye looks inward (nasal), right eye looks outward - const float Value = FMath::Clamp(-EyeYaw / MaxEyeHorizontal, 0.0f, 1.0f); + const float Value = FMath::Clamp(-EyeYaw / ARKitEyeRangeHorizontal, 0.0f, 1.0f); CurrentEyeCurves.Add(EyeLookInLeft, Value); CurrentEyeCurves.Add(EyeLookOutRight, Value); } @@ -90,13 +100,13 @@ void UElevenLabsPostureComponent::UpdateEyeCurves(float EyeYaw, float EyePitch) // Vertical: positive pitch = looking up if (EyePitch > 0.0f) { - const float Value = FMath::Clamp(EyePitch / MaxEyeVertical, 0.0f, 1.0f); + const float Value = FMath::Clamp(EyePitch / ARKitEyeRangeVertical, 0.0f, 1.0f); CurrentEyeCurves.Add(EyeLookUpLeft, Value); CurrentEyeCurves.Add(EyeLookUpRight, Value); } else if (EyePitch < 0.0f) { - const float Value = FMath::Clamp(-EyePitch / MaxEyeVertical, 0.0f, 1.0f); + const float Value = FMath::Clamp(-EyePitch / ARKitEyeRangeVertical, 0.0f, 1.0f); CurrentEyeCurves.Add(EyeLookDownLeft, Value); CurrentEyeCurves.Add(EyeLookDownRight, Value); } @@ -197,19 +207,29 @@ void UElevenLabsPostureComponent::TickComponent( TargetHeadYaw = 0.0f; } - // ── 6. HEAD: realign when eyes overflow (check against TARGET) ───── + // ── 6. HEAD: realign when eyes overflow (check against body TARGET) ── + // + // Head overflow is checked relative to where the BODY IS GOING + // (TargetBodyWorldYaw), not where it currently is. This prevents + // the head from overcompensating during body interpolation — + // otherwise the head turns to track while body catches up, then + // snaps back when body arrives (two-step animation artifact). - const float EyeDeltaYaw = DeltaYaw - TargetHeadYaw; + const float HeadDeltaYaw = FMath::FindDeltaAngleDegrees( + TargetBodyWorldYaw + MeshForwardYawOffset, TargetWorldYaw); + + const float EyeDeltaYaw = HeadDeltaYaw - TargetHeadYaw; if (FMath::Abs(EyeDeltaYaw) > MaxEyeHorizontal) { - TargetHeadYaw = FMath::Clamp(DeltaYaw, -MaxHeadYaw, MaxHeadYaw); + TargetHeadYaw = FMath::Clamp(HeadDeltaYaw, -MaxHeadYaw, MaxHeadYaw); } // Head smoothly interpolates toward its persistent target CurrentHeadYaw = FMath::FInterpTo(CurrentHeadYaw, TargetHeadYaw, DeltaTime, HeadInterpSpeed); - // Eyes = remaining gap (naturally decreases as head catches up) + // Eyes = remaining gap (during transients, eyes may sit at MaxEye while + // the head catches up — ARKit normalization keeps visual deflection small) CurrentEyeYaw = FMath::Clamp(DeltaYaw - CurrentHeadYaw, -MaxEyeHorizontal, MaxEyeHorizontal); // ── 5. PITCH: relative cascade (Eyes → Head, no body pitch) ──────── diff --git a/build Lancelot.bat b/build Lancelot.bat new file mode 100644 index 0000000..e26b11d --- /dev/null +++ b/build Lancelot.bat @@ -0,0 +1,35 @@ +@echo off +chcp 65001 >nul +title Build PS_AI_Agent + +echo ============================================================ +echo PS_AI_Agent - Compilation plugin ElevenLabs (UE 5.5) +echo ============================================================ +echo. +echo ATTENTION : Ferme l'Unreal Editor avant de continuer ! +echo (Les DLL seraient verrouillees et la compilation echouerait) +echo. +pause + +echo. +echo Compilation en cours... +echo (Seuls les .cpp modifies sont recompiles, ~16s) +echo. + +powershell.exe -Command "& 'C:\Program Files\Epic Games\UE_5.5\Engine\Build\BatchFiles\RunUAT.bat' BuildEditor -project='E:\ASTERION\GIT\PS_AI_Agent\Unreal\PS_AI_Agent\PS_AI_Agent.uproject' -notools -noP4 2>&1" + +echo. +if %ERRORLEVEL% == 0 ( + echo ============================================================ + echo SUCCES - Compilation terminee sans erreur. + echo Tu peux relancer l'Unreal Editor. + echo ============================================================ +) else ( + echo ============================================================ + echo ECHEC - Erreur de compilation (code %ERRORLEVEL%) + echo Consulte le log ci-dessus pour le detail. + echo ============================================================ +) + +echo. +pause