Negli esempi di texture mapping fatti fin'ora ci siamo limitati ad applicare un materiale ad un oggetto. Abbiamo utilizzato le classi MaterialsList
e Material
. Ad ogni oggetto (per le primitive unicamente al cubo) deve essere applicata una lista di materiali anche se vogliamo utilizzare un'unica texture. Infatti al nostro cubo abbiamo sempre assegnato una collezione di oggetti Material
.
new MaterialsList({all:texture});
Il parametro all
significa che ogni lato dell'oggetto avrà come materiale quello definito in texture
.
Ora vediamo come impostare diversi materiali. Tramite l'esportazione di file .DAE
possiamo importare direttamente le mappe dei materiali in Flash, ma abbiamo anche la possibilità di gestire i materiali direttamente con Papervision.
Ogni piano di un oggetto può contenere una diversa texture. Ad esempio quando creiamo un cubo abbiamo visto che i vari piani hanno per default assegnati i nomi FRONT
, LEFT
, RIGHT
, etc.
Assegnare materiali alle superfici con Blender
Dopo aver creato il nostro modello in Blender, passiamo in Edit Mode
e selezioniamo le facce a cui desideriamo assegnare un nuovo materiale. Nel menù editing
sotto Links and materials
clicchiamo su new
e assign
. Scriviamo quindi il nome del materiale in modo da richiamarlo facilmente in Papervision, per esempio scriviamo "MioMateriale".
In Papervision
Una volta caricato il file in Papervision possiamo assegnare una texture a MioMateriale
diversa dalla texture che utilizzeremo per tutto il resto dell'oggetto.
var thelight:PointLight3D = new PointLight3D(false); thelight.z = -300; thelight.x = -300; materiale = new FlatShadeMaterial(thelight, 0x0000FF, 0x000000); var materiale2 = new FlatShadeMaterial(thelight, 0xFF0000, 0x000000); var solido:DisplayObject3D = new Collada("mioOggetto.dae", new MaterialsList({ mioMateriale:materiale, mat01:materiale2 }));
Materiali
Oltre a ai materiali che abbiamo già citato per l'applicazione di Bitmap alle superfici, vale la pena ricordare alcuni dei materiali incontrati, oltre o comunque utili del package org.papervision3d.materials
.
ColorMaterial l'abbiamo usata già nel corso della guida, ci permette di stabilire il colore e la trasparenza delle superfici, nonché la possibilità di registrare eventi.
ColorMaterial
public function ColorMaterial( color:Number = 0xFF00FF, alpha:Number = 1, interactive:Boolean = false)
VideoStreamMaterial è una classe è molto interessante, da approfondire per esempio se si vuole sviluppare video player tridimensionale.
VideoStreamMaterial
public function VideoStreamMaterial( video:Video, stream:NetStream, precise:Boolean = false)
Altra classe interessante èWireframeMaterial, che ci permette di vedere la struttura del nostro poligono.
WireframeMaterial
public function WireframeMaterial( color:Number = 0xFF00FF, alpha:Number = 100, thickness:Number = 0)