
Etiquetas: Viewport3D BasicRenderEngine PointLight3D ViewPort3D GouraudMaterial
////////////////////////////////////////////////////////////////////////////////////////CLASESimport org.papervision3d.view.Viewport3D;
import org.papervision3d.cameras.*;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.objects.primitives.Cube;
import org.papervision3d.materials.shadematerials.*;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.core.geom.renderables.Vertex3D
import org.papervision3d.objects.DisplayObject3D;
import flash.display.BitmapData;
import org.papervision3d.lights.*;
////////////////////////////////////////////////////////////////////////////////////////VARIABLESvar viewport:Viewport3D;var renderer:BasicRenderEngine;var escena:Scene3D;var camara:Camera3D;var listaMateriales:MaterialsList = new MaterialsList();
var cubo:DisplayObject3D;var luz:PointLight3D;stage.quality = StageQuality.LOW;
////////////////////////////////////////////////////////////////////////////////////////FUNCIONES//Esta función es la que invocamos al comenzar. Sería la constructora de la escenafunction Empezar(vpWidth:Number = 700, vpHeight:Number = 400):void {
CrearPapervision(vpWidth, vpHeight);
CrearObjetos();
CrearEventos();
PonerFrameRate();
}//Añado una instancia de mi clase FrameRate, en color blanco. function PonerFrameRate(){
var FPS = new FrameRate();
FPS.setColor(0xffffff);
addChild(FPS);
}//Crea los elementos necesarios de la escena PPVfunction CrearPapervision(vpWidth:Number, vpHeight:Number):void {
//Este va a ser el "contenedor" que nos va a permitir visualizar la escena. Es el //objeto a través del cual visualizamos la escena 3D. Hay que especificarle un ancho y un alto. viewport = new Viewport3D(vpWidth, vpHeight);
addChild(viewport);
//El renderer es el objeto que se encarga de renderizar la escena. Cada vez que se produce un cambio //Hay que volver a renderizar. Esto se hace en la funcion "Renderizar". renderer = new BasicRenderEngine();
escena = new Scene3D();
camara = new Camera3D();
camara.zoom = 3
}//Crea todos los objetos que queremos añadir a la escena (en este caso un cubo). function CrearObjetos() {
//Este es el objeto que va a generar el efecto de luz en el escenario. luz = new PointLight3D();
luz.x = -200;
luz.y = 0;
luz.z = -200;
//Creo un material a partir de un clip que hay en el escenario. Los parámetros son el //objeto PointLight3D, el color de la luz que emite el foco, y el color de la luz en el escenario. var material:GouraudMaterial = new GouraudMaterial(luz, 0xffffff, 0x000000);
//Creo el cubocubo = new Cube( new MaterialsList({all:material}),500, 500, 500, 2, 2, 2);
escena.addChild(cubo);
}//En esta función se realizan los movimientos de objetos de la escena antes de renderizar. //En este caso muevo todos los vertices del cubo para generar el efecto de fluidezfunction Mover() {
cubo.rotationY += ((mouseX - 300) - cubo.rotationY)/4;
cubo.rotationX += ((mouseY - 300) - cubo.rotationX)/4;
}//Añade los eventos necesarios a la escena. function CrearEventos():void {
addEventListener(Event.ENTER_FRAME, Renderizar);
}//Hace los cambios necesarios en la escena a través de la función mover, y después//renderiza la escena. function Renderizar(e:Event):void {
Mover();
renderer.renderScene(escena, camara, viewport);
}//////////////////////////////////////////////////////////////////////////////////////////EmpezamosEmpezar();
La versión es la alpha de greatWhite, asi que puede que algo haya cambiado
Si quieres echalé un ojo a este otro tutorial, que está hecho con la versión estable:
http://www.esedeerre.com/ejemplo/10/88/papervision-greatwhite-tipos-de-shader