Nella lezione precedente abbiamo visto un primo semplice esempio di utilizzo del framework, abbiamo creato una Viewport, ed abbiamo messo in piedi una semplice scena con un cubo rotante. Il rendering della scena, però, era privo di illuminazione.
Inserire un punto di luce è molto semplice, grazie alla classe PointLight3D
. Importiamo subito il relativo namespace.
import org.papervision3d.materials.shadematerials.*; import org.papervision3d.lights.*;
Perché un oggetto risulti illuminato, dobbiamo impostare la sua superficie per essere sensibile al punto luce. In altre parole un punto luce viene applicato ad una scena tramite la sua texture.
Quindi, una volta avuta un'istanza di PointLight3D
dobbiamo creare un materiale che accettino l'illuminazione come FlatShadeMaterial()
;. Il costruttore accetta tre parametri che sono il punto luce (PointLight3D
), un colore per la sezione illuminata ed uno per la luce ambientale.
Senza ripetere tutto il codice dell'esempio precedente basta sostituire il materiale con le seguenti righe di codice
// false = luce non visibile
var luce:PointLight3D = new PointLight3D(false);
var mat = new FlatShadeMaterial(
luce,
0x666666,
0x000000
);
Per non creare conflitti, commentiamo o eliminiamo la dichiarazione della variabile materiale
di tipo ColorMaterial
. Perché la resa sia soddisfacente dobbiamo modificare la posizione della luce sulla scena:
luce.z = -300; luce.x = -300;
Avviando il filmato, vediamo le facce del parallelepipedo colorate a seconda dell'illuminazione. Non abbiamo impostato "ombre portate" ovvero quelle ombre che si proiettano da un solido all'altro, ma certo anche così l'aspetto della nostra scena si presenta molto migliore del precedente.
Conclusioni
In questa prima parte della guida, abbiamo esplorato i concetti base di Papervision3d e ci siamo subito immersi in un esempio concreto di Sprite 3d. Nella seconda parte affronteremo un po' di teoria per aumentare le nostre competenze.