Aller au contenu principal

Session 31 — Fix textures : footer WGH + fromTile UV offset

Fix 1 : hauteur texture depuis le footer du .256wad

L’AMOS stocke la hauteur dans les 2 derniers bytes du fichier .256wad :

WGH = Deek(Start(701+ZWGC) + T - 2)   ; T = Length(bank)

WallTextureExtractor faisait une detection heuristique → textures parfois scramblees.

Fix : readHeightFromFooter(raw) + computeWidth(fileSize, texH)
→ Relancer ./gradlew convertAssets pour regenerer les PNG avec les bonnes dimensions.

Fix 2 : decalage U depuis fromTile (ZWG(A,B,0))

Le champ texIndex = ZWG(A,B,0) = fromTile = position X dans le strip de texture.
Dans le renderer AMOS : draw_FromTile_w = texIndex * 16 (decalage pixel).

Dans JME (UV normalisees) :

uOffset = fromTile * 16.0f / texWidth
uMax    = wallLen / texWidth   // (au lieu de wallLen / 256)

La largeur reelle texWidth est lue depuis l’image PNG chargee par JME
(mat.getTextureParam("DiffuseMap").getTextureValue().getImage().getWidth()).

Action requise pour voir le resultat :

./gradlew convertAssets   # re-extrait PNG avec bonnes dimensions (footer WGH)
./gradlew buildScenes     # regenere .j3o avec UV corrects (fromTile offset)
# ou tout en un :
./gradlew setupAll

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *