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 65: Traslazioni.

 

Quando un oggetto viene creato ed inserito come figlio diretto della radice del Content Branch Graph la sua posizione iniziale, all'interno dell'universo virtuale, è, di default, l'origine (0, 0, 0).

Per spostarlo bisogna ricorrere ad un vettore: la posizione finale dell'oggetto corrisponderà alla somma delle coordinate di partenza e delle coordinate espresse mediante il vettore, secondo la regola della somma vettoriale.

 

 

Esempio di vettore utile a definire l'entità di una traslazione:

Vector3f vettoreTraslazione = new Vector3f(0.0f, 0.0f, -5.0f ); .

 

Il vettore della traslazione è solo il primo passo: esso rappresenta l'entità della trasformazione.

Per definire una trasformazione vera e propria bisogna creare un 'oggetto trasformazione':

 

Transform3D t3d = new Transform3D(); .

 

Un oggetto Transform3D è un oggetto trasformazione 'generico': viene utilizzato per creare traslazioni, rotazioni, ridimensionamenti (anche combinazioni di tali trasformazioni).

Per specificare la 'componente di traslazione' del Transform3D, utilizziamo il metodo:

 

setTranslation(Vector3*);

di Transform3D.

 

A questo punto, bisogna inserire la trasformazione nello Scene Graph (Transform3D è un oggetto 'informatico', non un nodo o una foglia dello Scene Graph).

Per farlo, utilizzeremo l'oggetto (questa volta sia informatico che dello Scene Graph) TransformGroup:

 

TransformGroup tgTraslazione = new TransformGroup(t3d);

objRoot.addChild(tgTraslazione); .

 

I TransformGroup, spesso abbreviati in TG, sono Gruppi: aggiungendo dei figli, questi saranno soggetti alla trasformazione definita dal padre:

 

tgTraslazione.addChild(oggetto1); tgTraslazione.addChild(oggetto5);

tgTraslazione.addChild(oggettoN);.

Per aggiungere più oggetti, ciascuno con la sua trasformazione, si consiglia di creare un array di posizioni e un array di oggetti (quelli da posizionare, appunto), e di eseguire un ciclo che crei i vari vettori, le trasformazioni e i TG, aggiungendo di volta in volta i TG così definiti al gruppo (BranchGroup, o TransformGroup per creare trasformazioni in cascata), collegato allo Scene Graph.

 

Esempio: 'Downtown.java'.

 

E' possibile applicare una traslazione anche al TG che controlla la ViewingPlatform, in modo da spostare il punto di vista iniziale dell'osservatore all'interno della scena 3D di una quantità a piacere.

 

 
Vai all'inizio della pagina