Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    142

    [Java3D] Evidenziare superficie cliccata

    Ciao a tutti,
    in un canvas3D ho un solido creato aggiungendo ad un branchgroup numerose linee e diverse facce.

    Ora vorrei che qualsiasi piano possa essere evidenziato in seguito ad un click del mouse.

    Mi sto documentando sulla classe MouseBehaviour e Pick .. dite che mi sto muovendo bene? Avete dei suggerimenti?
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    142
    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 xposint ypos) {
            
    PickInfo pickResult null
            
    Shape3D shape null;
            
    PickCanvas pickCanvas = new PickCanvas(JFrame01.canvas3DbranchGroupGeometry); 
            
    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 = (Shape3DpickResult.getNode();
                
    JFrame01.PianoInLavorazione = (Shape3DpickResult.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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.