
Etiquetas: PointLight3D GouraudShader FlatShader CellShader PhongShader ShadedMaterial
Una de las novedades de Papervision GreatWhite son los ShadedMaterial.
Para utilizarlos basta con seguir los siguientes pasos:
Podemos utilizar los 4 tipos de Shader utilizando los siguientes parámetros*:
-LightObject3D, es decir, la luz que hemos creado en el paso 2. -lightColor: el color de la luz que hemos creado -ambientColor: el color de la luz ambiente*Algunos de los Shaders tienen otros parámetros opcionales, que pueden verse en la documentación del GreatWhite.
Los 4 tipos de Shaders disponibles son:
FlatShader: el más simple de todos. Menos realista, pero mejor rendimiento:

CellShader: crea una especie de "efecto linterna".

GouraudShader: mas realismo y consumo del procesador.

PhongShader: permite crear los efectos más realistas. Posee varios parámetros opcionales. Es el que consume mas recursos.

package{import flash.display.*
public class EjemploShaders extends MovieClip{
import flash.display.Sprite;
import flash.events.Event;
import flash.display.BitmapData;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.lights.PointLight3D;
import org.papervision3d.view.Viewport3D;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.materials.shaders.*;
import org.papervision3d.materials.shadematerials.*;
import org.papervision3d.materials.BitmapMaterial;
import org.papervision3d.objects.primitives.Sphere;
var escena:Scene3D; var renderer:BasicRenderEngine; var camara:Camera3D; var viewport:Viewport3D; var esfera:Sphere; var luz:PointLight3D;public function EjemploShaders(){
init();
}public function init():void{
escena = new Scene3D();
renderer = new BasicRenderEngine();
camara = new Camera3D();
viewport = new Viewport3D(400,400);
addChild(viewport);
camara.z = -500;
//Creo un BitmapData a partir de una imagen que tengo linkaad en la biblioteca con el nombre de materialBibliotecavar bitmapTierra:BitmapData = new materialBiblioteca(0,0);
//Creo un BitmapMaterial con el objeto anteriorvar materialTierra:BitmapMaterial = new BitmapMaterial(bitmapTierra);
//Para crear ShadedMaterials necesitamos: // 1. Una Luz, en este caso "luz" // 2. Un Shader, en este caso cualquiera de los materiales "shader", ya sea FlatShader, CellShader... // 3. Un ShadedMaterial, creado a partir del Shader y un BitmapData. //1. La luz luz = new PointLight3D;luz.z = -1000000;
luz.x = 1500000;
escena.addChild(luz);
//2. Los Shader. Para probarlos basta con comentar/descomentar las lineas //var shader:FlatShader = new FlatShader(luz,0xffffff,0x222222); //var shader:CellShader = new CellShader(luz,0xffffff,0x222222);var shader:GouraudShader = new GouraudShader(luz,0xffffff,0x222222);
//var shader:PhongShader = new PhongShader(luz,0xffffff,0x222222); //3. El ShadedMaterialvar shadeMat:ShadedMaterial = new ShadedMaterial(materialTierra,shader)
//Creo la esfera con el ShadedMaterialesfera = new Sphere(shadeMat, 200, 10, 10);
escena.addChild(esfera);
addEventListener(Event.ENTER_FRAME, renderizar);
}private function renderizar(e:Event):void{
esfera.yaw(1);
renderer.renderScene(escena, camara, viewport);
} }}
Aquí tienes el repositorio e instrucciones para instalarlo:
http://code.google.com/p/papervision3d/