Les dejo el codigo, lo raro es que el material lo carga bien, pero no se ve afectado por ninguna luz...
Código ActionScript :
package{ /// import jespana.papervision3d.PaperBase; /// import flash.events.KeyboardEvent; import flash.events.MouseEvent; /// import flash.text.*; /// import org.papervision3d.cameras.Camera3D; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.materials.BitmapFileMaterial; import org.papervision3d.objects.parsers.Collada; import org.papervision3d.materials.utils.MaterialsList; /// import org.papervision3d.events.FileLoadEvent; /// import org.papervision3d.lights.PointLight3D; import org.papervision3d.materials.shaders.*; import org.papervision3d.materials.shadematerials.*; /// [SWF(width="800", height="600", frameRate="30", backgroundColor="#FFFFFF")] /// public class plano_collada extends PaperBase{ /// public var camera:Camera3D; private var collada:Collada; private var bitmapFileMaterial:BitmapFileMaterial; private var gouraud:GouraudMaterial; private var light:PointLight3D; /// // Key movement /// public var wdown:Boolean = false; public var adown:Boolean = false; public var sdown:Boolean = false; public var ddown:Boolean = false; /// // Mouse movement /// private var cameraPitch:Number = 90; private var cameraYaw:Number = 270; private var isOrbiting:Boolean = false; private var previousMouseX:Number; private var previousMouseY:Number; /// // Preloader /// public var txt:TextField = new TextField(); /// public function plano_collada(){ /// init(); addCollada(); /// // Key movement /// stage.addEventListener(KeyboardEvent.KEY_DOWN, pressKey); stage.addEventListener(KeyboardEvent.KEY_UP, releaseKey); /// // Mouse movement /// stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseClick); stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoving); stage.addEventListener(MouseEvent.MOUSE_UP, mouseRelease); stage.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheel); } /*----------------------- KEY MOVEMENT -----------------------*/ /*----------------------- KEY MOVEMENT -----------------------*/ /*----------------------- KEY MOVEMENT -----------------------*/ /*----------------------- KEY MOVEMENT -----------------------*/ /*----------------------- KEY MOVEMENT -----------------------*/ /*----------------------- KEY MOVEMENT -----------------------*/ public function pressKey(event:KeyboardEvent):void{ /// // Keyboard codes // W: 87 // A: 65 // S: 83 // D: 68 /// switch(event.keyCode){ case 87: wdown = true; break; case 65: adown = true; break; case 83: sdown = true; break; case 68: ddown = true; break; } } /// public function releaseKey(event:KeyboardEvent):void{ /// switch(event.keyCode){ case 87: wdown = false; break; case 65: adown = false; break; case 83: sdown = false; break; case 68: ddown = false; break; } } /*----------------------- MOUSE MOVEMENT -----------------------*/ /*----------------------- MOUSE MOVEMENT -----------------------*/ /*----------------------- MOUSE MOVEMENT -----------------------*/ /*----------------------- MOUSE MOVEMENT -----------------------*/ /*----------------------- MOUSE MOVEMENT -----------------------*/ /*----------------------- MOUSE MOVEMENT -----------------------*/ private function mouseWheel(event:MouseEvent):void{ /// camera.moveForward(10 * event.delta); } private function mouseClick(event:MouseEvent):void{ /// isOrbiting = true; previousMouseX = event.stageX; previousMouseY = event.stageY; } private function mouseRelease(event:MouseEvent):void{ /// isOrbiting = false; } private function mouseMoving(event:MouseEvent):void{ /// var differenceX:Number = event.stageX - previousMouseX; var differenceY:Number = event.stageY - previousMouseY; /// if(isOrbiting){ /// cameraPitch += differenceY; cameraYaw += differenceX; /// cameraPitch %= 360; cameraYaw %= 360; /// cameraPitch = cameraPitch > 0 ? cameraPitch : 0.0001; cameraPitch = cameraPitch < 90 ? cameraPitch : 89.9999; /// previousMouseX = event.stageX; previousMouseY = event.stageY; /// camera.orbit(cameraPitch, cameraYaw); light.position = camera.position; } } /*----------------------- START SCENE -----------------------*/ /*----------------------- START SCENE -----------------------*/ /*----------------------- START SCENE -----------------------*/ /*----------------------- START SCENE -----------------------*/ /*----------------------- START SCENE -----------------------*/ /*----------------------- START SCENE -----------------------*/ override protected function init2d():void{ /// var font:myFont = new myFont(); /// var txt_fmt:TextFormat = new TextFormat(); txt_fmt.font = font.fontName; txt_fmt.size = 24; /// txt.autoSize = TextFieldAutoSize.CENTER; txt.defaultTextFormat = txt_fmt; txt.embedFonts = true; txt.text = "CARGADO 0%"; txt.x = 10; txt.y = 10; ///txt.rotation = 45; txt.selectable = false; /// addChild(txt); } override protected function init3d():void{ /// // Initiate 3d /// camera = new Camera3D(); camera.zoom = 1; camera.focus = 500; camera.moveUp(400); current_camera = camera; /// for(var x:Number=0; x<4; x++){ /// for(var y:Number=0; y<4; y++){ /// var p:Plane = new Plane(new BitmapFileMaterial("assets/plano.jpg"), 1000, 1000, 1, 1); /// p.pitch(90); p.x = (x * 1000)-2000; p.z = (y * 1000)-2000; /// default_scene.addChild(p); } } } /*----------------------- CREATE & ADD COLLADA -----------------------*/ /*----------------------- CREATE & ADD COLLADA -----------------------*/ /*----------------------- CREATE & ADD COLLADA -----------------------*/ /*----------------------- CREATE & ADD COLLADA -----------------------*/ /*----------------------- CREATE & ADD COLLADA -----------------------*/ /*----------------------- CREATE & ADD COLLADA -----------------------*/ private function addCollada():void{ /// light = new PointLight3D(true); //light.z = -800; //light.y = 300; /// var shader:GouraudShader = new GouraudShader(light,0xffffff,0x222222); var shadeMat:ShadedMaterial = new ShadedMaterial(new BitmapFileMaterial("assets/Rectangle2CompleteMap.png"),shader); /// var materialsList:MaterialsList = new MaterialsList(); materialsList.addMaterial(shadeMat,"baked_wire_028028177"); /// collada = new Collada("assets/skate.dae", materialsList); /// collada.addEventListener(FileLoadEvent.LOAD_COMPLETE, onComplete); collada.addEventListener(FileLoadEvent.LOAD_PROGRESS, onProgress); /// default_scene.addChild(collada); /// collada.x -= 500; collada.y -= 3500; collada.z -= 4750; } /*----------------------- COLLADA EVENTS -----------------------*/ /*----------------------- COLLADA EVENTS -----------------------*/ /*----------------------- COLLADA EVENTS -----------------------*/ /*----------------------- COLLADA EVENTS -----------------------*/ /*----------------------- COLLADA EVENTS -----------------------*/ /*----------------------- COLLADA EVENTS -----------------------*/ private function onComplete(event:FileLoadEvent):void{ /// txt.text = "CARGADO 100%"; } private function onProgress(event:FileLoadEvent):void{ /// txt.text = "CARGADO " + Math.round((event.bytesLoaded / event.bytesTotal) * 100) + "%"; } /*----------------------- onEnterFrame FUNCTION ADDS -----------------------*/ /*----------------------- onEnterFrame FUNCTION ADDS -----------------------*/ /*----------------------- onEnterFrame FUNCTION ADDS -----------------------*/ /*----------------------- onEnterFrame FUNCTION ADDS -----------------------*/ /*----------------------- onEnterFrame FUNCTION ADDS -----------------------*/ /*----------------------- onEnterFrame FUNCTION ADDS -----------------------*/ override protected function processFrame():void{ /// // Process Frame Here /// if(wdown){camera.moveForward(60);} /// if(sdown){camera.moveBackward(60);} /// if(adown){camera.yaw(-8);} /// if(ddown){camera.yaw(8);} } } }
El archivo PaperBase.as que se carga es el siguiente (modelo para hacer los pv3d):
Código ActionScript :
package jespana.papervision3d{ /// import flash.display.Sprite; import flash.events.Event; /// import org.papervision3d.core.proto.CameraObject3D; import org.papervision3d.view.Viewport3D; import org.papervision3d.cameras.*; import org.papervision3d.scenes.Scene3D; import org.papervision3d.render.BasicRenderEngine; /// public class PaperBase extends Sprite{ /// public var viewport:Viewport3D; public var renderer:BasicRenderEngine; /// public var current_scene:Scene3D; public var current_camera:CameraObject3D; public var current_viewport:Viewport3D; /// public var default_scene:Scene3D; // La escena /// public var default_camera:Camera3D; // La camara /// public function init(vpWidth:Number = 800, vpHeight:Number = 600):void{ /// initPapervision(vpWidth, vpHeight); // Inicializo el Papervision3D /// init3d(); // Inicializo el mundo 3D init2d(); // Inicializo el mundo 2D /// initEvents(); } /// protected function initPapervision(vpWidth:Number, vpHeight:Number):void{ /// if(vpWidth == 0){ /// viewport = new Viewport3D(stage.width, stage.height, true, true); } else{ /// viewport = new Viewport3D(vpWidth, vpHeight, false, true); } /// addChild(viewport); // Agrego el Viewport al Stage (sino no veo nada) /// // Inicializo todo /// renderer = new BasicRenderEngine(); default_scene = new Scene3D(); default_camera = new Camera3D(); /// current_camera = default_camera; current_scene = default_scene; current_viewport = viewport; } /// protected function init3d():void { /// } /// protected function init2d():void { /// } /// protected function initEvents():void { /// addEventListener(Event.ENTER_FRAME, onEnterFrame); } /// protected function processFrame():void { /// } /// protected function onEnterFrame( ThisEvent:Event ):void { /// processFrame(); renderer.renderScene(current_scene, current_camera, current_viewport); } } }
Si quieren bajar y mirar los archivos lo pueden hacer desde este vinculo:
http://www.javierespana.com/uploads/test_14.zip
http://www.javierespana.com/uploads/PaperBase.as
Muchas gracias por la ayuda, me tiene trabado este tema y no quiero seguir teniendo agujeros en el medio...
Saludos,
Javier