Dando continuidade, dessa vez veremos como aplicar materiais em objetos primitivos utilizando a classe ColorMaterial.
Vamos continuar utilizando os mesmos arquivos Tutorial1.as e Tutorial1.fla do artigo anterior.
Vamos aproveitar para adicionar outro objeto a cena :
import org.papervision3d.objects.primitives.Plane;
E basicamente acrescentar as classes necessárias :
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.materials.utils.MaterialsList;
Declaramos as variáveis :
public var plano:Plane;
public var materialUm:ColorMaterial;
public var materialDois:ColorMaterial;
Atenção aqui : você precisa acionar a função de materiais antes de chamar os objetos
public function Tutorial1 () {
Set ();
Materiais ();
Objetos ();
Listeners ();
}
Criamos os materiais :
public function Materiais ():void {
materialUm = new ColorMaterial(0XFF0000, 1);materialDois = new ColorMaterial(0X00FF00, 1);
materialDois.doubleSided=true;// aplica o material nas duas faces do plano ( experimente trocar por false )
}
E aplicamos os materiais nos objetos :
public function Objetos ():void {
esfera = new Sphere(materialUm, 100, 18, 18);
esfera.x -= stage.stageWidth/2;
esfera.y=0;
esfera.z=0;
esfera.rotationX = 15;
esfera.rotationY = 25;
esfera.rotationZ = -75;
cena.addChild (esfera);plano = new Plane(materialDois, 200, 200, 0, 0);
plano.x += stage.stageWidth/2;
plano.y=0;
plano.z=0;
plano.rotationX = 35;
plano.rotationY = 15;
plano.rotationZ = 45;
cena.addChild (plano);
}
Temos então o código completo :
package {
// Importamos as classes necessárias
// Flash AS3
import flash.display.Sprite;
import flash.events.Event;
// Papervision
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;
import org.papervision3d.cameras.FreeCamera3D;
import org.papervision3d.render.BasicRenderEngine;
// objeto
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.objects.primitives.Plane;
// materiais
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.materials.utils.MaterialsList;// Declaramos nossa classe
public class Tutorial1 extends Sprite {
// e as variáveis
public var cena:Scene3D;
public var viewport:Viewport3D;
public var camera:FreeCamera3D;
public var renderer:BasicRenderEngine;
public var esfera:Sphere;
public var plano:Plane;
public var materialUm:ColorMaterial;
public var materialDois:ColorMaterial;// Declaramos o método da classe
public function Tutorial1 () {
// que irá acionar as funções auxiliares
Set ();
Materiais ();
Objetos ();
Listeners ();
}// funções básicas do Papervision
public function Set ():void {
cena = new Scene3D();
viewport = new Viewport3D(stage.stageWidth, stage.stageHeight, true, false, true, true);
addChild (viewport);
camera = new FreeCamera3D();
renderer = new BasicRenderEngine();
}// materiais
public function Materiais ():void {
materialUm = new ColorMaterial(0XFF0000, 1);materialDois = new ColorMaterial(0X00FF00, 1);
materialDois.doubleSided=true;// aplica o material nas duas faces do plano ( experimente trocar por false )
}// função que irá criar o objeto
public function Objetos ():void {
esfera = new Sphere(materialUm, 100, 18, 18);
esfera.x -= stage.stageWidth/2;
esfera.y=0;
esfera.z=0;
esfera.rotationX = 15;
esfera.rotationY = 25;
esfera.rotationZ = -75;
cena.addChild (esfera);plano = new Plane(materialDois, 200, 200, 0, 0);
plano.x += stage.stageWidth/2;
plano.y=0;
plano.z=0;
plano.rotationX = 35;
plano.rotationY = 15;
plano.rotationZ = 45;
cena.addChild (plano);// alterando alguns parâmetros na câmera
camera.focus = 300;
camera.zoom = 2;
}// função que irá receber novas funções auxiliares
public function Listeners ():void {
addEventListener (Event.ENTER_FRAME, Render);
}// função responsável pela renderização do Papervision
public function Render (e:Event):void {
// algumas propriedades básicas de movimento de objetos
esfera.rotationX -= 2;plano.rotationX += 1;
plano.rotationY += 2;renderer.renderScene (cena, camera, viewport);
}
}
}
Salve o arquivo Tutorial1.as e compile o swf.
Faça alterações nos parâmetros e veja as alterações.
Até a próxima …
