Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 5 di 51
  • livello principiante
Indice lezioni

Creare la scena con un cubo

Primo esempio pratico, creazione di un cubo e inserimento nella scena 3d
Primo esempio pratico, creazione di un cubo e inserimento nella scena 3d
Link copiato negli appunti

Vediamo allora il contenuto della funzione createScene() che si occupa di "piazzare" l'oggetto (nel nostro caso un cubo) all'interno del mondo.

Listato 3. funzione che mette l'oggetto all'interno del mondo

function createScene( bg:Group ):Void {
    // Creazione del cubo
    // Creiamo un cubo con i lati di 50 pixel
    var cube:Object3D = new Box( 50, 50, 50, 'quad' );
    // Per dare un aspetto migliore al cubo realizziamo una skin
    // In questo caso creiamo una skin con un colore verde, semi trasparente, e i bordi neri
    var skin:Skin = new MixedSkin( 0x00FF00, 80, 0, 100, 1 );
    // Quindi applichiamo la skin al cubo
    cube.setSkin( skin );
    // e infine aggiungiamo il cubo alla scena
    bg.addChild( cube );
}

Impostando tutti i lati alla stessa lunghezza (nel nostro caso 50 pixel) abbiamo ottenuto un cubo.

Può essere creato con modalità "tri", con tre vertici per ogni faccia, oppure in modalità "quad" (quella che abbiamo usato), con quattro vertici per ogni faccia.

Per dare un look migliore all'esempio, abbiamo anche creato una skin per il cubo; le skin utilizzabili in Sandy sono molte, nel nostro esempio era sufficiente una MixedSkin, dove si stabilisce un colore per le facce e uno per i bordi.

Gli argomenti della funzione MixedSkin sono colore e trasparenza delle facce, colore, trasparenza e spessore delle linee.

Il cubo viene infine aggiunto alla scena. Testando il filmato il risultato sarà il seguente

Scena con il cubo creato

Scena con il cubo creato

Il risultato non sembra certo un cubo in 3D, però noi abbiamo spostato la telecamera solo sull'asse Z, pertanto semplicemente la telecamera è posizionata di fronte al cubo.

Ecco come cambia il codice, della funzione createScene(), applichiamo dei cambiamenti al cubo:

Listato 4. Cambiamenti al codice di createScene()

function createScene( bg:Group ):Void {
    
    // LA PRIMA PARTE RESTA INVARIATA
    // Creazione del cubo
    // Creiamo un cubo con i lati di 50 pixel
    var cube:Object3D = new Box( 50, 50, 50, 'quad' );
    // Per dare un aspetto migliore al cubo realizziamo una skin
    // In questo caso creiamo una skin con un colore verde, semi trasparente, e i bordi neri
    var skin:Skin = new MixedSkin( 0x00FF00, 80, 0, 100, 1 );
    // Quindi applichiamo la skin al cubo
    cube.setSkin( skin );
    // e infine aggiungiamo il cubo alla scena
    bg.addChild( cube );

    // AGGIUNGIAMO QUESTA PARTE
    
    // Per vedere il cubo veramente in 3D, applicheremo alcune trasformaizoni
    // Innanzitutto creiamo un oggetto TransformGroup
    var tg:TransformGroup = new TransformGroup();
    // Poi creiamo un oggetto Transform3D, per applicare trasformazioni in 3 dimensioni
    var rotation:Transform3D = new Transform3D();
    // Quindi eseguiamo le modifiche
    // Ruotiamo il cubo
    rotation.rot(20,30,0);
    // Impostiamo la trasformazione nel gruppo creato in precedenza
    tg.setTransform( rotation );
    // e aggiungiamo il cubo al gruppo stesso
    tg.addChild( cube );
    // Quindi aggiungiamo tutto il gruppo di trasformazione al gruppo principale del mondo 3D
    bg.addChild( tg );
}

Per ruotare o spostare un oggetto (o un gruppo di oggetti) dobbiamo creare un TransformationGroup, e applicare a esso le trasformazioni.

Tali trasformazioni sono fatte dall'oggetto Transform3D e il tipo di trasformazione viene impostato chiamando le funzioni di questo oggetto (infatti nella funzione abbiamo richiamato la funzione rot per la rotazione); i parametri per la funzione rot sono la rotazione rispettivamente intorno agli assi x,y e z.

Nel nostro esempio abbiamo ruotato il cubo di 20 gradi sull'asse X e di 30 gradi sull'asse Y.

Infine abbiamo inserito il cubo nel TransformationGroup, e quest'ultimo nel gruppo principale (creato, ricordiamo, nella funzione init).

Il risultato dopo queste modifiche sarà quello illustrato qui sotto.

Scena con il cubo ruotato

Scena con il cubo ruotato

"© Petit Publications 2006" - diritti riservati

Ti consigliamo anche