Bom, o Papervision não é tão simples de usar quanto o caurina, para programarmos em Pv3d precisamos seguir algumas regras, e funções iniciais, é isto que vou mostrar neste post.
Vou disponibilizar uma classe que poderá ser usada em todos os projetos. utilizada como import, ou na própria timeline ( menos indicado ).
Bom, vou escrever aqui a classe:
package{ import flash.display.Sprite; import flash.events.Event; import org.papervision3d.cameras.Camera3D; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.view.Viewport3D; public class pv3d_base extends Sprite{ public var viewport:Viewport3D// O Viewport public var render:BasicRenderEngine// A engine para renderizar ou Rendering Engine public var default_scene:Scene3D// Uma Scene public var default_camera:Camera3D// Um Câmera public function pv3d_base(){ } public function init(largura:Number, altura:Number):void { initPapervision(largura, altura);// Inicializa o papervision init3d();// Inicializa objetos 3d initEvents();// Seta qualquer event listeners.. } protected function initPapervision(largura:Number, altura:Number):void { viewport = new Viewport3D(largura, altura, false, true) // adiciona o viewport addChild(viewport)// Adiciona o viewport no stage... render = new BasicRenderEngine() // inicia o render default_scene = new Scene3D(); default_camera = new Camera3D();// foco da camera } protected function init3d():void { //conteudo da cena } protected function initEvents():void { addEventListener(Event.ENTER_FRAME, onEnterFrame); } protected function processa():void { // roda as animações } protected function onEnterFrame( ThisEvent:Event ):void { //renderiza e chama a fucnao processa processa() render.renderScene(default_scene, default_camera, viewport) } } }
Bom.. como fazer isso funcionar??
É bem simples, no flash é só criar um arquivo .as, colar este código e salvar como pv3d_base. Lemdrando que o nome não pode ser diferente, pois dentro da classe temos este nome definido. outra coisa importante é não retirar o ‘extends Sprite’ pois utilizamos ele.
Observações: a função init é publica, ela será chamada de outra classe para ser inicada, com largura e altura desejada para o viewport.
Está classe será estática, não mexeremos mais nela por enquanto, só em projetos mais pra frente.
baixe aqui a classe.
baixe aqui o zip com o fonte.
No próximo post estarei explicando como utilizar esta classe para criar sua primeira cena em Papervision.
Qualquer duvida deixa um comentário que eu tento ajudar…
[...] anterior, neste mostrarei como criar e mostrar um cubo rodando na cena em papervision. Utilizando a classe base mostrada no artigo anterior. Ela por si apenas “prepara o terreno”, agora precisamos [...]