Papervision 3d ReflectionView Tutorial
Ciao a tutti era da tempo che mancavo all’appuntamento, ma eccovi qui un nuovo tutorial! Vi siete mai chiesti come realizzare un effetto riflessione con Papervison 3d simile all’ormai famosissima Cover Flow di iTunes? Niente di più semplice! Ecco infatti in nostro aiuto la Classe ReflectionView nativa del pacchetto pv3d.
Intanto guardatevi il demo:
Demo
1) Pv3d template 1
Prima di iniziare il tutorial assicuratevi di aver visionato e scaricato il primo post della serie. Se avete già domestichezza conla libreria Papervision 3d e siete in grado di instanziare un oggetto potete procedere senza problemi.
Papervision 3d start-up your first template tutorial
2) Import
Per prima cosa importiamo la classe necessaria a creare la riflessione.
import org.papervision3d.core.effects.view.ReflectionView;
3) Extends
Estendiamo la nostra funzione costruttrice in modo che erediti le proprietà della classe ReflectionView:
public class ReflectionClassPv3dTut extends ReflectionView
4) SurfaceHeight
Definiamo il piano di riflessione:
surfaceHeight = Number;
5) My Class
// DavidSalvatori.com
// First Pv3d Reflections Class Tutorial
// Papervision3D_rev859
package
{
import flash.events.Event;
import org.papervision3d.materials.MovieAssetMaterial;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.core.effects.view.ReflectionView;
import org.papervision3d.cameras.Camera3D;
public class ReflectionClassPv3dTut extends ReflectionView
{
private var plane:Plane;
public function ReflectionClassPv3dTut ()
{
super (1024,768,false,false);
init ();
camera.z = -400;
surfaceHeight = -350;
this.addEventListener (Event.ENTER_FRAME,enterFrame);
}
private function init ():void
{
var material_mc1:MovieAssetMaterial = new MovieAssetMaterial("mc_1", true);
plane = new Plane(material_mc1, 250, 350, 4, 4);
scene.addChild (plane);
}
private function enterFrame (e:Event):void
{
singleRender ();
}
}
}
Conclusion & Download
Ecco fatto! Come promesso l’implementazione della classe è veramente semplice. Se volete approfondirne l’utilizzo non perdetevi il rimando alla documentazione ufficiale di Papervision3D. Naturalmente utilizzando la classe ReflectionView non siamo di fronte a un vero materiale riflettente, ma di una copia della nostra BasicView appunto riflessa.



Comments
ranawaiana
July 14, 2009
ciao, stavo provando ad utilizzare il tuo tutorial per capire certe dinamiche del 3D
in base a cosa hai calcolato che la telecamera andava a z -400?
utilizzando un mc di h 134 sto impazzendo per capire la proporzione ottimale per spostare la telecamera quel tanto che basta per non far sovrapporre il piano riflettente col mc d’origine!!
sto impazzendo, non può essere empirico!!
David
July 14, 2009
ciao,
non capisco esattamente che dici… ho provato a cambiare lo z ma non vedo il problema che descrivi…
devi per caso posizionare la tua mc in modo che sia 134px h esatti ?
laura
February 23, 2010
ciao David,
sto provando a utilizzare questa classe ma mi si aggiunge uno sfondo nero quando aggiungo una ReflectionView… cosa sbaglio???
Laura
David
February 23, 2010
ciao Laura,
dove ti si aggiunge lo sfondo nero? all’intera viewport o alla riflessione dell’oggetto stesso che rifletti ? hai per caso delle trasparenze ?!