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

Piani di riferimento

Sfruttando Plane3D, primitiva vista nella lezione precedente, creiamo un sistema di riferimento utile per comprendere l'ambiente 3D
Sfruttando Plane3D, primitiva vista nella lezione precedente, creiamo un sistema di riferimento utile per comprendere l'ambiente 3D
Link copiato negli appunti

Nei prossimi esempi andremo a usare un sistema di coordinate simile a quello appena creato, ma più trasparente, così da poterlo utilizzare come riferimento visivo senza che dia troppo fastidio.

Creiamo una funzione di nome createCoordinateSystem(), che aggiunge assi e piani al gruppo principale:

Listato 9. Aggiunge assi e piani al gruppo principale

// Creazione del sistema di coordinate
// il valore doPlanes se settato su false fa sì che i piani non vengano disegnati
// grid imposta il numero di divisioni delle griglie ( 1 - 10 ) ( è il parametro qualità dei piani, visto in precedenza )
function createCoordinateSystem( bg:Group, doPlanes:Boolean, grid:Number ):Void {
    // Creazione degli assi
    var xAxis:Object3D = new Line3D( new Vector(-150,0,0), new Vector(150,0,0) );
    var yAxis:Object3D = new Line3D( new Vector(0,-150,0), new Vector(0,150,0) );
    var zAxis:Object3D = new Line3D( new Vector(0,0,-150), new Vector(0,0,150) );
    // Colorazione degli assi
    xAxis.setSkin( new SimpleLineSkin( 1, 0xff0000, 60 ) ); // rosso
    yAxis.setSkin( new SimpleLineSkin( 1, 0x00ff00, 60 ) ); // verde
    zAxis.setSkin( new SimpleLineSkin( 1, 0x0000ff, 60 ) ); // blu
    // Crea il gruppo di assi
    var axes:Group = new Group();
    axes.addChild(xAxis);
    axes.addChild(yAxis);
    axes.addChild(zAxis);
    // Aggiunge il gruppo di assi al gruppo principale
    bg.addChild( axes );
    
    // Crea i piani, se il valore di doPlanes è "true"
    if( doPlanes){
    
    var xyPlane:Object3D = new Plane3D(100,100,grid,'quad');
    xyPlane.setSkin( new MixedSkin(0x00FF00, 10, 0, 15, 1));
    
    var yzPlane:Object3D = new Plane3D(100,100,grid,'quad');
    yzPlane.setSkin( new MixedSkin(0x0000FF, 10, 0, 15, 1));
    
    var zxPlane:Object3D = new Plane3D(100,100,grid,'quad');
    zxPlane.setSkin( new MixedSkin(0xFF0000, 10, 0, 15, 1));
    
    // Imposta la rotazione per i piani xy e zy
    // Ricordiamo che il piano xz non richiede trasformazioni
    var tg1:TransformGroup = new TransformGroup();
    var rot1:Transform3D = new Transform3D();
    rot1.rot(90,0,0);
    tg1.setTransform( rot1 );
    tg1.addChild( xyPlane );
    
    var tg2:TransformGroup = new TransformGroup();
    var rot2:Transform3D = new Transform3D();
    rot2.rot(0,0,90);
    tg2.setTransform( rot2 );
    tg2.addChild( yzPlane );
    
    
    // Aggiungiamo i gruppi di piani trasformati al gruppo principale
    bg.addChild( tg1 );
    bg.addChild( tg2 );
    bg.addChild( zxPlane );
}

La funzione ha tre argomenti:

  • Il gruppo principale del mondo Sandy ed è ovviamente fondamentale
  • Il parametro doPlanes che serve per dire alla funzione se creare i piani di coordinate oppure no
  • grid serve per impostare il numero di sezioni in cui dividere i piani stessi

Con un valore di grid pari a 1, non avremo divisioni (il massimo invece è 10). Come si può leggere anche nei commenti, tale valore corrisponde al parametro "qualità" nella creazione di un Plane3D.

"© Petit Publications 2006" - diritti riservati


Ti consigliamo anche