Charge le plugin via AdditionalPluginDirectories, conserve ShowCouple et les commandlets anim côté jeu, et documente les lots S0–S8 (CHG-212 à CHG-220). Co-authored-by: Cursor <cursoragent@cursor.com>
5.8 KiB
S2-VAL - Validation du lot S2 (module LPAnimMeasure)
- Date : 2026-10-06
- Fiche : S2-T4a / S2-T4b | Rôle : A-VAL puis prep DOC
- Modèle prévu :
claude-sonnet-5-5-high(M2) | Modèle utilisé :claude-sonnet-5-5-high(M2) - Références :
S2-CART.md,S2-IMPL-H.md
Verdict : PASS (statique et runtime Mesure)
| # | Contrôle | Résultat |
|---|---|---|
| 1 | Source/LPAnimMeasure/ : 8 fichiers déplacés + Build.cs + module (.h/.cpp) |
PASS (11 fichiers) |
| 2 | Source/LifePlay/ sans LPPoseMeasure*, LPSkeletonProfile*, LPPoseOrchestrator*, LPAnimRedirect* |
PASS (0 fichier, recherche récursive dans Source/) |
| 3 | LifePlay.uproject liste LPAnimMeasure |
PASS (Runtime, Default, avant LifePlay) |
| 4 | LifePlay.Build.cs et LifePlayEditorTools.Build.cs dépendent de LPAnimMeasure |
PASS (les deux en PublicDependencyModuleNames) |
| 5 | Binaires récents (DLL LPAnimMeasure) après compilation S2-T2 |
PASS |
| 6 | Runtime du bat Mesure | PASS (lancé, 75 s, journal LogLPAnimMeasure actif, 0 erreur de module ou de lien) |
1. Contenu de Source/LPAnimMeasure/
| Fichier | Rôle |
|---|---|
LPAnimMeasure.Build.cs |
règles du module (Core, CoreUObject, Engine publics ; Json privé ; aucune dépendance vers LifePlay) |
LPAnimMeasure.h / .cpp |
IMPLEMENT_MODULE(FDefaultModuleImpl, LPAnimMeasure) ; catégorie LogLPAnimMeasure (LPANIMMEASURE_API) |
LPPoseMeasure.h / .cpp |
8 fichiers déplacés (CART §2) |
LPSkeletonProfile.h / .cpp |
|
LPPoseOrchestrator.h / .cpp |
|
LPAnimRedirect.h / .cpp |
SetUALRoot / GetUALRoot ajoutés |
Aucune occurrence de LIFEPLAY_API, de #include "LifePlay.h" ou de LPSandboxConfig dans ces sources (hors commentaires) : le module ne dépend pas de LifePlay.
2. Reliquats dans Source/LifePlay/
Recherche des noms LPPoseMeasure*, LPSkeletonProfile*, LPPoseOrchestrator*, LPAnimRedirect* sur tous les fichiers de Source/ : seuls ceux de Source/LPAnimMeasure/ existent. Les consommateurs restants (LPPairSandbox.cpp, LPDirectControlSubsystem.cpp, LifePlay.cpp, 4 fichiers de LifePlayEditorTools) incluent les en-têtes par PublicIncludePaths du nouveau module.
3. Déclarations de module
| Fichier | Ligne | Contenu |
|---|---|---|
LifePlay.uproject |
Modules[0] |
{ "Name": "LPAnimMeasure", "Type": "Runtime", "LoadingPhase": "Default" }, avant LifePlay et LifePlayEditorTools |
Source/LifePlay/LifePlay.Build.cs |
46 | PublicDependencyModuleNames.Add("LPAnimMeasure") |
Source/LifePlayEditorTools/LifePlayEditorTools.Build.cs |
22 | "LPAnimMeasure" dans PublicDependencyModuleNames |
Source/LifePlay.Target.cs |
15 | ExtraModuleNames : LifePlay, LPAnimMeasure |
Source/LifePlayEditor.Target.cs |
16 | ExtraModuleNames : LifePlay, LPAnimMeasure, LifePlayEditorTools |
4. Binaires (Win64, Development)
| Fichier | Date |
|---|---|
dernière source modifiée de Source/LPAnimMeasure/ (LPAnimRedirect.cpp) |
2026-10-06 18:31:38 |
Binaries/Win64/UnrealEditor-LPAnimMeasure.dll (520 192 o) / .pdb |
2026-10-06 18:34:00 |
UnrealEditor-LifePlay.dll / UnrealEditor-LifePlayEditorTools.dll |
2026-10-06 18:34:26 |
UnrealEditor.modules (entrée LPAnimMeasure) |
2026-10-06 18:34:27 |
LifePlay.exe (cible Game, module lié en monolithique) |
2026-10-06 18:37:17 |
La DLL est postérieure à la dernière source du module : binaire à jour. Différence avec S1-VAL : la limite « DLL plus ancienne que les sources » n'existe plus.
5. Runtime : bat Mesure
Méthode : équivalent de Tools/debug/LifePlay_measure_sandbox.bat (même ligne de commande UnrealEditor.exe LifePlay.uproject /Engine/Maps/Entry?game=/Script/LifePlay.LPPairSandboxGameMode -game -windowed ...), avec Saved/sandbox_mode.txt = Mesure pendant l'essai, remis à Pair ensuite. Le processus a été arrêté après environ 90 s. Journal conservé : Saved/Logs/S2-VAL-runtime.log.
| Constat | Journal |
|---|---|
Module chargé, aucun Unable to load module, LNK2, Fatal error ni Assertion failed |
0 occurrence |
Catégorie LogLPAnimMeasure active |
269 lignes (profils, POSET, MESURE, ORCHESTRE) |
| Profils chargés | genesis8 (37 rôles), ue4_mannequin (31 rôles) ; squelettes UAL1_Standard_Skeleton -> ue4_mannequin et bridget_gp_Skeleton -> genesis8 à 100 % |
| Chaîne de mesure (Sample / Compare / Transfer / orchestrateur) | MESURE Bridget Idle_Loop pose 0.00% (bassin) proportion 15.2% (rCollar) OK ; ORCHESTRE Idle_Loop pondere 8 ... (94 lignes MESURE/ORCHESTRE) |
Racine UAL injectée (SetUALRoot depuis FLifePlayModule::StartupModule) |
Sandbox Quaternius : corps /Game/Quaternius/UAL/UAL1_Standard..., 43 animations |
| Sorties produites | Saved/Measurement/history.csv, round_0929_Idle_Loop.csv, round_0930_A_TPose.csv, retarget_pose_*.txt |
LogLifePlay: Error |
1 : Coiffures : GI.HairstyleTable ou GI.MorphableHairs introuvable sur GameInstance_0 (déjà présent dans un journal antérieur au lot S2, sans lien avec LPAnimMeasure) |
Effets de bord de l'essai : 2 manches ajoutées à Saved/Measurement (hors dépôt) ; Saved/Logs/LifePlay.log renouvelé. La capture de la boucle automatique et le contrôle visuel de la scène n'ont pas été faits.
Limites
- Contrôle visuel de la sandbox Mesure (vues, captures
shots/) non fait : seul le journal sert de preuve. - Les commandlets
LPAnimEval,LPAnimCatalog,LPAnimTwistn'ont pas été relancés (prévus parS2-IMPL-H.md§8 ; hors de cette fiche). S1-CART.mdn'a pas encore reçu la mise à jour demandée parS2-IMPL-H.md(consommation deQuaterniusUALRootviaLifePlay.cpp/SetUALRoot) : reste à faire.- Aucun commit effectué.