Magari può essere utili a qualcuno.
Ho gestito nel metodo mousePressed chiamo un mio metodo che mi va a modificare l'Appearance della superficie cliccata:
Codice PHP:
public void aggiornaScena(int xpos, int ypos) {
PickInfo pickResult = null;
Shape3D shape = null;
PickCanvas pickCanvas = new PickCanvas(JFrame01.canvas3D, branchGroupGeometry);
pickCanvas.setMode(PickInfo.PICK_GEOMETRY);
pickCanvas.setFlags(PickInfo.NODE|PickInfo.ALL_GEOM_INFO|PickInfo.LOCAL_TO_VWORLD);
pickCanvas.setTolerance(0.0f);
pickCanvas.setShapeLocation(xpos,ypos);
pickResult = pickCanvas.pickClosest();
if (pickResult != null) {
shape = (Shape3D) pickResult.getNode();
JFrame01.PianoInLavorazione = (Shape3D) pickResult.getNode();
}
if (shape != null) {
Appearance appearance = new Appearance();
appearance = shape.getAppearance();
if(appearance!=null){
if (appearance==appearanceOld){
shape.setAppearance(createPolygonAppearance());
}
else {
System.out.println(shape.getAppearance()+ " " + shape);
shape.setAppearance(appearanceOld);
}
}
}
}
e nella creazione delle facce abilito la modifica dell'appearance:
Codice PHP:
shape.setCapability(shape.ALLOW_APPEARANCE_WRITE);
shape.setCapability(shape.ALLOW_APPEARANCE_OVERRIDE_WRITE );
quindi problema risolto.