Forum Clubic

Problémes avec java3d et swing - Au secours!

Bonjour à tous;
pour mon projet de fin d’études je dois réaliser une application en 3D, pour faire une simulation d’ecoulement d’un fluide en 3D.
je suis avancé dans mon projet néanmoins je suis face à des problémes que je ne parviens pas résoudre,et ce depuis plusieurs mois,Au secours!!!!!!

  1. y-a-t-il un moyen pour détruire un BranchGroup afin que l’espace mémoire qui lui était allouait soit libéré, parceque dans mon app l’utilisateur peut supprimer des objets et l’instruction :
    univers.getLocal().remove(branchGroup) ne permet seulement que de détacher le branchGroup mais il reste dans la mémoire et donc je vous laisse deviner si l’utilisateur creer et supprime 15 objets combiens ces 15 objets vont s’accaparer de la mémoire inutilement!!!!!
    jusqu’a ce que Windows me ferme mon app et me donne un message du genre: erreur provoqué hors de la zone mémoire de la java VM,
    vous avez tenter d’acceder a une zone mémoire interdite!!

2)dans mon app l’utilisateur peut zoomer ==>faire agrandir le canvas3D en longuer et en largeur avec des instructions du genre:
lorseque l’utilisateur clique sur le zoom:
canvas3D.setHeight(canvas3D.getHeight()*1.5);
canvas3D.setWidth(canvas3D.getWidth()*1.5);
jusqu’a là tout est OK, mais il faut utiliser absolument des scrollbars ou bien un jscrollpane pour empecher evidemment le canvas3D de sortir de la frame ou bien de se mettre sur les autres composants de la fenetre, et la c’est le hic, puisque qu’avec le jscrollPane lorseque en lui donnant l’instruction:setViewportView(canvas3D) ou bien
JScrollPane scroll=new JScrollPane(canvas3D) ;a premiere vue tout parait normale, mais si je zoom le canvas s’agrandit mais se met sur le jscrollPane càd il le recouvre partiellemnt ou entierement selon sa taille,cachant ainsi les barres de défilements ==> impossible de faire déplacer donc le canvas3D, et si je m’obstine a zoomer le canvas3D recouvre les autres composants de la frame jusqua la recouvrir totalement!!!! A L’AIDE!!!!

3)j’ai ajouter un bouton “visualiser” pour pouvoir visualiser en 3D ma scéne càd lorseque je clique sur ce bouton un second univers univers_vis va recevoir pour BranchGroups des clones des BranchGroups de l’univres principal mais en y ajoutant des behavior speciales pour les faire translater, tourner, zoomer. mais au fil des visualisations 7 ou 8 la mémoire graphique s’épuise devient 0 Mbytes( j’ai verifier) et donc un message de windows me dit qu’il ne reste plus de mémoire graphique et que l’app va se fermer. que faire pour libérer de la mémoire graphique pendant l’execution de mon programme??
merci d’avance pour vos réponses sur le site ou si vous voulez par mail: mostafarah@caramail.com

ps: je n’ai pas internet a la maison aussi si vous avez besoins de quelques précisions je peut prendre 2 ou 3 jours pour vous répondre.

pour liberer de la mémoire je ferai

branchgroup = null;
System.gc();

ca reste a verifier.

Pour la mémoire, tu es en java, et tu n’as aucun contrôle dessus (sauf System.gc() qui “peut” la libérer). Normalement, Java est suffisament intelligent pour s’occupper de libérer (ou réutiliser) cela tout seul. Sinon, on fait pas du Java! (niarf)

Pour le reste, jamais manipuler les Canva3D.