Abbiamo visto in precedenza che possiamo ruotare un oggetto 3D per avere un miglior senso della prospettiva e che muovendo la telecamera possiamo ottenere diverse angolazioni e posizioni di una scena statica; sfruttando questi aspetti possiamo rendere più "accattivante" il nostro mondo 3D, andando ad animare gli oggetti e facendoli muovere all'interno della scena.
Sandy offre le classi TransformGroup
e Transform3D
proprio per applicare rotazioni e traslazioni a un qualsiasi oggetto (o gruppo di oggetti): le trasformazioni possono anche essere animate automaticamente impostando un valore iniziale e uno finale grazie agli interpolatori, che tratteremo più a fondo in seguito.
Inizieremo creando dei semplici esempi che ci aiuteranno a comprendere meglio il funzionamento degli spostamenti e delle rotazioni im ambito 3D; è possibile scaricare i file Actionscript prima di iniziare.
Ruotare un cubo
Inseriamo il cubo, creato in precedenza, nella nostra scena, ruotandolo leggermente rispetto alla sua posizione originale:
Listato 16. Inserimento del cubo nella scena
function createScene( bg:Group ):Void {
var cube:Object3D = new Box( 50, 50, 50, 'quad' );
var skin:Skin = new MixedSkin( 0x00FF00, 80, 0, 100, 1 );
cube.setSkin( skin );
var tg:TransformGroup = new TransformGroup();
var rotation:Transform3D = new Transform3D();
rotation.rot(20,30,0);
tg.setTransform( rotation );
tg.addChild( cube );
bg.addChild( tg );
}
In questo modo creiamo un TransformGroup
in cui poi andiamo a inserire il Transform3D
e il cubo creato in precedenza, quindi aggiungiamo tutto il TransformGroup
al gruppo principale del mondo.
La trasformazione applicata all'oggetto Transform3D
ha effetto su tutti gli oggetti in esso contenuti (nel nostro esempio solamente il cubo).
Per testare la trasformazione in maniera interattiva, creiamo un file (nell'esempio, BoxTest.as) dove inseriamo alcuni controlli che ci permetteranno di variare interattivamente la rotazione del nostro cubo, agendo sull'oggetto Transform3D
.
Nell'esempio troviamo un riferimento globale (rotation
) all'oggetto Transform3D
e il sistema di coordinate usato anche in precedenza, come riferimento visivo.
Sullo stage in Flash invece sono presenti tre campi di testo dinamici (xStep
, yStep
e zStep
) e un pulsante (rotateButton
). Questi elementi vengono utilizzati per cambiare la rotazione del cubo:
"© Petit Publications 2006" - diritti riservati