IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

3D Java Discussion :

[J3D][Animation] dans une frame qui bloque une autre frame


Sujet :

3D Java

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 21
    Points : 15
    Points
    15
    Par défaut [J3D][Animation] dans une frame qui bloque une autre frame
    Bonjour,

    ( mon sujet traite un peu de java 3D mais je voulais pas le mettre dans le titre pour pas rebutter tout le monde )

    J'affiche dans une frame une animation 3D ( la terre avec la lune). Mes objets tournent tout seuls grace a la classe RotationInterpolator, pour laquel je definie juste la periode de rotation et qui se debrouille seule en suite.
    Dans mon autre frame independante j'ai des JSlider qui permettent de modifier la position de la vue pour pouvoir admirer toutes la facettes de notre jolie planete bleu

    Mon probleme est que j'ai beaucoup de mal a selectionner ces sliders et a les bouger car toute la CPU semble etre mobilisée par mon application 3D qui tourne a fond ( a la limite je m'en moque si elle tourne moins vite ).

    J'ai essayé sans trop d'espoir de mettre la construction de mes frames dans deux thread independant mais ca ne change rien.

    Voila je vois pas trop comment resoudre mon souci, car je vois aucun moyen de mettre les 2 parties de mon programme dans 2 thread distincts ( si c'est pas deja fait pas la creation de frames ... )

    PS : j'ai essaye sur une machine avec une carte graphique beaucoup moins puissante et bizarrement ca tourne bien, mais je pense que c'est parce que la carte ne va pas assez vite pour le processeur qui du coup a le temps de gerer le mouvement de mes sliders

  2. #2
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Pour ceux qui ne sont pas fachés avec l'anglais je suis tombé sur ceci

    Ca expliquera peut etre un peu mieux mon probleme

    edit : j'ai éssayé setJ3DThreadPriority(Thread.MIN_PRIORITY) mais ca change pas grand chose ...)

  3. #3
    Membre averti
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Points : 444
    Points
    444
    Par défaut
    J'ai pas pu tester dans ton cas, mais j'ai fait ca dans un autre contexte ou un truc bouffais tout le CPU. Comme j'ai remarqué que le Alpha (qui te permet de finir ton animation automatique) possédait la méthode pause, j'ai pensée que ma solution pouvait marcher.
    Dans ta JFrame qui fait l'animation, ajoute un Thread qui va faire faire des pause à ton animation. Le run du Thread :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public void run()
    {
         while(true)
         {
                  try{sleep(100);}catch(Exception e){}
                  tonAlpha.pause();
                  try{sleep(10);}catch(Exception e){}
                  tonAlpha.resume();
          }
    }
    Aisni ce faire faire à ton animation une pause d'un centieme de seconde toutes les dixieme de secondes. Ce qui devrait laisser le temps u cpu de faire autre chose pendant ce centiéme de seconde, et ca devrait pas trop ralentir ton animation

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Merci je vais tenter ca.

    Je vais aussi tenter en affichant ma frame qui gere la vue a un autre endroit du code car j'ai remarquer que suivant les jre et les emplacements de certaines lignes de code on obtenait pas toujours le meme resultat ( bug de java : )

    Resultat des tests lundi dans la journée je pense

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Bon j'ai essayé en modifiant un peu mon code pour construire mes frames differement, ca ne change pas grand chose.

    Ensuite faut que j'installe java3D 1.3.1 pour tester pause, car elle n'est pas implementé avec ma version ... resultat dès que possible

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Bon je suis sur la bonne voie grace a toi JHelp

    Pour rendre mes sliders a nouveau accessible j'ai arreté mes Alpha ( car la methode pause n'est pas implementé sur ma version de j3d )
    Ceci n'avait pas encore libéré la CPU, j'ai donc modifié mon behavior qui placait ma vue, et au lieu de l'actualiser ( avec wakeOn ) a chaque image je l'ai fait toutes les 25 ms.
    Ainsi j'ai pu recuperer l'usage des mes sliders

    Je mettrais resolu lorsque j'aurais pu relancer mes rotations et que ca marchera, soit quand j'aurais le dernier j3d, soit peut etre en remplacant mon RotationInterpolator par un behavior ...

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Finalement j'ai pas eut ma version 1.3.1 de j3d pour mettre en pause les Alpha, mais en remplacant mes RotationInterpolator par des behavior qui se declenchent toutes les 25 ms ca marche nikel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 05/02/2015, 14h47
  2. Une requête qui bloque d'autres tables
    Par iubito dans le forum Administration
    Réponses: 0
    Dernier message: 04/01/2012, 08h48
  3. Réponses: 7
    Dernier message: 21/03/2011, 13h36
  4. Réponses: 0
    Dernier message: 04/08/2010, 14h02
  5. Réponses: 27
    Dernier message: 03/01/2008, 11h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo