23 KiB
Fiche U7b-T3 — Niveau N3 — Modèle prévu lp-cart | utilisé claude-opus-5-5 — Agent lp-cart — Skills sk-protocol, lp-commandlets (chargés aussi : ue-cpp-build, lp-paths)
U7b-T3 — Les 28 avertissements « Ressource de la pose … n'est pas à jour » (UE 5.8) : cartographie
Lecture seule. Rien n'a été lancé (ni éditeur ni commandlet), rien n'a été modifié, rien n'a été commis. Seul ce fichier a été écrit.
Moteur 5.8 lu : D:\Game\Launcher\Engine\UE_5.8 (5.8.3, CL 58210709, Engine/Build/Build.version). Moteur 5.5 lu : UE_5.5 (5.5.4).
1. Synthèse
- Ce n'est pas une régression 5.8 (établi). Les 28 mêmes avertissements existent sous UE 5.5.4, avec le même GUID stocké et le même GUID calculé. La phrase « 0 en 5.5 » de
U5-T2-AVANT.md:9repose sur la référence L7i du 2026-10-01. Or le packFreeAnimationsPackn'a été ajouté que le 2026-10-05. La comparaison n'était donc pas valable (§ 4). - Cause (établie par le code moteur).
UPoseAsset::PostLoadcompare le GUID stocké dans la pose (SourceAnimationRawDataGUID) au GUID recalculé à partir de son animation source. Ce contrôle n'est compilé que dans l'éditeur (#if WITH_EDITORONLY_DATA). Pour les 28 poses de démo Manny / Quinn, le GUID stocké ne correspond plus depuis la livraison du pack (paquets enregistrés en 5.3). Un resave ne recalcule pas ce GUID. Seul « Update Source » (UpdatePoseFromAnimation) le régénère (§ 3). - Effet sur le jeu : nul (établi). Le pack est exclu de la cuisson (
DirectoriesToNeverCook). Le journal de cuisson U5 n'en contient aucune mention, et aucun asset hors du pack ne référence les poses. Le contrôle n'existe pas dans un binaire cuit. Le journal du jeu en U6 en contient 0, en 5.5 comme en 5.8 (U6-T3-AB.md:50). - Recommandation. Option A (« Update Source » par script Python éditeur sur les 28 poses de la copie 5.8, après instantané), précédée d'un essai décisif sur une seule pose. Repli : option D (ignorer, avec filtre des avertissements attendus). B est sans effet (déjà prouvé en U5). C est sans effet (déjà en place pour la cuisson) ou trop invasive (retrait du contenu). La décision appartient à l'utilisateur.
2. Les 28 avertissements (établi)
Sources :
- Journal après resave :
D:\Game\LifePlay-master 5.8\Saved\Logs\portage\U5_CompileAllBlueprints_20261008-203108.log.- Manny : lignes 2718–2731, émises au chargement de
ABP_Manny_PostProcess(ligne 2717 « Loading and Compiling »). - Quinn : lignes 2736–2749, émises au chargement de
ABP_Quinn_PostProcess(ligne 2735). - Récapitulatif
LogInit: lignes 3029–3056. BilanSuccess - 0 error(s), 28 warning(s)à la ligne 3058 : ce sont les seuls avertissements du passage.
- Manny : lignes 2718–2731, émises au chargement de
- Journaux avant resave :
U5_CompileAllBlueprints_20261008-200207.loget…-201219.log, 28 lignes chacun.
Comptes :
grep -c "^\[[^]]*\]\[[^]]*\]LogAnimation: Warning: Ressource de la pose" <log>donne 28 pour chacun des 3 journaux U5.- Recomptage par chemin unique (
grep -o "Ressource de la pose [^ ]*" | sort -u | wc -l) : 28 également, soit 14 Manny et 14 Quinn.
Texte moteur d'origine (anglais), Engine/Source/Runtime/Engine/Private/Animation/PoseAsset.cpp:1083 (5.8) :
"PoseAsset {AssetName} is out-of-date with its source animation {SourceAsset} {Stored} vs {Found}".
Ce texte est émis par UE_LOGF(LogAnimation, Warning, …) (ligne 1084). La version française est la traduction de la clé PoseAssetSourceOutOfDate.
Exemple de ligne complète (journal 203108, ligne 2718) :
LogAnimation: Warning: Ressource de la pose /Game/FreeAnimationsPack/Demo/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_pose.Manny_calf_l_pose n'est pas à jour avec son animation source /Game/FreeAnimationsPack/Demo/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_anim.Manny_calf_l_anim 8E2B50DD07CBD0EC07FCDD7DE6C03CCF vs 1D634D8727C63225C22E9D7F4FA6C1E2
Toutes les poses et animations sont sous /Game/FreeAnimationsPack/Demo/Characters/Mannequins/Rigs/Poses/<Perso>/. Le Blueprint « émetteur » est celui dont le chargement déclenche le PostLoad de la pose : ABP_Manny_PostProcess pour Manny, ABP_Quinn_PostProcess pour Quinn. Chacun contient un nœud AnimGraphNode_PoseDriver et référence 14 poses (grep -ao sur les .uasset).
Le tableau a été produit par script à partir des journaux, sans recopie manuelle :
- GUID stocké : 1er hash ;
- GUID trouvé avant resave : 2e hash dans
U1_LPAuditBlueprintCalls_20261008-145335.log(5.5.4) et dansU5_…-200207.log(5.8). Ces deux journaux sont identiques sur les 28 lignes (diffvide) ; - GUID trouvé après resave : 2e hash dans
U5_…-203108.log.
| # | Perso | Pose (…/Rigs/Poses/<Perso>/) |
Animation source | GUID stocké | GUID trouvé 5.5.4 et 5.8 avant resave | GUID trouvé 5.8 après resave |
|---|---|---|---|---|---|---|
| 1 | Manny | Manny_calf_l_pose |
Manny_calf_l_anim |
8E2B50DD07CBD0EC07FCDD7DE6C03CCF |
CC78212CC2D05F60DB49B336943F61D9 |
1D634D8727C63225C22E9D7F4FA6C1E2 |
| 2 | Manny | Manny_calf_r_pose |
Manny_calf_r_anim |
7894484DF77F696ECE86F5E48B21970F |
8FE1687880D683625E543FF1464725DB |
E0B2D01A3946223C131E09195B080C5F |
| 3 | Manny | Manny_clavicle_l_pose |
Manny_clavicle_l_anim |
6CEA229F225BD38F08A7E79F1708B2C3 |
85F8EF1345C47A8C9C76736EC7A3FE90 |
14E8D54C13944109415935F4256A2C4D |
| 4 | Manny | Manny_clavicle_r_pose |
Manny_clavicle_r_anim |
5011953F65839BC59E3AB711A254A94E |
ADA1E6650A76F8713148B97EF6AF9A89 |
A5B15C429C01316F463D09E0D6693820 |
| 5 | Manny | Manny_foot_l_pose |
Manny_foot_l_anim |
E1CD278520DDF4FB187D1CBC17C34C12 |
27DE3409653F529F13DE46FBC2B19C83 |
448C04B7FACFD0356FEB53BAB78E3663 |
| 6 | Manny | Manny_foot_r_pose |
Manny_foot_r_anim |
9B48B63BBAECCB8F6D4567982FCD3450 |
73E77D69CA585135BF157B81788D5D86 |
B4615E0AEE2C238A3D6E440F2090E5EB |
| 7 | Manny | Manny_hand_l_pose |
Manny_hand_l_anim |
9B42FC91272EF6C74D20196D6DFE60F4 |
AB6FD63C9D139264C0008EDBECC735F0 |
EC8E9E7236153A9769E75A67F8F5C4E9 |
| 8 | Manny | Manny_hand_r_pose |
Manny_hand_r_anim |
23D2F7543DE7F7C42CEDA5C43C0F6FB1 |
93329CC316356DE7E397D2DEB2E3AFD1 |
56207E6B9D90A70472B8FDF3C596E99C |
| 9 | Manny | Manny_lowerarm_l_pose |
Manny_lowerarm_l_anim |
C5886899902BFF210DE43F818588A597 |
011865FD95B823CF80CFFC7D480E61C6 |
580060AF49122B44A85554A39457F698 |
| 10 | Manny | Manny_lowerarm_r_pose |
Manny_lowerarm_r_anim |
875F291D3A6E3ECDAF9BE4BCE6F094DD |
1BB05015D9BFA1ECD7E35B013381E1BD |
CF1A5F5A4915261ED4BF3837AAC9C99E |
| 11 | Manny | Manny_thigh_l_pose |
Manny_thigh_l_anim |
44456FC574BD040D2281CA549C0C8191 |
4CB65F0128C1D0D989355D4955DCE16F |
2C9E16368BC5337AA26408355D3F02C0 |
| 12 | Manny | Manny_thigh_r_pose |
Manny_thigh_r_anim |
364BC1D823C760EAFC55654DBF9144FE |
E90CD50BD93DFBC0B3D7B8B240DA9861 |
401F21146275AD58FCE72FEA97F3C5F2 |
| 13 | Manny | Manny_upperarm_l_pose |
Manny_upperarm_l_anim |
E74586CE1E5E44B3F8048DBFC7950641 |
664563D92C58772CAB9EEAD42C191D1A |
F7D9E3082FD0C227554316675CAB98DE |
| 14 | Manny | Manny_upperarm_r_pose |
Manny_upperarm_r_anim |
63B9CCF17675B52E40416075E3A9DDE3 |
9AAB8175306B1E429602738D99BAB05C |
8615091CAA1F7B42FC841A0F705E8894 |
| 15 | Quinn | Quinn_calf_l_pose |
Quinn_calf_l_anim |
BF93398AAD6D62DF112655B8ED3CF20E |
5A55CD7B35467F4ADD5A6CC1B13D289D |
E93DCCE9D988EF7272F279839E33D057 |
| 16 | Quinn | Quinn_calf_r_pose |
Quinn_calf_r_anim |
D11B0FF3E4621425787FFC399F21396D |
5468A5BB128F04D48B018D8E17FCBDC7 |
E75C10E44FD1FDC914810B0760E00274 |
| 17 | Quinn | Quinn_clavicle_l_pose |
Quinn_clavicle_l_anim |
90AAB2AD3EA4047FBE7D2A7CE3811DF5 |
0437958046206607984E793A4BAB7891 |
D23181AE1DF1FA00F21F1E35BB97D138 |
| 18 | Quinn | Quinn_clavicle_r_pose |
Quinn_clavicle_r_anim |
DB3BE353909BB74F14506F1FB1BAB9A7 |
F280BF597FEBF701CAC3D3ACE24A4D61 |
1D22F04FBB0AE44F66E58D351BBD0EF3 |
| 19 | Quinn | Quinn_foot_l_pose |
Quinn_foot_l_anim |
360E98B0F3906A082B5BA3BBA45E6C28 |
3ADAF7669471D3A979FEF2C51472E452 |
83D2730DEFBFD6DDAEEF78977E8F0F5D |
| 20 | Quinn | Quinn_foot_r_pose |
Quinn_foot_r_anim |
89448E65AE039761CBFCDEEC88DB6C82 |
3852C8B628D1BB773F0D538C598631A8 |
776F95E4E46CF3322E953E6A63C822EF |
| 21 | Quinn | Quinn_hand_l_pose |
Quinn_hand_l_anim |
2A557BC6687C70264FEDCEEDAF3D74BB |
E6F07F6D3BD0BE6E891C648D2A318C30 |
58D208DB13C68CB060DF5CEB574DC234 |
| 22 | Quinn | Quinn_hand_r_pose |
Quinn_hand_r_anim |
2B22506D82674CF44564930E27D311D6 |
D5991895CD282302D41EF7F9F364FBAC |
3FCEB9448C190BA93169A21C5CD414F2 |
| 23 | Quinn | Quinn_lowerarm_l_pose |
Quinn_lowerarm_l_anim |
985499B159549072FA9713240591A554 |
427F2443D721BD92A5A93071F651FCEB |
85E00A57FD4459ECCF93BD6F37987917 |
| 24 | Quinn | Quinn_lowerarm_r_pose |
Quinn_lowerarm_r_anim |
D1FE6DF936268DDC00C0C17E7F8BC69F |
34A548CA4E486B5139BF249993DFCA51 |
750D21AD38A9FBC18E0682C45B730DF2 |
| 25 | Quinn | Quinn_thigh_l_pose |
Quinn_thigh_l_anim |
8FD955B082A11940A2C9F05A42AAC255 |
6C031DEF5FE15B1E967C0D4F8A148FA8 |
1A137639E5FDCFA8D434FF7D49C6E07D |
| 26 | Quinn | Quinn_thigh_r_pose |
Quinn_thigh_r_anim |
402E6140D127A78E8862B816DFCBBE8B |
632D5907227D4F63143AED122D634459 |
77EA10A74DE8CE458A0564D8030DE2FA |
| 27 | Quinn | Quinn_upperarm_l_pose |
Quinn_upperarm_l_anim |
A497D2F503AC58C6B107EFCED5062AA7 |
C8F1E2335EFB744131777D8605D42BC5 |
D78B797C7850A25F651A1E87F61BA531 |
| 28 | Quinn | Quinn_upperarm_r_pose |
Quinn_upperarm_r_anim |
799E453D1F53700BCBF31ADE6FE99CE5 |
45C9349E90CE819467A6664D9F8772D6 |
241B9C8C77E17A4F1599C7EEB108AD47 |
Contrôles sur les 28 lignes (script sur les extractions ; les fichiers intermédiaires sont dans le scratchpad, pas dans le dépôt) :
- GUID stocké identique avant et après le resave : 28/28.
- GUID trouvé différent avant et après le resave : 28/28.
- GUID stocké différent du GUID trouvé après le resave : 28/28.
3. Mécanisme (sources 5.8, établi sauf mention)
| Point | Source | Statut |
|---|---|---|
Le contrôle est dans UPoseAsset::PostLoad (1013), à l'intérieur de #if WITH_EDITORONLY_DATA (1017 → #endif 1119). Il est actif seulement si le paquet a la version PoseAssetRawDataGUIDUpdate (1065) et si SourceAnimation n'est pas nul (1067). Il charge l'animation source (1070-1071) puis compare SourceAnimationRawDataGUID à GetSourceAnimationGuid() (1073-1074). |
PoseAsset.cpp:1013-1087, :1119 |
établi |
Conséquence : aucun message dans un jeu cuit (WITH_EDITORONLY_DATA = 0). SourceAnimation lui-même n'existe qu'en éditeur. |
PoseAsset.h:347-354 (#if WITH_EDITORONLY_DATA, UPROPERTY(Category=Source, EditAnywhere) SourceAnimation, UPROPERTY() SourceAnimationRawDataGUID) |
établi |
GetSourceAnimationGuid() met bIncludeTimingData = false quand la pose a été enregistrée avant la version AnimModelGuidGenerationSettings (= 54). Cette version est absente de 5.5 : grep = 0 dans UE_5.5/…/UE5ReleaseStreamObjectVersion.h. |
PoseAsset.cpp:2097-2117 ; Core/Public/UObject/UE5ReleaseStreamObjectVersions.inl:172 ; valeurs par défaut à 1 : IAnimationDataModel.h:355 |
établi |
Explication du changement du 2e hash au resave U5. Avant le resave, les paquets venaient de 5.3 (chaîne ++UE5+Release-5.3 dans Manny_calf_l_pose.uasset de la copie 5.5) : calcul sans le timing, d'où le même hash qu'en 5.5. Après le resave (++UE5+Release-5.8, 2026-10-08 20:28), la version est ≥ 54 : calcul avec le timing, d'où un autre hash. Le hash stocké, lui, ne bouge pas. |
code ci-dessus + grep -ao "++UE5+Release-5\.[0-9]*" sur les .uasset des deux copies |
établi |
Le resave ne peut pas corriger : PreSave n'appelle que UpdateRetargetSourceAssetData(), et rien dans Serialize ne touche le GUID. |
PoseAsset.cpp:1125-1144 ; constat U5 U5-T3-RESAVE.md:95-97 (28 avant, 28 après) |
établi |
Seul CreatePoseFromAnimation réécrit le GUID stocké (1676) et marque la pose comme régénérée (1674, GRegeneratedPoseAssets, ce qui force le calcul avec le timing, 2107-2111). Il est appelé par UpdatePoseFromAnimation (1681-1710), qui est UFUNCTION(BlueprintCallable). |
PoseAsset.cpp:1582-1710 ; PoseAsset.h:446-448 |
établi |
Le bouton éditeur « Update Source » (panneau Détails de la pose) appelle PoseAsset->Modify() puis UpdatePoseFromAnimation(SourceAnimation). |
Editor/DetailCustomizations/Private/PoseAssetDetails.cpp:315-316, :646-658, libellé :719 |
établi |
BreakAnimationSequenceGUIDComparison() (qui invalide le GUID) n'est pas une UFUNCTION et n'est donc pas accessible depuis Python. |
PoseAsset.h:535, PoseAsset.cpp:1353-1356 |
établi |
Pourquoi le GUID stocké était déjà faux dans le pack livré : soit Epic a généré les poses avec un ancien calcul de GUID, soit les _anim ont été réenregistrées après coup. On ne peut pas trancher. Le défaut est connu sur le contenu mannequin et MetaHuman d'Epic (voir § 6). |
— | estimé / incertain (sans incidence sur le correctif) |
4. Le défaut existait-il en 5.5 ? Oui (établi)
- La référence L7i (
etat/portage55/L7i/L7i_CompileAllBlueprints_20261001-191653.txt, journal completD:\Game\LifePlay-master 5.5\Saved\Logs\portage\L7i_CompileAllBlueprints_20261001-191653.log:1741:0 warning(s)) ne contient aucune mention deFreeAnimationsPack(grep -c= 0) : 269 BP compilés contre 410 en U5. - Date du dossier
Content\FreeAnimationsPackdans la copie 5.5 : 2026-10-05 15:59 (ls --time-style=full-iso). Le pack est donc postérieur à L7i (2026-10-01). AucunCompileAllBlueprints5.5 n'a été lancé après cette date (12 journaux, le dernier est L7i). - Preuve directe en 5.5 :
D:\Game\LifePlay-master 5.5\Saved\Logs\portage\U1_LPAuditBlueprintCalls_20261008-145335.log, moteur5.5.4-40574608(ligne 290). On y trouve 28 lignes « Ressource de la pose », 28 uniques, avec des hashes identiques à ceux de 5.8 avant resave (diffvide sur les 28). Bilan :Success - 0 error(s), 29 warning(s)(ligne 1288). - À corriger dans la documentation (je n'y ai pas touché) :
U5-T2-AVANT.md:9(« Nouveauté vs 5.5 … 0 en 5.5 ») et la mention « nouveauté » qui en dépend.
5. Les assets, la cuisson et les références (établi)
-
28
*_pose.uassetet 28*_anim.uassetsousContent\FreeAnimationsPack\Demo\Characters\Mannequins\Rigs\Poses\{Manny,Quinn}(find … | wc -l= 28 / 28). Ce sont des assets de démo Epic (pack Fab « FreeAnimationsPack »), ignorés par git (U5-T1-CART.md:22,80). -
Chaîne de références :
De Vers Preuve SKM_MannyABP_Manny_PostProcess(anim BP de post-traitement)grep -aoSKM_QuinnABP_Quinn_PostProcessgrep -aoABP_*_PostProcess14 poses chacun (PoseDriver) grep -aochaque pose son _animSourceAnimation -
Références depuis l'extérieur du pack (
grep -rla "FreeAnimationsPack/Demo/Characters/Mannequins"sur toutContenten 5.8, hors pack) : 3 paquets seulement,Retarget_ue5/IK_Source_ue5,RTG_Bridget_ue5,RTG_Michael_ue5, tous versMeshes/SKM_Manny.- Aucun paquet hors
Retarget_ue5ne référence/Game/Retarget_ue5. Résultat nul, mais la méthode est validée par un contrôle positif : 5 auto-références dans le dossier. - Rien hors du pack ne référence
SKM_Quinn.
- Aucun paquet hors
-
Cuisson :
Config/DefaultGame.ini:55+DirectoriesToNeverCook=(Path="/Game/FreeAnimationsPack")et:57…/Game/Retarget_ue5(copie 5.5 : lignes 52 et 54).U5_Cook_20261008-211802.log: 0 occurrence deFreeAnimationsPacket 0 « Ressource de la pose ».Saved\Cooked\Windows\LifePlay\Contentne contient niFreeAnimationsPackniRetarget_ue5.
-
Chaîne d'animation de l'atelier :
RetargetPack.py(addon) produit lesRTG_*_ue5avecSKM_Mannycomme maillage source.- L'export par lot (
duplicate_and_retarget, doncIKRetargetBatchOperation) évalue la source avecUAnimPoseExtensions::GetAnimPoseAtFrameetOptionalSkeletalMesh: un simpleFBoneContainer, sans composant ni anim instance. L'ABP de post-traitement (et donc les poses) n'intervient pas dans les clips produits. - Sources :
Plugins/Animation/IKRig/Source/IKRigEditor/Private/RetargetEditor/IKRetargetBatchOperation.cpp:456-477;Editor/AnimationBlueprintLibrary/Private/AnimPose.cpp:627-680(aucunComponent; les seuls composants du fichier sont aux lignes 493-523, dansEvaluateAnimationBlueprintWithInputPose). - Statut : établi pour le chemin du lot. L'aperçu dans le viewport de l'éditeur de reciblage peut, lui, exécuter le post-traitement : incertain, sans effet sur les clips.
- L'export par lot (
6. Recherche web (sources tierces = données)
- https://forums.unrealengine.com/t/594063 (« Warning: PoseAsset XXX is out-of-date with its source animation ») :
- correctif = bouton « Update Source » de la pose (post 4, 2022) ;
- traitement en lot par
UpdatePoseFromAnimation(AssetActionUtility, post 5 ; script Python MIT, post 16, 2025) ; - autre contournement : vider
Source Animation(post 4) ; - plantages signalés de « Update Source » en éditeur (posts 4 et 18) ;
- action de menu contextuel « update source animation » signalée en 5.5 (post 17) : non retrouvée dans les sources 5.8 lues (incertain).
- https://forums.unrealengine.com/t/768165 (post 2, UE 5.1) : même avertissement sur
…/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_posedans un contenu tiers qui reprend le rig mannequin d'Epic. Indice que le contenu mannequin d'Epic est livré dans cet état (estimé). - Recherche faite par
curlsur l'API Discourse du forum (search.json,t/<id>.json), car aucun outil de recherche web n'était disponible.
7. Options
Réversibilité commune : Content est hors git pour ce pack. Retour arrière par Tools\Snapshot.ps1 / Restore.ps1 de la copie 5.8, avant toute écriture. L'instantané U5 D:\Game\LifePlay_Backup_5.5\U5\manifest.csv contient déjà 155 entrées FreeAnimationsPack, à l'état d'avant le resave.
A — Régénérer les 28 poses depuis leur animation (« Update Source »), par script Python éditeur (recommandée)
- Principe.
- Lancer
-run=pythonscript(avec-FullStdOutLogOutput) sur la copie 5.8, éditeur fermé. - Pour chaque
*_posedu dossier :anim = pose.get_editor_property("source_animation"), puispose.modify(), puispose.update_pose_from_animation(anim), puisunreal.EditorAssetLibrary.save_loaded_asset(pose, False). - Mode
-DryRund'abord : liste des 28, animation source non nulle, même squelette. Le compte trouvé doit être égal à 28. - Les noms Python sont estimés à partir de la
UFUNCTIONet de laUPROPERTY(pas de stubIntermediate/PythonStub/unreal.py). Le DryRun les confirme.
- Lancer
- Effet attendu. Le GUID stocké devient le GUID calculé avec le timing (
PoseAsset.cpp:1674-1676). Après enregistrement en 5.8, le paquet a la version ≥ 54, donc le calcul au rechargement inclut aussi le timing. Les deux GUID devraient correspondre : 28 → 0 avertissement (estimé, à confirmer par l'essai). - Effort. Environ 1 h : script d'environ 40 lignes, instantané, DryRun, exécution,
CompileAllBlueprintsde contrôle. - Risques.
- Les données des poses sont recalculées depuis les
_anim. Si celles-ci diffèrent des poses enregistrées, les correctifs PoseDriver des démos Manny / Quinn changent. Impact limité à la démo et à l'aperçu éditeur, aucun sur le jeu ni sur les clips (§ 5). - Plantage possible signalé sur le forum. En commandlet, un plantage ne laisse aucun paquet partiellement écrit (estimé) : retour par l'instantané.
- Une réimportation du pack depuis Fab ramènerait les avertissements.
- Les données des poses sont recalculées depuis les
- Effet sur la cuisson et le jeu : aucun (pack non cuit, contrôle réservé à l'éditeur).
- Variante A-bis. Vider
source_animationsur les 28 poses : le contrôle est ignoré (PoseAsset.cpp:1067) et les données des poses restent intactes. On perd en revanche le lien vers la source, et donc toute régénération future. Effort et risque plus faibles que A, mais cela masque le défaut sans le corriger.
B — Resave ciblé : à écarter (établi sans effet)
Le resave U5 a déjà touché ces 28 paquets : le GUID stocké est inchangé (28/28) et il reste 28 avertissements (U5-T3-RESAVE.md:95-97). Le code de PreSave / Serialize ne touche pas le GUID (PoseAsset.cpp:1125-1144).
C — Retirer les assets de démo de la cuisson : déjà fait, sans effet sur l'avertissement
- La cuisson exclut déjà le pack (
DefaultGame.ini:55), et l'avertissement est émis par l'éditeur, pas par la cuisson. - Variante « retirer du contenu » (déplacer vers
Backup_5.5\U7b) : elle casseRetarget_ue5→SKM_Manny→ABP_Manny_PostProcess→ poses Manny. Il faudrait aussi modifier lePostProcessAnimBlueprintdeSKM_Manny. - Seule la branche Quinn (
SKM_Quinn,ABP_Quinn_PostProcess, poses Quinn) n'est pas référencée hors du pack. MaisABP_Quinn,SK_Mannequin,CR_Mannequin_Proceduralet lesMF_*du pack la référencent. - Effort moyen, risque moyen, gain de 14 avertissements seulement. Non recommandée.
D — Ignorer, avec justification (repli)
- Justification. Le défaut existe en 5.5.4 depuis l'ajout du pack. Il est réservé à l'éditeur, le pack n'est pas cuit, et le journal du jeu U6 en contient 0. Il s'agit d'un défaut connu du contenu d'Epic.
- Effort. Documentation seulement, plus un filtre « avertissements attendus = ces 28 chemins » dans la ligne de base VAL de
CompileAllBlueprints. Sans ce filtre, 28 avertissements de bruit masquent les nouveaux. - Risque. Nul pour le jeu. Le bruit reste au journal.
8. Recommandation et essai décisif
- Recommandation. Option A sur la copie 5.8 seulement. Le pack n'est pas cuit : la copie 5.5 n'a pas besoin du correctif, mais elle garde le défaut. Ordre : instantané → DryRun → essai sur une pose → généralisation. Si l'essai plante ou modifie fortement les données, passer à D (ou A-bis si l'utilisateur veut un journal propre sans toucher aux données).
- Essai décisif (à lancer par un agent d'exécution, après accord) :
Snapshot.ps1surContent\FreeAnimationsPack\Demo\Characters\Mannequins\Rigs\Poses.LPDumpAssets(-List=réduit àManny_calf_l_pose) : photo « avant ».- Script Python A en
-DryRun: 28 trouvées, 28 avec une animation source valide. - Script A réel sur
Manny_calf_l_poseuniquement. CompileAllBlueprints: PASS si 27 avertissements et aucune ligneManny_calf_l_pose.LPDumpAssets« après » et diff (GUID filtrés) : mesure de la variation des données de pose (PoseContainer).
- Le critère qui tranche est le résultat de l'étape 5 (27 au lieu de 28), et l'étape 6 donne le risque réel sur les données. Si l'étape 4 plante,
Restore.ps1, puis option D.
- Points d'appel à casser (pour l'agent d'exécution) :
UPoseAsset::SourceAnimationRawDataGUID(réécrit uniquement parCreatePoseFromAnimation,PoseAsset.cpp:1676) ; entrée publiqueUpdatePoseFromAnimation(PoseAsset.h:446-448) ; déclencheurUPoseAsset::PostLoad(PoseAsset.cpp:1065-1087).