Papervision 2.0a Greatwhite: Sombras |
Etiquetas: Viewport3D BasicRenderEngine PointLight3D ViewPort3D GouraudMaterial |
////////////////////////////////////////////////////////////////////////////////////// //CLASES import 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.*; ////////////////////////////////////////////////////////////////////////////////////// //VARIABLES var 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 escena function 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 PPV function 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 cubo cubo = 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 fluidez function 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); } //////////////////////////////////////////////////////////////////////////////////////// //Empezamos Empezar();

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 |
|
|