« Return to Thread: Problem with collada objects

Problem with collada objects

by Fausto Sgobba :: Rate this Message:

Reply to Author | View in Thread

Hi everyone.

First of all, I am new to Papervision and I just got the sources from
svn. I found different links for the svn repository:

http://svn1.cvsdude.com/osflash/papervision3d
http://papervision3d.googlecode.com/svn/trunk

The second one contains many dirs that seem to be the good one for my classpaths:

as3\trunk\src\
branches\Effects\src\
branches\GreatWhite\src\

I'm a bit confused... :(

Now I'm using the "branches\GreatWhite\src\" classpath, which seems to work for simple tests. I've been able to create a sphere with a collada object as a child, but I can't figure out how to make the collada interactive to mouse click.

Look at the following code...



package  {
   
    import flash.display.InteractiveObject;
    import flash.events.MouseEvent;
    import flash.filters.GlowFilter;
    import org.papervision3d.events.FileLoadEvent;
    import org.papervision3d.events.InteractiveScene3DEvent;
    import org.papervision3d.materials.BitmapFileMaterial;
    import org.papervision3d.objects.primitives.Cone;
    import org.papervision3d.objects.primitives.Sphere;
    import org.papervision3d.objects.DisplayObject3D;
    import org.papervision3d.objects.parsers.Collada;

    public class Main extends PaperBase {
       
        // vars
        public var cone:Cone = new Cone();
        public var sphere:Sphere = new Sphere(
            new BitmapFileMaterial("library/earth2.jpg"),
            200,
            30,
            30
        );
        public var cow:DisplayObject3D;
       
        // const
       
        // events
       
        // getter setter
       
        // constructor
        public function Main() {
            init();
        }
       
        // public
       
        // override
        override protected function init3d():void {

            sphere.scale = 1; // Make the cone bigger
            default_scene.addChild(sphere); // Add it to the scene
           
            viewport.filters = [new GlowFilter(0x000000, 1, 10, 10, 4, 5)];
           
            sphere.material.smooth = true;
           
            sphere.scaleY = .93;
            sphere.pitch( -15);
           
            default_camera.zoom = 12;
           
            __createCow();
           
        }
       
        private function __createCow():void {
            cow = new
Collada("http://papervision2.com/wp-content/downloads/dae/cow.dae");
            cow.scale = .2;
            cow.x = 128;
            cow.y = 153;
            cow.lookAt(sphere);
            cow.addEventListener(FileLoadEvent.COLLADA_MATERIALS_DONE,
__cowLoaded);
            cow.pitch(-90);
            sphere.addChild(cow);
        }
       
        private function __cowLoaded(evt:FileLoadEvent):void {

            trace( "Main.__cowLoaded > evt : " + evt.target );

           
        }
       
        private function __cowClicked(evt:InteractiveScene3DEvent):void {
            trace( "Main.__cowClicked > evt : " + evt.target );
            cow.scale *= 1.5;
        }

        override protected function processFrame():void {
            //cone.yaw(5); // Rotate it a bit
           
            ///* sphere rotation
            var _newYaw:Number = (stage.mouseX - (stage.width / 2)) / 20;
            sphere.yaw(_newYaw); // Rotate it a bit
            //*/

        }
       
        // private
       
    }
   
}

package  {
   
    // These lines make differant 'pieces' available in your code.
    import flash.display.Sprite; // To extend this class
    import flash.events.Event; // To work out when a frame is entered.
   
    import org.papervision3d.view.Viewport3D; // We need a viewport
    import org.papervision3d.cameras.*; // Import all types of camera
    import org.papervision3d.scenes.Scene3D; // We'll need at least one
scene
    import org.papervision3d.render.BasicRenderEngine; // And we need a
renderer
   
    public class PaperBase extends Sprite { //Must be "extends Sprite"
     
       public var viewport:Viewport3D; // The Viewport
       public var renderer:BasicRenderEngine; // Rendering engine
       // -- Scenes -- //
       public var default_scene:Scene3D; // A Scene
       // -- Cameras --//
       public var default_camera:Camera3D; // A Camera
     
       public function init(vpWidth:Number = 800, vpHeight:Number =
600):void {
         initPapervision(vpWidth, vpHeight); // Initialise papervision
         init3d(); // Initialise the 3d stuff..
         init2d(); // Initialise the interface..
         initEvents(); // Set up any event listeners..
       }
     
       protected function initPapervision(vpWidth:Number,
vpHeight:Number):void {
         // Here is where we initialise everything we need to
         // render a papervision scene.
         viewport = new Viewport3D(vpWidth, vpHeight, false, true);
         // The viewport is the object added to the flash scene.
         // You 'look at' the papervision scene through the viewport
         // window, which is placed on the flash stage.
         addChild(viewport); // Add the viewport to the stage.
         // Initialise the rendering engine.
         renderer = new BasicRenderEngine();
         // -- Initialise the Scenes -- //
         default_scene = new Scene3D();
         // -- Initialise the Cameras -- //
         default_camera = new Camera3D(); // The argument passed to the
camera
         // is the object that it should look at. I've passed the scene
object
         // so that the camera is always pointing at the centre of the
scene.
       }
     
       protected function init3d():void {
         // This function should hold all of the stages needed
         // to initialise everything used for papervision.
         // Models, materials, cameras etc.
       }
     
       protected function init2d():void {
         // This function should create all of the 2d items
         // that will be overlayed on your papervision project.
         // User interfaces, Heads up displays etc.
       }
     
       protected function initEvents():void {
         // This function makes the onFrame function get called for
         // every frame.
         addEventListener(Event.ENTER_FRAME, onEnterFrame);
         // This line of code makes the onEnterFrame function get
         // called when every frame is entered.
       }
     
       protected function processFrame():void {
         // Process any movement or animation here.
       }
     
       protected function onEnterFrame( ThisEvent:Event ):void {
         //We need to render the scene and update anything here.
         processFrame();
         renderer.renderScene(default_scene, default_camera, viewport);
       }
     
    }
   
}

_______________________________________________
Papervision3D mailing list
Papervision3D@...
http://osflash.org/mailman/listinfo/papervision3d_osflash.org

 « Return to Thread: Problem with collada objects