O7e : etude de l'integration d'une coiffure Fab (lecture seule)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
edujiro5972 2026-10-02 14:37:11 +02:00
parent 5ff1e57073
commit d0fc9f7069
2 changed files with 34 additions and 0 deletions

View file

@ -501,6 +501,39 @@ fichiers ont été déplacés vers `D:\Game\LifePlay_Backup_5.5\O7d\Content_Coll
identiques à l'octet près. Contrôles : relecture des 13 fichiers, 13 545 chemins, 0 inconnu du registre ; l'éditeur les
charge (`LogCollectionManager: Loaded 13 collections`).
### 16.6 O7e : intégrer une coiffure de Fab — étude (2026-10-02, lecture seule)
Test d'intégration proposé par l'utilisateur : ajouter une coiffure de sa bibliothèque Fab. Relevés : `LPDumpFunction`
(`GI`, `Person`, `UI/Hairstyle`, tous graphes) et `LPDumpCDO` (`GI_C`).
**Contrat d'une coiffure LifePlay**
| Point | Constat |
|---|---|
| Liste des coiffures | `GI.HairstyleTable` : **valeur par défaut** du Blueprint (126 entrées), jamais construite par le jeu. Chaque entrée (`SMBool`) : chemin complet du maillage, `Bool` = coiffure masculine, `Daz` = coiffure Daz, `Strings` (zones de pilosité faciale). 88 entrées existent ; 35 coiffures d'avant Daz pointent vers des assets absents, déjà en 4.27, et ne sont jamais chargées (`LegacyPercentage` = 0). |
| Choix d'une coiffure | `GenerateAndApplyStrings`, catégorie `Hairstyle` : parcourt `HairstyleTable` et compare le **nom de l'objet** à la valeur lue (`HAIR Hairstyle: ToulouseHR`) ; tirage aléatoire parmi les entrées du bon sexe. Un maillage absent de la table n'est donc jamais utilisé, même désigné par nom. |
| Chargement | `GI.LoadHairMeshIfNeeded` : chargement à la demande depuis le chemin de la table. |
| Animation | `Person.HairSM.SetLeaderPoseComponent(corps)` : la coiffure suit le corps **par noms d'os**. Les coiffures existantes sont des `SkeletalMesh` à squelette propre de 20 à 27 os Genesis 8 (`hip`, `pelvis`, `abdomenLower`… `neckUpper`, `head`). |
| Forme | `Person.FitMorphableHair` (table `GI.MorphableHairs`) reporte les morphs du corps et du visage sur la coiffure (146 à 362 morphs par coiffure, ex. `ToulouseHR__CTRLFitness`). Sans ces morphs, la coiffure garde sa forme d'origine (risque de traverser une tête modifiée). |
| Couleur | paramètres de matériau `HairColor` et `HairThickness` (menu `UI/Hairstyle`, `GI.GetHairThicknessAndColor`). |
| Sauvegarde | les personnages (`.lpcharacter`) stockent la coiffure **par nom** : ajouter une entrée en fin de table ne change rien aux parties existantes. |
**Bibliothèque Fab** : 34 coiffures. Les « grooms » MetaHuman (≈ 18) sont exclus : liés à la tête MetaHuman, et le
plugin `HairStrands` n'est plus actif dans le jeu depuis O1. Restent ≈ 12 maillages FBX/OBJ (Pocolov Hair 05, 06, 16,
17 ; Laflian ; NoEdge ; Carlos-H). Pocolov publie des coiffures Daz ; le rig Genesis du FBX reste à constater.
**Intégration proposée (O7e)**
1. Télécharger un produit (accord utilisateur), importer dans `/Game/Heavy/New5/Hairs/` (hors chemins fixes).
2. Si le FBX n'est pas riggé Genesis 8 : le rattacher à une chaîne d'os Genesis (poids entier sur `head`), squelette
propre comme les coiffures existantes ; matériau enfant d'un matériau de cheveux existant (`HairColor`,
`HairThickness`).
3. Ajouter une entrée en fin de `GI.HairstyleTable` par une commandlet dédiée (même méthode que
`LPSetComponentCollision` : essai à blanc, contrôle, diff `LPDumpCDO` avant/après = 1 entrée).
4. `BuildCollections.py` : la coiffure apparaît dans `LifePlay_Cheveux`.
5. Test en jeu : personnage `.lpcharacter` avec `HAIR Hairstyle: <nom>`, menu de création, suivi des animations.
Morphs de forme : hors périmètre du premier essai.
## 17. Couche de données : stratégie (2026-10-02)
Proposition utilisateur : convertir les fichiers texte de `Modules` en fichiers JSON groupés par type, avec un calque de

View file

@ -927,3 +927,4 @@ Validation L7c/L7d (2026-10-02, parc, même cadrage) : la nuit reste claire (sol
| CHG-080 | 2026-10-02 | V1.3 | `README.md` : V1.3 en téléchargement principal (lien Mega), V1.2 et V1.1 en versions précédentes ; lien de la V1 retiré (archive supprimée de Mega faute d'espace, état git conservé par le tag `v1.0`) | lien V1.3 reçu | — |
| CHG-081 | 2026-10-02 | O7d | nouveau `Tools/BuildCollections.py` ; 13 collections statiques `Content/Collections/LifePlay*.collection` (hors dépôt, régénérables) ; `11_Audit_Optimisation.md` §16.5, `08_Guide_Developpeur.md` §2.1, `09_Commandes_Utiles.md` §3 | suite d'O7 (choix utilisateur) : regrouper les 8 561 assets par thème dans l'éditeur sans renommer de dossier ; collection transversale `LifePlay_Chemins_Fixes` (4 984 assets à ne pas déplacer) ; 13 545 chemins, 0 inconnu, chargées par l'éditeur ; aucun asset modifié, pas de build | supprimer `Content/Collections/LifePlay*.collection` (`git checkout O7d-avant` pour le reste) |
| CHG-082 | 2026-10-02 | O7d | `Tools/BuildCollections.py` : collections écrites dans `Saved/Collections` (locales) au lieu de `Content/Collections` (partagées) ; 13 fichiers déplacés vers `D:\Game\LifePlay_Backup_5.5\O7d\Content_Collections` puis régénérés (identiques) ; `11_Audit_Optimisation.md` §16.5, `08_Guide_Developpeur.md` §2.1 | avertissement à l'ouverture de l'éditeur (utilisateur) : une collection partagée exige un fournisseur de contrôle de révision, désactivé dans ce projet ; une collection locale n'en utilise pas ; validé par l'utilisateur le 2026-10-02 (plus d'avertissement) | `git checkout O7d-apres -- Tools/BuildCollections.py` et remettre les fichiers sauvegardés |
| CHG-083 | 2026-10-02 | O7e | `11_Audit_Optimisation.md` §16.6 | étude en lecture seule de l'intégration d'une coiffure Fab (demande utilisateur) : liste des coiffures = valeur par défaut `GI.HairstyleTable` (126 entrées, 35 absentes déjà en 4.27), suivi par noms d'os Genesis 8, morphs de forme facultatifs, sauvegardes par nom ; 34 coiffures Fab, ≈ 12 maillages utilisables | — (documentation) |