Facciamo ora un piccolo esempio che utilizzeremo in seguito anche per testare i vari parametri delle classi che abbiamo elencato nella lezione precedente.
// [impostazioni generali della scena]
var bitmapFileMaterial = new BitmapFileMaterial("html.it.png");
bitmapFileMaterial.doubleSided = true;
var piano = new Plane(bitmapFileMaterial, 358, 175, 10, 10);
scena.addChild(piano);
Il codice completo è visibile qui.
Il primo elemento che salta subito all'occhio è
bitmapFileMaterial.doubleSided = true;
che ci permette di rendere la nostra texture visibile su ambedue i lati del piano.
Ogni piano ha un suo lato visibile ed uno non visibile. Questo viene impostato tramite le normali, che sono vettori perpendicolari al piano stesso con verso dato dal prodotto vettoriale dei lati. La direzione di questo vettore normale determina il lato visibile del piano.
Tuttavia se desideriamo rendere la texture visibile sul lato opposto ci basterà impostare su true
la proprietà opposite
.
bitmapFileMaterial.opposite = true;
Possiamo anche trovarci nell'esigenza di rendere l'oggetto a cui è applicata la texture invisibile.
bitmapFileMaterial.invisible = true;
La texture applicata ad una superficie si deforma insieme alla prospettiva. Questo processo può richiedere un dispendio di risorse notevole.
In alcuni casi è facile notare che la deformazione non è particolarmente accurata. La precisione è proporzionale al numero di segmenti in cui viene divisa la superficie.
Prima di concludere questa lezione vediamo un esempio di come applicare una texture da un movieclip con BitmapMaterial
.
Supponiamo di avere un Movieclip con un disegno vettoriale in libreria. Anzitutto dobbiamo cliccarci su con il tasto destro del mouse, aprire le proprietà e spuntare Esporta per ActionScript
, poi lo trasformiamo in bitmap e lo aggiungiamo ai materiali.
// crea una istanza del MovieClip nella libreria var istanza_mc:MovieClip = new mc; // crea un BitmapData delle dimensioni del movieclip var bmpd: BitmapData = new BitmapData(istanza_mc.width, istanza_mc.height, true, 0x000000); // disegna il movieclip all'interno del BitmapData bmpd.draw(istanza_mc); // crea un materiale da BitmapData var BM = new BitmapMaterial(bmpd); // lo aggiunge al piano var piano = new Plane(BM, 358, 175, 10, 10);