Ajout : viewer 3D pour les modeles vectobj
Outil standalone pour inspecter interactivement les modeles .j3o convertis
depuis les vectobj Amiga, avec leurs animations de frames.
Lancement :
./gradlew viewVectObj # premier modele de la liste
./gradlew viewVectObj -Pmodel=rifle # modele specifique
Controles :
– <- / -> : modele precedent/suivant (19 au total : blaster, charger,
crab, generator, glarebox, grenadelauncher, jetpack, laser, mantis,
passkey, plink, rifle, rocketlauncher, scenery, shotgun, snake, switch,
ventfan, wasp)
– Space : play/pause animation
– + / - : accelerer / ralentir FPS (pas de 1)
– N / B : frame suivante / precedente (en pause)
– R : reset camera
– G : toggle grille au sol
– W : toggle wireframe
– A : toggle auto-rotation du modele
– Drag souris gauche : orbit autour du modele
– Molette : zoom
– Esc : quitter
HUD :
– Titre : nom du modele + index + FPS courante + etat PAUSED
– Info : nb geometries, vertices, frames d’animation
– Controles en bas
Modifications
VectObjFrameAnimControl.java :
– Ajout methode publique stepFrame(int delta) : avance/recule d’une
frame et force le rafraichissement du mesh (indispensable en pause)
– Ajout getCurrentFrameIndex() et helper prive applyCurrentFrameToMesh()
– Refactor : la mise a jour du mesh est factorisee dans
applyCurrentFrameToMesh() (reutilise par stepFrame et controlUpdate)
VectObjViewer.java (nouveau, 500+ lignes) :
– SimpleApplication standalone avec camera orbit spherique
– Auto-scan des .j3o dans assets/Scenes/vectobj
– Normalisation automatique de l’echelle du modele (tient dans une sphere
de 1.5 unites, centre au sol)
– Eclairage 3-points (ambient + sun + fill) pour visualiser le shading
– Grille 10×10 + axes XYZ colores comme reference spatiale
– Integration avec VectObjFrameAnimControl.attachIfAnimated() pour
declencher les anims au chargement
build.gradle :
– Nouvelle tache viewVectObj (group ab3d2)
– -XstartOnFirstThread sur macOS
– Verifie la presence de .j3o avant de lancer (message d’erreur explicite
renvoyant vers convertVectObj)
TODO note : bug decodage textures
L’utilisateur signale que certaines textures murales ont 2 pixels en
trop en largeur apres conversion .256wad -> PNG. A investiguer plus
tard dans WallTextureExtractor (stride, padding, ou offset de header).
Peut potentiellement expliquer certains decalages UV residuels sur les
portes. Tag pour session future.