Bonjour,
j'ai un problème au niveau de la selection avec la souris.
J'ai le code suivant :
Code java : 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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
 
public void processStimulus (Enumeration criteria) {
 
        WakeupCriterion wakeup;
        AWTEvent[] event;
        int eventId;  
        while (criteria.hasMoreElements()) {
          wakeup = (WakeupCriterion) criteria.nextElement();
          if (wakeup instanceof WakeupOnAWTEvent) {
        //ici on enregistre tout les evenements qui ont eu lieu
        event = ((WakeupOnAWTEvent)wakeup).getAWTEvent();
        for (int i=0; i<event.length; i++) {     
          eventId = event[i].getID();
          if (eventId == MouseEvent.MOUSE_PRESSED) {
            //on recupere les coordonnees ou ca a pické sur le canvas 
            int x = ((MouseEvent)event[i]).getX();
            int y = ((MouseEvent)event[i]).getY();
            //et on dit au canvas : ca a pické ici,regarde si tu trouve des objets
            pickCanvas.setShapeLocation(x, y);
 
            Point3d eyePos = pickCanvas.getStartPosition ();
            double[] t =new double[3];
            double[] t2= new double[3];
             eyePos.get(t);
             t[2]=t[2]-7000;
 
           // pickResult = pickCanvas.pickAllSorted();
 
              canvas.getCenterEyeInImagePlate(eyePos);
 
              Point3d mousePos = new Point3d();
              canvas.getPixelLocationInImagePlate(x, y, mousePos);
 
              Transform3D transform3D = new Transform3D();
              canvas.getImagePlateToVworld(transform3D);
 
              transform3D.transform(eyePos);
              transform3D.transform(mousePos);
 
 
              Vector3d mouseVec;
              //if (parallel) {
                 Vector3d vect = new Vector3d(0.f, 0.f, 3.f);
              // }
              // else {
                  mouseVec = new Vector3d();
                  mouseVec.sub(mousePos, vect);
                  mouseVec.normalize();
             //  }
 
 
              pickRay.set(mousePos, mouseVec);
              sceneGraphPath = bg.pickAll(pickRay);
 
 
 
 
              if (sceneGraphPath != null) {
                  for (int j=0; j<sceneGraphPath.length; j++) {
                     if (sceneGraphPath[j] != null) {
                        Node node = sceneGraphPath[j].getObject();
                        Appearance appar2 = new Appearance();
                        System.out.println("Click detecté");
                     Appearance texture = new Appearance();
                     Material colorMat2= new Material();
                     colorMat2.setDiffuseColor(new Color3f(Color.yellow));
                     appar2.setMaterial(colorMat2);
 
                     Appearance appar = new Appearance();
                     Material colorMat= new Material();
                     colorMat.setDiffuseColor(new Color3f(Color.red));
                     appar.setMaterial(colorMat);
 
                    try{
                     Sphere cone = (Sphere) sceneGraphPath[j].getNode(0);
                     System.out.println("Recuperation objet");
                     String nom = cone.getName();
 
                     for (int g =0;g<25;g++)
                     {
                         if ( listep[g].getname().equals(nom)){
 
                             coordar=listep[g].getcoord();
 
 
                             if (listep[g].getappar().equals("appar")){
                                 if (nbselect<=2){
                                nbselect++;
                                if ( nbselect==2){
                                    canvas.setName(String.valueOf(listep[g].getcoord().x+1).concat(String.valueOf(listep[g].getcoord().y+1).concat(String.valueOf(listep[g].getcoord().z+1))));
 
                                 }
                                if ( nbselect==3){
 
                                    canvas.setName(canvas.getName().concat(String.valueOf(listep[g].getcoord().x+1).concat(String.valueOf(listep[g].getcoord().y+1).concat(String.valueOf(listep[g].getcoord().z+1)))));
                                     }
                                 listep[g].setappar("appar2");
                                 texture=appar2;
                                 }
                                 else{
                                     JOptionPane.showMessageDialog(canvas,"Vous avez deja selectionnez 2 points ", "Attention",JOptionPane.INFORMATION_MESSAGE);
                                     texture=appar;
                                 }
                                }
                             else{
                                 listep[g].setappar("appar");
                                 texture=appar;
                                 nbselect--;
 
                             }
 
                             cone.setAppearance(texture);
 
 
                         }
 
                     }
 
 
                     }
                    catch(ClassCastException e)
                    {
                         System.out.print("mauvais click");
                    }
 
                    break;
                   }
 
 
 
                     }
         }
        } 
       }
      }

et en fait je n'arrive a selectionner des objets que s'il se trouve au fond. En gros tous les objets se situant a une profondeur z inférieur a 0 ne sont pas selectionnable,
Je voulais donc savoir si quelqu'un pouvais m'aider et si fallait que je modifie la methode de selection
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
pickRay.set(mousePos, mouseVec);
 sceneGraphPath = bg.pickAll(pickRay);

Merci