Symptome apres session 70
Comparaison entre notre version et l’original :
- Original (image Amiga) : la porte zone 30 affiche 1-2 pans de
chevrondoor(hazard stripes) selon l’angle de vue – c’est une porte
simple avec une face visible. - Notre version : la porte affiche 2 pans hazard lateraux correctement,
mais au MILIEU apparaissent des bandes verticales sombres avec un
degrade etrange – on voit a travers les pans avants les pans arrieres
de la porte.
Diagnostic
La zone 30 est un volume octogonal (6 edges) entoure de 6 zones
voisines. Dans l’original, chaque mur de l’octogone est visible UNIQUEMENT
depuis sa zone voisine (vue « exterieure »). Ce sont 6 murs distincts, pas 6
faces d’une meme porte.
Notre code rendait TOUS les murs de la zone-porte comme pans animes, meme
ceux vus depuis la zone-porte elle-meme. Cela creait une double-paroi :
– Les pans « exterieurs » (vus depuis la zone voisine) : corrects
– Les pans « interieurs » (vus depuis la zone-porte) : dupliques, causant
Z-fighting et affichage des pans arrieres a travers les avants
La session 70 aggravait le probleme en ecrivant prioritairement la vue
interieure via le flag isInsideView, donnant des donnees texture
incorrectes.
Fix
LevelSceneBuilder.java (boucle detection portes) :
- N’enregistrer QUE la vue exterieure (
zid != doorZoneId) dans
DoorAccum. La vue interieure est ignoree (continue). - Suppression de la logique « priorite vue interieure » : un seul pan par
mur visible, donnees texture prises telles quelles depuis le
WallRenderEntry. addSeg(..., isInsideView=false)est toujours appele avecfalse
desormais (parametre conserve pour compatibilite mais non utilise).
Verification
Apres rebuild (./gradlew buildScenes), la porte zone 30 (level A) doit
afficher :
– Les pans chevrondoor (jaune/noir) nets, sans bandes sombres au milieu
– Une seule paroi visible par angle de vue (pas de double-rendu)
Les autres portes (simples, 1-2 pans) doivent continuer de fonctionner.
Code en reference
zone_liftable_pvs.c: chaqueZDoorWallcorrespond a UN mur visible
depuis UNE zone voisine, pas a une paire de faces.- PVS original : la zone-porte n’est pas rendue depuis son propre volume
tant que la porte est fermee.