Una volta realizzato un oggetto, abbiamo bisogno di familiarizzare con le coordinate dello spazio in cui viene inserito. Grazie agli assi di riferimento possiamo stabilire la posizione degli oggetti. Le coordinate fanno riferimento inizialmente all'angolo superiore dell'oggetto (come avviene in Flash dopotutto), tuttavia in questa parte non vengono prese in considerazione le trasformazioni e le rotazioni che pur modificando l'oggetto stesso, non ne alterano la posizione di riferimento.
Facciamo un esempio: se da spostiamo tutti vertici di un cubo 100 pixel sull'asse x
, vediamo il nostro oggetto spostarsi, ma in DisplayObject3D
i parametri x
,y
e z
non sono variati. Questo caso, che sembra tanto improbabile, in realtà lo ritroviamo ogni qual volta applichiamo una rotazione dell'oggetto.
In questo esempio abbiamo costruito una scena con due viewport, gli oggetti sulla scena sono gli stessi, quello che cambia in questo caso è la posizione della camera.
Gli assi sono disegnati deformando dei piccoli cubi. Potrebbe non sembrare il modo più corretto: nel prossimo esempio utilizziamo delle linee.
Sistemi di riferimento relativi
Gli assi di riferimento ci mostrano sempre le coordinate di un oggetto relative al suo contenitore. Tipicamente sono le coordinate relative alla scena, ma le cose cambiano quando raggruppiamo gli oggetti.
Se ad esempio disegniamo le coordinate all'interno di un DisplayObject3D
, che abbiamo traslato e ruotato, anche queste saranno traslate e ruotate. Questo concetto è estremamente importante, perché se lavoriamo con un oggetto "figlio" dobbiamo tenere sempre presente in quale sistema riferimento operiamo.
Questa gestione è l'evoluzione tridimensionale della struttura già utilizzata da Flash: anche un comune DisplayObject
prende come piano di riferimento quello del proprio contenitore e non quello della scena.
In altre parole se abbiamo ruotato l'oggetto contenitore e poi muoviamo un oggetto al suo interno ad esempio sull'asse x
questo non si muoverà parallelo all'asse X
della scena.
Questo esempio fa uso di classi che ancora non abbiamo spiegato, ma serve a visualizzare quanto detto e ad iniziare prendere confidenza con nuovi oggetti.
Ecco il codice. Come si vede, abbiamo utilizzato le classi Tweener di "caurina", che è possibile scaricare ed utilizzare con la stessa procedura già vista per PaperVision.
Conclusioni
In questa seconda parte abbiamo visto come è strutturato uno Sprite 3D e come spostare gli oggetti e la telecamera sulla scena e come sono strutturati gli oggetti.