NOTA! Questo sito utilizza i cookie e tecnologie simili.

Se non si modificano le impostazioni del browser, l'utente accetta. Per saperne di piu'

Approvo

Capitolo 22: Secondo esempio: popolare l'universo.

 

Il secondo esempio, definito nel file 'SecondoEsempio.java', è molto simile a 'PrimoEsempio', ma inserisce un Content Branch Graph, definito tramite il metodo 'creaLoSceneGraph', al Simple Universe.

 

 

Subito dopo aver creato il SimpleUniverse bisognerà, quindi, inserire le seguenti righe di codice:

// Creiamo una scena di base con un metodo da noi definito (vd. dopo) e la compiliamo

BranchGroup scena = creaLoSceneGraph();

scene.compile();

// Aggiungiamo la scena al Simple Universe

sU.addBranchGraph(scena);   .

 

La scena definita in 'creaLoSceneGraph' è costituita da un oggetto nativo di Java 3D, il ColorCube (un cubo colorato, come suggerisce il nome), ruotato intorno a due assi e traslato, per renderlo visibile all'utente (all'avvio, l'utente si trova posizionato nell'origine, così come ogni oggetto 3D agganciato direttamente alla radice del Content Branch Graph, senza traslazioni; senza traslazione, l'utente si troverebbe dentro il ColorCube e non vedrebbe niente !).

 

 

Lo Scene Graph di questo esempio è mostrato nella figura seguente.

 

Esempio Java 3D Scene Graph 2

 

Le righe di codice presenti all'interno di 'creaLoSceneGraph' al momento non vi diranno nulla, ma presto (sezioni 4 e 5) il loro significato vi sarà chiarissimo !

Prima di concludere questa prima sezione, soffermiamoci su una particolare riga di codice presente in 'SecondoEsempio.java', ossia:

 

JPopupMenu.setDefaultLightWeightPopupEnabled(false); .

 

 

 

 

Cosa significa? A che serve?

Una Canvas3D è un oggetto AWT (Heavyweight), che potrebbe nascondere oggetti Swing anche quando questi dovrebbero essere visualizzati sopra la Canvas3D, come, ad esempio, un Menù.

L'istruzione precedentemente mostrata rappresenta un modo per risolvere questo problema; in alternativa, le componenti Lightweight e le componenti Heavyweight potrebbero essere inserite in contenitori separati.

 

 
Vai all'inizio della pagina