8 KiB
8 KiB
CAM-COMMUN5-DIAG : KO caméra de l'essai COMMUN-5 (2026-10-14)
Demande de Big Boss : C5-2, C5-3, et une piste pour le défaut d'origine (orbite en mode Scene, rotation POV).
Lecture seule, sans UE. Journal D:\Game\LifePlay_Backup_5.5\COMMUN-5\essais\LifePlay_commun5_session1_BOSS.log
(MD5 9c1ebcdc…, heures UTC). Dumps :
- Room après B2i :
CAM-B2i-VAL_LPDumpFunction_20261013-225125.txt; - PC :
CAM-B1-VAL_LPDumpFunction_20261013-085611.txt.
0. Précision sur CameraActor_2147480663
Ce n'est pas une caméra de la scène précédente : c'est CamRoom, la caméra C2 créée par EnsureCamRoom
(CameraActor sans nom propre). Le témoin la donne comme vue à chaque passage en C2 :
- 22:07:25 et 22:17:04 :
CamC1On=0 CamC3On=0, puis « C2 Follow » ; - 22:13:10, pendant le sexe lancé depuis C2 : la vue reste
CamRoom(cas traité par B2i). La ligneTouche Cde 22:17:04 est donc un passage C1 → C2 normal.
1. C5-3 : caméra C1 dans le buste après le show (22:15:37)
DIAG (prouvé par le dump et le journal).
- B1-3 et B1c posent la caméra C1 une seule fois, au passage en C1 :
FirstPersonSMest attachée à la douillehead(430), puisSetRelativeTransform(0, (90, 90, 0))(431) ;SetWorldLocationau milieu des yeux (446 ← PO_2 = (lEye+rEye) × 0,5, nœuds 447 et 448) ;- puis elle est rattachée à la racine du maillage en gardant sa position (433,
KeepWorld, sans douille).
- Elle ne suit donc plus la tête. Elle reste à l'endroit où étaient les yeux, par rapport à la racine du maillage, au moment du passage en C1.
- À 22:15:37, Bridget est assise :
currentAnimation = fnt_chair02-f-0-sitde 22:15:12 à 22:15:52, immobile. La caméra est posée à hauteur des yeux d'une personne assise. - À 22:15:51,
LOAD ROOM pubreplace le personnage (au centre, puis surfnt_new048). Dès que la pose change, les yeux ne sont plus là où était la caméra, et celle-ci se retrouve dans le buste. C'est conforme aux captures (écran de la couleur du haut). - Le show n'est pas la cause : c'est l'entrée en C1 en position assise (ou dans toute pose basse), suivie d'un changement de pose. Le même défaut existe hors show.
Correctif proposé B2k (Room seul, lp-mcp-bp) : recaler la caméra C1 sur les yeux à chaque passage de la
minuterie.
- La minuterie
UpdateRoomCam(0,016 s) a déjà une branche C1 : 91.else → 81 (SexOn) faux → 82 (CamC1On) vrai → 83 (vue = joueur, PO_0) vrai → vide. - (N)
K2_SetWorldLocation(SceneComponent) :- execute ←
IfThenElse_83.then; - self ←
VariableGet_265.FirstPersonSM(self ←VariableGet_261.PlayerCharacter) ; - NewLocation ←
PromotableOperator_2.ReturnValue, le milieu des yeux, déjà calculé par un nœud pur, réutilisé.
- execute ←
- 1 nœud, 3 liens. L'orientation reste celle du corps : la partie STG de
Walkpose déjà le lacet en C1. - Effet : en C1, la caméra suit la position des yeux, assis, debout ou en marche (léger balancement naturel de la tête). Hors C1, rien ne change.
- Pendant le sexe,
IfThenElse_81(SexOn) sort avant : les scènes ne sont pas touchées. - Barème : a0 b1 c0 d0 e1 f1 = 3 → N1, ajusté à N3 (MCP) ; S = C3 1 + f 1 = 2 : une fiche.
- Coût : 2
GetSocketLocationpar passage, négligeable. - Estimation : environ 15 appels MCP, une ouverture d'éditeur, puis V5 et V6.
- À relire à l'étape 1 : que la minuterie tourne bien en C1 (
K2_SetTimerDelegatesur la voie C1 d'ApplyRoomCamera).
- Coût : 2
- Peut entrer dans l'alpha : Room seul, hors sexe.
- Essai : s'asseoir, C jusqu'à C1, se lever (ZQSD), marcher, se rasseoir. La vue reste à la hauteur des yeux.
2. C5-2 : personnage qui disparaît en C2, assis au pub (22:04-22:05)
Faits.
- Le joueur (John) est assis (
fnt_new048-f-0-sit,_81), visible (hidden=0) et immobile, en X = -3131982, Y = -14967134. - Le pub est à l'échelle 16 × 16, soit environ 7,7 m de demi-largeur : le joueur est à 4,4 m du centre, pas contre un mur.
- C2 du début à la fin (aucune bascule entre 22:00:53 et 22:06:24).
- Aucune ligne
Temoin C2: la caméra était donc à 1 m ou plus de la tête, puisque le témoin ne parle qu'en dessous.
DIAG (probable, non prouvé).
- Les 3 sondes de C2 ont
bIgnoreSelf = true, avec self = Room. Elles ignorent tous les meubles, qui sont des composants de Room (DIAG COMMUN-2 § KO 2). La caméra peut donc se placer derrière un meuble haut (dossier de banquette, comptoir, cloison) ou dedans. - Le meuble masque alors le joueur, et un mouvement de souris déplace la caméra hors de l'axe, d'où le « réapparaît ».
- Rien d'autre dans le journal ne l'explique : boîte loin, aucun personnage proche dans l'axe.
- Le témoin actuel ne le voit pas : il ne parle que sous 1 m, et ses sondes ignorent aussi Room.
Correctifs possibles :
- (a) Témoin d'occlusion (C++, sans Blueprint) pour prouver la cause au prochain essai. En C2, toutes les 0,5 s,
un tracé Visibility complexe, Room compris, de la caméra vers la tête. S'il touche un composant de Room, une
ligne par seconde au plus :
Temoin C2 : joueur masque par <composant> (<maille>) a N cm de la camera. N1, S = 0, environ 30 lignes. Peut entrer dans l'alpha : journal seulement. - (b) Évitement des meubles (B2l, Room) :
- sondes avec
bIgnoreSelf = falseetbTraceComplex = true(collision par polygone, pas les boîtes englobantes desfnt_ext) ; - le meuble occupé par le joueur (
OccupyingFnt) ajouté aux composants ignorés ; sinon, assis sur une chaise haute, la caméra irait au-dessus du crâne (cas D8-3) ; - les murs restent tenus par la boîte.
- Risques : cas assis, couloirs étroits, coût du tracé complexe. Environ 10 nœuds, N3, S = 3 : à scinder (SPEC courte puis IMPL).
- Recommandé après l'alpha, une fois la cause prouvée par (a).
- sondes avec
3. Défaut d'origine (4.27) : orbite en mode Scene, rotation POV horizontale (piste seulement, après l'alpha)
- POV, piste forte (dump du PC) :
- le tangage passe par
FirstPersonSM.AddWorldRotation(MakeRotator(Pitch = souris Y))(nœud 316, branche 164) ; c'est un vrai tangage dans le monde, qui marche (« la tête tourne de bas en haut ») ; - l'horizontal passe par
FirstPersonSM.AddRelativeRotation(MakeRotator(**Roll** = souris X))(nœud 951, branche 136). Un nœud mort,AddWorldRotation(204), reçoit le même rotateur ; - la caméra a une rotation relative (90, 90, 0), prise dans le repère de l'os
head, puis elle est rattachée au maillage en gardant sa position (PC:3364-3373) ; - un Roll dans le repère du composant fait alors pencher l'image autour de l'axe de visée au lieu de la tourner à gauche ou à droite ;
- correctif probable : remplacer le Roll relatif par un lacet monde,
AddWorldRotation(MakeRotator(Yaw = souris X)), sur le modèle du nœud 316. PC seul, environ 3 nœuds. À faire après l'alpha (scènes gelées).
- le tangage passe par
- Orbite en mode Scene, piste :
- en mode Scene, sans Maj, la souris passe par
CircleCamera→ 96.else → 26 → 19 faux →SetActorRotation (SceneCamera)(nœud 149, lacet augmenté) ; - la caméra tourne sur place, sans tourner autour du couple : une orbite demande aussi de déplacer la position (pivot + décalage tourné, comme C2).
- Correctif probable, après l'alpha : position = pivot du couple (milieu de
SexPersons) + décalage tourné, avec la même rotation.
- en mode Scene, sans Maj, la souris passe par
4. Ce qui peut entrer dans l'alpha sans toucher aux scènes de sexe
| Id | Quoi | Fichier | Avis |
|---|---|---|---|
| B2k | recalage de C1 sur les yeux (C5-3) | Room (MCP) | oui : 1 nœud, hors sexe |
| T-occ | témoin d'occlusion C2 (C5-2) | LPCameraModeSubsystem.cpp |
oui : journal seulement |
| B2l | évitement des meubles (C5-2) | Room | non : après preuve et SPEC |
| POV / Scene | lacet POV, orbite Scene | PC, Room (voie sexe) | non : scènes gelées |
MD5 avant écriture :
- Room
18565365B1195BF2416A1048BF9051B6; LPCameraModeSubsystem.cppD8981529E3773FBF50BB7FC1C91BC91Fet.h2E1E245883960C2AFFC667A9A48FD96D.