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 :

[Java3d] Architecture d'une application 3D avec Swing / Java3d


Sujet :

3D Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Points : 15
    Points
    15
    Par défaut [Java3d] Architecture d'une application 3D avec Swing / Java3d
    Bonjour,

    Je développe une application avec java3d et swing. Je me pose cependant encore quelques questions sur l'architecture à adopter. Mon application doit permettre à l'utilisateur de visualiser des points, courbes (ensemble de points), cylindres dans un espace 3d muni d'un repère. De plus l'utilisateur doit pouvoir "naviguer" dans la scène. Il peut plus précisément agir sur l'ensemble des objets (que j'appellerai OBJS) en même temps. Il a par conséquent à sa disposition un menu qui lui permet :
    • Fonctionne ; En cours ; Ne fonctionne pas/A faire
    • De faire tourner OBJS suivant l'axe Y ; Avec [ JSpinner, clavier]
    • De faire tourner OBJS suivant l'axe X ; Avec [ JSpinner, clavier]
    • De faire une rotation autour d'un point : [Souris clique gauche]
    • De zoomer sur OBJS ; Avec [Souris(molette), JSpinner, clavier]
    • De déplacer OBJS suivant X, Y ; Avec [Souris clique droit, 5 JButton (pour +X, -X, +Y, -Y, raz), clavier]

    L'ensemble des objets est composé de :
    • Un repère avec pour {X,Y,Z} : un Cylindre + 1 Cone + 1 Label et une sphère pour {0.0.0} ;
    • Des ensembles de points à tracer (Qui pourront être ou non affichés) ;
    • Des ensembles de courbes à tracer (Qui pourront être ou non affichés) ;
    • Un cylindre.

    J'ai commencé mon application ainsi (j'ai mis l'essentiel) :
    • viewer.java : Ma classe principale qui lance l'applet/programme.
    • viewerConstants.java : Interface qui ne contient que mes déclarations.
    • JPpanel3D.java : Class dérivée de JPanel qui contient mon Canva3D.
    • JPanelControl.java : Class dérivé de JPanel qui contient tout mes boutons.
    • ButtonListener.java : Class qui implémente ActionListener et qui traite les actions sur les boitons.
    • DrawPoints.java : Class dérivée de Shape3D qui renvoie l'ensemble des points.

    Du points de vue Java3D, c'est bordélique. En effet pour le moment, je n'ai qu'un transformeGroup avec mes MouseListener et c'est tout...
    Voici l'architecture que j'ai pour le moment :


    C'est assez vide comme vous pouvez le constater. En effet, je ne sais pas comment structurer mon programme pour la suite sachant que :
    • La rotation suivant Y pour se faire de trois manières différentes(souris, clavier, JSpinner) et que je dois toujours avoir la valeur de l'angle dans mon JSpinner ; De même pour l'axe X;
    • Le zoom peut également se faire de 3 manières et je dois aussi récupérer la valeur dans un JSpinner.
      Quand j'aurai implémenté ces comportements, j'aurai déjà franchis un bonne étape.
      Je dois cependant prendre en compte les évolutions suivantes
    • Charger des données à la volé (entré par l'utilisateur) et qu'elle héritent des transforms;
    • Surement d'autres choses...

    Je ne vous demande pas de m'écrire le programme bien-sûr ! Je souhaite avant-tout des conseils sur l'architecture à adopter.
    • Si par exemple je dois utiliser pleins des transformes (ex : 3 pour rotation X (souris, clavier, bouton), etc...) ;
    • Comment gérer l'actualisation des JSpinner (ex : le clavier augmente/diminue le JSpinner, puis c'est la valeur du JSpinner qui mofifie le transform) ;
    • Je peux avec un pointArray faire un "objet" composé de plusieurs points. Puis-je faire de-même pour mon repère ? C'est à dire créer une sort de super objet qui regroupe mes cylindre, cones, label ?

    Je suis ouvert à toutes remarques, idées, critiques. Merci

    Références :


    Enfin, voici mon interface graphique pour le moment :

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    Je constate que java3d déchaîne les foules ! :sweat:

    J'ai avancé un peu dans mon application et j'ai fais un jolie dessin qui résume bien mes questions :


    De même, j'ai fais un diagramme de classe :


    Les questions précédentes restes toujours valables avec un peu plus de précision quant au repère :
    • Il faut que je puisse récupérer/fixer les valeurs X,Y,Z,rot{X,Y,Z} des mes objets dans le repère absolu à partir de mon interface graphique. (J'arrive pour le moment à récupérer la position X,Y de ma souris par rapport à la taille de mon JPanel3D)

    Je suis preneur de toutes commentaires. Merci

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 1
    Points : 3
    Points
    3
    Par défaut l'application de java 3d
    salut mon amie....s'il te plais tu peux m'envoyés le code source de ton application.....j'ai besoin de visualiser des points en java 3d....

    mon email est ...mellah.a@hotmail.com

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/07/2011, 17h45
  2. Réponses: 4
    Dernier message: 23/02/2010, 11h00
  3. Réponses: 1
    Dernier message: 05/10/2009, 17h09
  4. Réponses: 2
    Dernier message: 23/03/2005, 21h58

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