Tipos de materiales en Papervision 1.5

Etiquetas: MovieScene3D Cube MaterialsList WireframeMaterial MovieMaterial MovieAssetMaterial BitmapAssetMaterial ColorMaterial BitmapFileMaterial renderCamera

Este ejemplo muestra como crear un cubo con 6 tipos diferentes de materiales en Papervision (AS3). He utilizado los más básicos, en la wiki de Papervision se puede encontrar un listado completo con los materiales disponibles.

//Importo las clases necesarias
import flash.display.Sprite;
import flash.events.Event;
 
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.objects.Cube;
import org.papervision3d.scenes.MovieScene3D;
import org.papervision3d.materials.*;
 
//Defino variables
var container: Sprite;
var scene: MovieScene3D;
var camera: Camera3D;
var cubo: Cube;
//Esta variables va a contener los nombres de los 6 materiales que voy a utilizar para cada cara del cubo
var listaMateriales:MaterialsList = new MaterialsList();
 
//FUNCIONES
 
//Función inicial
function Empezar(){
	CrearEscena();
	CrearCamara();
	CrearMatrizMateriales();
	CrearCubo();
}
 
//Crea la escena 3D
function CrearEscena(){
	//Creo un contenedor para la escena y lo coloco en el centro del escenario
	container = new Sprite;
	container.x = 200;
	container.y = 200;
	addChild( container );
	//Creo la escena 3D a partir del contenedor
	scene = new MovieScene3D( container );
}
 
//Creo la cámara que va a "mostrar" la escena
function CrearCamara(){
	//Creo la camara y la "alejo" de la escena para que muestre el cubo
	camera = new Camera3D();
	camera.z = -200;
	camera.zoom = 2;
 
}
 
//Relleno la matriz de materiales. Se puede utilizar rejilla, imágenes, clips, relleno de color, etc....
function CrearMatrizMateriales(){
	//Creo los materiales
	//Material del tipo rejilla de color rojo
	var material1:WireframeMaterial = new WireframeMaterial(0xFF0000);
	//Material del tipo MovieClip, con el clip llamado MaterialClip del escenario
	var material2:MovieMaterial = new MovieMaterial(MaterialClip);
	//Material del tipo MovieClip almacenado en biblioteca. Su Clase debe ser MaterialClipBiblioteca 
	var material3:MovieAssetMaterial = new MovieAssetMaterial("MaterialClipBiblioteca");
	//Material del tipo BitMap almacenado en Biblioteca. La clase de vinculacion es árbol
	var material4:BitmapAssetMaterial = new BitmapAssetMaterial("arbol");
	//Material del tipo ColorMaterial, de color azul. Simplemente especificamos de que color se tiene 
	//que rellenar la cara
	var material5:ColorMaterial = new ColorMaterial(0x0000FF);
	//Material del tipo BitmapFileMaterial, con una imagen externa. Indicamos
	//La ruta de la imagen
	var material6:BitmapFileMaterial = new BitmapFileMaterial("cielo.jpg");
	//Creo la lista de materiales para el cubo, indicando que material va en cada cara
	listaMateriales.addMaterial(material1,"top");
	listaMateriales.addMaterial(material2,"bottom");
	listaMateriales.addMaterial(material3,"front");
	listaMateriales.addMaterial(material4,"back");
	listaMateriales.addMaterial(material5,"left");
	listaMateriales.addMaterial(material6,"right");
}
 
//Crear el cubo
function CrearCubo(){
	//Creo el Cubo
	cubo = new Cube( listaMateriales, 128, 128, 128, 2, 2, 2);
	// rotate the cube a bit
	cubo.rotationX = 35;
	cubo.rotationY = 55;
	//Añado el cubo al escenario
	scene.addChild( cubo );
	//Renderizo la escena
	scene.renderCamera( camera );
	addEventListener(Event.ENTER_FRAME,RotarCubo);
}
 
//Función para rotar el cubo. Al acabar de rotar renderizo la escena para que
//se visualicen los cambios
function RotarCubo(e:Event){
	trace("Aqui");
	cubo.rotationX+=3;
	cubo.rotationY++;
	cubo.rotationZ++;
 
	scene.renderCamera(camera);
}
 
//Ejecutamos
Empezar();

Comentarios:
milenka guadalupe pared dijo:
me gustaria que me mostraran una foto de algo material qua este hecho de los tipos de materiales que son los siguientes:metalicos, ceramicos, y polimeros
Marina dijo:
Es probable que lo que estoy preguntando sea una tontería, pero el caso es que no sé cómo hacerlo. Todo el listado este que escribís aquí para la creación del modelo, dónde hay que copiarlo?
Mara dijo:
Me da un error 1067: Conversión implícita de un valor de tipo org.papervision3d.materials:MaterialsList a un tipo org.papervision3d.core.proto:MaterialObject3D no relacionado. en esta línea..... cubo = new Cube( listaMateriales, 128, 128, 128, 2, 2, 2); Ayuda plis necesito éste cubo en as3 !!!
Dejar un comentario:
Tu nombre (obligatorio):

E-mail (obligatorio, no se mostrará):

Web: