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]Appliquer une translation à partir d'un JButton


Sujet :

3D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Par défaut [java3D]Appliquer une translation à partir d'un JButton
    Bonjour,

    Je souhaite simplement déplacer un objet 3D sur l'axe Y en cliquant sur un JButton.

    J'arrive bien à récupérer l'événement du bouton :
    ButtonListener.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    class ButtonListener implements ViewerConstants, ActionListener {
     
        public void actionPerformed(ActionEvent e) {
     
            if (e.getActionCommand().equals("up")) {
                System.out.println("Up");
                Transform3D temp = new Transform3D();
                panTransform.getTransform(temp);
                Transform3D tempUp = new Transform3D();
                tempUp.set(new Vector3f(-0.6f, 0.0f, -0.5f));
                temp.mul(tempUp);
                panTransform.setTransform(temp);
            }
       }
    }
    De plus, mon objet est bien créer (un ensemble de points Shape3D) et est visible dans mon Canvas :
    JPanel3D.java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package viewer;
     
    import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
    import com.sun.j3d.utils.behaviors.mouse.MouseTranslate;
    import com.sun.j3d.utils.behaviors.mouse.MouseWheelZoom;
    import com.sun.j3d.utils.universe.SimpleUniverse;
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.GraphicsConfiguration;
    import java.awt.Toolkit;
    import javax.media.j3d.BoundingSphere;
    import javax.media.j3d.BranchGroup;
    import javax.media.j3d.Canvas3D;
    import javax.media.j3d.Transform3D;
    import javax.media.j3d.TransformGroup;
    import javax.swing.JPanel;
    import javax.vecmath.Point3f;
    import javax.vecmath.Vector3f;
     
    /**
     * Construction d'un JPanel contenant une sphere couleur
     */
    public class JPanel3D extends JPanel implements ViewerConstants {
     
        Canvas3D canvas3D = null;
        Point3f origin = new Point3f();
        Vector3f yAxis = new Vector3f(0.0f, 1.0f, 0.0f);
     
        public JPanel3D(Color sphereColor) {
     
            this.setLayout(new BorderLayout());
     
            // Etape 3 :
            // Creation du Canvas 3D
            canvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
            this.add(canvas3D, BorderLayout.CENTER);
     
            // Etape 4 :
            // Creation d'un objet SimpleUniverse
            SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
     
            // Etape 5 :
            // Positionnement du point d'observation pour avoir une vue correcte de la
            // scene 3D
            simpleU.getViewingPlatform().setNominalViewingTransform();
     
            // Etape 6 :
            // Creation de la scene 3D qui contient tous les objets 3D que l'on veut visualiser
            BranchGroup scene = createSceneGraph(sphereColor);
     
            // Etape 7 :
            // Compilation de la scene 3D
            scene.compile();
     
            // Etape 8:
            // Attachement de la scene 3D a l'objet SimpleUniverse
            simpleU.addBranchGraph(scene);
        }
     
        /**
         * Creation de la scene 3D qui contient tous les objets 3D
         * @param sphereColor couleur de la sphere
         * @return scene 3D
         */
        public BranchGroup createSceneGraph(Color sphereColor) {
            // Creation de l'objet parent qui contiendra tous les autres objets 3D
            BranchGroup parent = new BranchGroup();
     
            TransformGroup panTransform = new TransformGroup();
            panTransform.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
            panTransform.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE)
     
            panTransform.addChild(new DrawPoints());
            parent.addChild(panTransform);
     
            return parent;
        }
     
        /**
         * Methode surchargee de JPanel afin de synchroniser l'affichage du
         * canvas 3D avec celui du JPanel
         * @param v boolean
         */
        @Override
        public void setVisible(boolean v) {
            super.setVisible(v);
            canvas3D.setVisible(v);
        }
     
        class canvas3D extends Canvas3D {
     
            public canvas3D(GraphicsConfiguration config) {
                super(config);
            }
     
            @Override
            public void paint(Graphics g) {
                super.paint(g);
                Toolkit.getDefaultToolkit().sync();
            }
        }
    }
    J'ai également une interface avec mon objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     public TransformGroup panTransform = new TransformGroup();
    Lorsque je clique, j'ai bien mon "Up", mais aucunes translations. De plus je n'ai aucuns messages d'erreurs. Dans tout les exemples que j'ai trouvé, tout était regroupé plus ou moins dans une même classe. Est-ce une raison possible pour que ma translation ne fonctionne pas ?

  2. #2
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    tu dois modifier ton objet BranchGroup scene pour pouvoir la modifier avec
    nomBrancheGroupeAmodifier.setCapability(BranchGroup.ALLOW_CHILDREN_READ);
    nomBrancheGroupeAmodifier.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);

Discussions similaires

  1. Ouvrir une classe à partir d'un JButton
    Par lemzo84 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 08/05/2013, 23h22
  2. DirectX : Appliquer une rotation et une translation
    Par matpush dans le forum Windows Forms
    Réponses: 1
    Dernier message: 22/06/2009, 10h41
  3. [Java3D] Récuperer une image à partir d'un canvas3D
    Par laurent.c123 dans le forum 3D
    Réponses: 3
    Dernier message: 05/05/2006, 18h35
  4. Image popup d'une fiche à partir d'un TListImage
    Par FW-S dans le forum Composants VCL
    Réponses: 3
    Dernier message: 17/11/2002, 13h42
  5. Réponses: 3
    Dernier message: 12/06/2002, 19h03

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