Analizziamo un altro filtro molto interessante che può tornare utile nelle scene 3D: si tratta del filtro Blur. Questo filtro, come si può intuire dal nome, permette di rendere un movieclip più o meno sfocato.
All'interno di Sandy questo filtro può essere utilizzato per creare effetti di "nebbia", oppure per simulare la profondità di campo dove gli oggetti troppo vicini alla telecamera, o troppo lontani da essa, appaiono sfocati.
Il comando BlurFilter prevede tre parametri: blurX, blurY e quality.
I primi due parametri impostano la quantità di sfocatura orizzontale e verticale, mentre la qualità stabilisce il numero di volte in cui l'operazione debba essere ripetuta.
Andremo ora a creare una scena con oggetti posti a diversa distanza dalla telecamera, quindi a seconda della distanza da essa ne stabiliremo la sfocatura.
Come sempre per prima cosa scriviamo la funzione createScene
:
Listato 59. Crea la scena con l'effetto sfocatura
function createScene( bg:Group ):Void {
bg.addChild( plane = new Plane3D( 2000, 1500, 10, 'quad'));
plane.setSkin( new MixedSkin( 0xF7FBAE, 80, 0, 100, 1 ));
var cube:Object3D;
var skin:MixedSkin;
var blurFilter:BlurFilter;
var tg: TransformGroup;
var transform:Transform3D;
for( i = 0; i < NUM_OBJS; i++ ){
var cube:Object3D = new Box( 50, 50, 50, 'quad' );
objects.push(cube);
skin = new MixedSkin( 0xF2B7EE, 100, 0, 100, 1 );
cube.setSkin( skin );
// Creiamo l'effetto sfocatura
blurFilter = new BlurFilter(0,0,3);
skin.filters = new Array(blurFilter);
// Distribuiamo gli oggetti lungo la scena
transform = new Transform3D();
tg = new TransformGroup(transform);
transform.translate( 40*i - 200, 50, 100*i );
tg.addChild( cube );
bg.addChild( tg );
}
}
Questo codice crea un determinato numero di cubi e ne salva i riferimenti all'interno di un array per potervi accedere in seguito.
Ogni cubo viene disegnato con una MixedSkin: poichè le sfocature saranno diverse e indipendenti l'una dall'altra, ogni oggetto avrà una sua skin univoca.
Per ogni skin creiamo poi una sfocatura di tipo Gaussiano (qualità 3), inizialmente con i valori blurX
e blurY
pari a 0 e la associamo alla skin sfruttando la proprietà filters.
Come ultima cosa disponiamo i vari cubi lungo la scena.
"© Petit Publications 2006" - diritti riservati