Introduzione a Java3D PART 1

Print

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.

This website uses cookies to ensure you get the best experience on our website.