L'oggetto principale, di un mondo 3D creato con Sandy, è l'oggetto World3D
, che, a sua volta, conterrà tutti gli altri oggetti quali luci, camere, gruppi, ecc. Tutti gli altri gruppi saranno invece contenuti dall'oggetto rootGroup
.
Per prima cosa dobbiamo impostare nel nostro file i packages e le classi da Sandy
import sandy.core.data.*;
import sandy.core.group.*;
import sandy.primitive.*;
import sandy.view.*;
import sandy.core.*;
import sandy.skin.*;
import sandy.util.*;
import sandy.core.transform.*;
import sandy.events.*;
Quindi andiamo a creare alcune variabili che utilizzeremo all'interno dell'esempio
// Definiamo due variabili globali
var screen:ClipScreen; // Superficie iniziale
var world:World3D = World3D.getInstance(); // Il nostro mondo 3D
Ora è necessario inizializzare il "mondo" 3D e mostrarlo a schermo (renderizzarlo)
Listato 2. Inizializzazione e render del "mondo" 3D
// All'interno della funzione init inizializziamo e renderizziamo il mondo
function init( Void ):Void {
// Creiamo un ClipScreen dove disegneremo il mondo 3D
screen = new ClipScreen( this.createEmptyMovieClip('screen', 1), 300, 300 );
// Creiamo una telecamera che inquadrerà il nostro mondo
// Impostiamo una distanza focale e una clip di riferimento da inquadrare
var cam:Camera3D = new Camera3D( 700, screen );
// Posizioniamo la telecamera 500 pixel in negativo sull'asse Z
// (la posizione predefinita della camera sarebbe 0,0,0)
cam.setPosition(0,0,-500);
// Aggiungiamo la telecamera nel mondo 3D
world.addCamera( cam );
// Creiamo il gruppo principale che conterrà tutti gli altri oggetti
var bg:Group = new Group();
// e lo agganciamo al mondo
world.setRootGroup( bg );
// Creiamo la scena (creeremo in seguito la funzione)
createScene( bg );
// E renderizziamo il mondo
world.render();
}
La classe World3D è unica, cioè possiamo avere un solo oggetto World3D nel nostro file. In ogni momento possiamo conoscere tale oggetto, utilizzando il metodo World3D.getInstance()
Nella funzione init abbiamo creato un ClipScreen su cui disegnare gli oggetti e abbiamo impostato un oggetto Camera3D, che costituirà il "punto di vista" che utilizzeremo per vedere gli oggetti.
La camera ha una distanza focale che influisce sulla prospettiva e sul modo in cui la scena apparirà, come vedremo meglio in seguito.
La telecamera può essere mossa in ogni momento per cambiare la visuale; per esempio nella nostra funzione l'abbiamo spostata di 500 pixel sull'asse Z, mentre di default sarebbe stata al centro delle coordinate (0,0,0).
Per avviare la creazione della scena abbiamo creato un gruppo principale, quindi abbiamo richiamato la funzione CreateScene
e infine abbiamo avviato la renderizzazione del mondo.
"© Petit Publications 2006" - diritti riservati