Introduzione a Java3D PART 1

Stampa

Tratto da programmazione.it, scritto da Dario Guadagno

Le API Java 3D sono una libreria di classi e metodi specifiche per la realizzazione di applicazioni dotate di interfaccia grafica tridimensionale. Java 3D consente la produzione in tempo reale di grafica 3D tramite un insieme di API omogenee e multipiattaforma. Queste non si occupano del rendering a basso livello delle immagini: questa operazione è delegata dal motore di rendering di Java 3D alle librerie native della piattaforma sottostante, come OpenGL e Direct3D.

L'installazione delle API può avvenire semplicemente eseguendo il comodo tool autoinstallante scaricabile dal sito di Sun Microsystems. In Java 3D, il concetto fondamentale è quello dello scene graph: un albero a cui si appendono tutti gli oggetti della scena 3D, intendendo con tale termine non solo gli elementi da visualizzare, ma anche le istruzioni per rappresentarli.

L’albero è radicato nell’Universo Virtuale (Virtual Universe) che, a sua volta, ha uno o più figli Locale (letteralmente, dei luoghi all’interno dell’universo), che rappresentano le scene tridimensionali. Lo scene graph viene percorso dal motore di Java 3D per trovare i dati per creare l'immagine, perciò qualsiasi cosa si desideri abbia un'influenza sulla scena va messa nello scene graph.

Da ogni nodo Locale partono due rami (branches) principali: il content branch e il view branch: il primo contiene gli oggetti da visualizzare, il loro colore, dove sono messi nello spazio e tutte le altre informazioni rilevanti; il secondo contiene tutto quello che riguarda “il vedere” la scena, ad esempio i dispositivi di input/output, punto di vista ecc.

La creazione dell’Universo Virtuale, del contesto locale e di tutti gli aspetti relativi al view branch può essere effettuata automaticamente utilizzando la classe SimpleUniverse fornita di default dal package, in com.sun.j3d.utils.universe.*

Il disegno tridimensionale viene creato all'interno di un oggetto Canvas3D, che è un'estensione della classe Component, per cui può semplicemente essere aggiunto ad un frame; tuttavia, non è un container, quindi non può contenere altri componenti. La Canvas3D viene creata a partire dal view branch, e riempita, quindi, con gli elementi del content branch. Gli oggetti tridimensionali immessi nella scena, in effetti, non sono altro che dei rendering delle immagini descritte dai nodi, per cui, non è possibile associare degli eventi da catturare e gestire, secondo la normale programmazione a eventi di Java, ma è possibile definire dei behavior, cioè delle reazioni degli oggetti tridimensionali all'interazione dell'utente con la scena.

Come detto, quindi, ogni elemento della scena, sia esso un oggetto 3D, una luce o una qualsiasi entità che definisca le modalità di visualizzazione dell'ambiente, non è altro che un nodo del grafo della scena. Due nodi, tuttavia, hanno una funzione particolare: i BranchGroup, radici di sottoalberi di oggetti con proprietà comuni, e i TransformGroup, che definiscono delle trasformazioni (rotazioni, spostamenti lungo uno degli assi ecc.) associate a tutti gli elementi del loro sottoalbero.

Le foglie dello Scene Graph sono, tipicamente, gli oggetti fisici che popolano la scena.