Aller au contenu principal

Session 29 — Fix normales + FaceCullMode + gradle.properties

Fix critique : normales murs inversées

Problème : (dz, 0, -dx)/L = perpendiculaire DROITE = normale SORTANTE (vers l’extérieur).
Les murs étaient sombres car la normale pointait à l’opposé du joueur et de la headlight.

Fix : (-dz, 0, dx)/L = perpendiculaire GAUCHE = normale ENTRANTE (vers l’intérieur de la zone).

leftPt ──────────────► rightPt
         direction →
         intérieur = côté GAUCHE
         normale correcte = (-dz, 0, dx)/L

Fichiers corrigés : LevelSceneBuilder, LevelGeometry, DoorSystem, DoorControl

Fix : FaceCullMode.Off sur tous les matériaux

Dans un donjon, les murs/sols/plafonds sont vus des deux côtés.
Le flip Z (jme.z = -worldZ) peut inverser le winding des polygones de sol/plafond.
Solution : désactiver le backface culling sur tous les matériaux.

mat.getAdditionalRenderState().setFaceCullMode(RenderState.FaceCullMode.Off);

Fix : Ambient 0.5 dans les matériaux

Ambient = (0.5, 0.5, 0.5) → les zones sombres (brightness=0) restent partiellement visibles.
La headlight PointLight et les lumières de zones ajoutent l’éclairage directionnel.

Fix : textures dans .j3o

Ordre obligatoire : convertAssets AVANT buildScenes.
Si texMat() ne trouve pas la PNG → warning (pas de crash) → fallback magenta.
Le .j3o sauvegarde les références de textures par chemin relatif (Textures/walls/...).
Au runtime, JME retrouve les PNG via le subproject assets/ sur le classpath.

gradle.properties — toutes les tâches documentées

Actions NetBeans custom (clic droit → Custom) :

1 - Copy Amiga resources    copyResources
2 - Convert assets          convertAssets
3 - Convert levels          convertLevels
4 - Build scenes            buildScenes
5 - Setup ALL               setupAll (pipeline complet)
6 - Resources status        resourcesStatus
7 - Clean generated assets  cleanResources

JVM daemon Gradle : org.gradle.jvmargs=-Xmx2g

Laisser un commentaire

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