« Return to Thread: ShadedMaterials not working with Collada model

ShadedMaterials not working with Collada model

by DanSearle :: Rate this Message:

Reply to Author | View in Thread

Hi list,

If I understand SVN right I'm on revision 918.

I'm using the free version of Google SketchUp (v6.4.112) to make DAE files (using that hack to get the DAE from the KMZ it outputs), but I can't get the ShadedMaterials to work with it.

Here's a demo I've made:
http://www.danwashere.com/dev/papervision/shadedtextures_and_collada_problem/DanWasHereWorld.html
(Mouse Up/Down to move in and out, Mouse Left/Right to move the light source)

The paddling pool is meant to be shaded - the cube uses the same shaded materials as the pool to prove that the materials themselves are ok.

Is it maybe that the DAE created in this way isn't compatible with ShadedMaterials? Here's a link to the DAE file:
http://www.danwashere.com/dev/papervision/shadedtextures_and_collada_problem/paddling%20pond.dae

Or in case it's a code problem, here's the relevant code, or you can also get the AS file here:
http://www.danwashere.com/dev/papervision/shadedtextures_and_collada_problem/DanWasHereWorld.as

(Note that I have the textures in the FLA library)

        public function DanWasHereWorld($mc:MovieClip) {
           
            mc = $mc;
           
            viewport = new Viewport3D(800, 600, true, true, true, true);
            mc.addChild(viewport);
           
            camera = new Camera3D(standardViewCameraFOV, 10, 5000, true);
            camera.x = standardViewCameraX;
            camera.y = standardViewCameraY;
            camera.z = standardViewCameraZ;
            camera.zoom = standardViewCameraZoom;
           
            renderer = new BasicRenderEngine();
            mc.addChild(viewport);

            scene = new Scene3D();
           
            light = new PointLight3D();
            scene.addChild(light);
            light.x = 0;
            light.y = 400;
            light.z = -100;
            light.showLight = true;
           
            var textureBottomRing:Class = ApplicationDomain.currentDomain.getDefinition("Texture_bottomring") as Class;
            var textureMidRing:Class = ApplicationDomain.currentDomain.getDefinition("Texture_midring") as Class;
            var textureTopRing:Class = ApplicationDomain.currentDomain.getDefinition("Texture_topring") as Class;
            var textureWater:Class = ApplicationDomain.currentDomain.getDefinition("Texture_water") as Class;
            var textureExtra1:Class = ApplicationDomain.currentDomain.getDefinition("Texture_extra_1") as Class;
            var textureExtra2:Class = ApplicationDomain.currentDomain.getDefinition("Texture_extra_2") as Class;
           
            // Not in a logical order here because that's how they came out in the Collada DAE file.
            mcTexture0 = new textureWater();
            mcTexture1 = new textureBottomRing();
            mcTexture2 = new textureTopRing();
            mcTexture3 = new textureMidRing();
           
            // Two extra textures to show the text cube.
            mcTexture4 = new textureExtra1();
            mcTexture5 = new textureExtra2();
           
            movieMaterial0 = new MovieMaterial(mcTexture0, false, true, false);
            movieMaterial1 = new MovieMaterial(mcTexture1, false, false, false);
            movieMaterial2 = new MovieMaterial(mcTexture2, false, false, false);
            movieMaterial3 = new MovieMaterial(mcTexture3, false, false, false);
            movieMaterial4 = new MovieMaterial(mcTexture4, false, false, false);
            movieMaterial5 = new MovieMaterial(mcTexture5, false, false, false);
           
            movieMaterial0.precise = true;
           
            movieMaterial0.doubleSided = false;
            movieMaterial1.doubleSided = false;
            movieMaterial2.doubleSided = false;
            movieMaterial3.doubleSided = false;
            movieMaterial4.doubleSided = false;
            movieMaterial5.doubleSided = false;
           
                       
            shadedMaterial0 = new ShadedMaterial(movieMaterial0, new FlatShader(light, 0xFFFFFF, 0x555555));
            shadedMaterial1 = new ShadedMaterial(movieMaterial1, new FlatShader(light, 0xFFFFFF, 0x555555));
            shadedMaterial2 = new ShadedMaterial(movieMaterial2, new FlatShader(light, 0xFFFFFF, 0x555555));
            shadedMaterial3 = new ShadedMaterial(movieMaterial3, new FlatShader(light, 0xFFFFFF, 0x555555));
            shadedMaterial4 = new ShadedMaterial(movieMaterial4, new FlatShader(light, 0xFFFFFF, 0x555555));
            shadedMaterial5 = new ShadedMaterial(movieMaterial5, new FlatShader(light, 0xFFFFFF, 0x555555));
           
           
            var mat:MaterialsList = new MaterialsList();
           
            mat.addMaterial(movieMaterial0,         "material0");
            mat.addMaterial(movieMaterial1,         "material1");
            mat.addMaterial(movieMaterial2,             "material2");
            mat.addMaterial(movieMaterial3,             "material3");
            mat.addMaterial(movieMaterial4,             "material4");
            mat.addMaterial(movieMaterial5,             "material5");
           
            island = new Collada("paddling pond.dae", mat, 0.0005);
            scene.addChild(island);
            island.x = -200;
            island.y = 0;
            island.z = 200;
           
            island.replaceMaterialByName(shadedMaterial0, "material0");
            island.replaceMaterialByName(shadedMaterial1, "material1");
            island.replaceMaterialByName(shadedMaterial2, "material2");
            island.replaceMaterialByName(shadedMaterial3, "material3");
           
            //island.rotationY = -180 + Math.random() * 360;
           
            camera.target = island;
           
            // Set up the cube.
            var matCube:MaterialsList = new MaterialsList();           
            matCube.addMaterial(shadedMaterial0,         "front");
            matCube.addMaterial(shadedMaterial1,         "back");
            matCube.addMaterial(shadedMaterial2,             "right");
            matCube.addMaterial(shadedMaterial3,             "left");
            matCube.addMaterial(shadedMaterial4,             "top");
            matCube.addMaterial(shadedMaterial5,             "bottom");

            testCube = new Cube(matCube, 100, 100, 100, 6, 6, 6);           
            scene.addChild(testCube);
            testCube.x = 0;
            testCube.y = 150;
            testCube.z = 50;

           
            mc.stage.addEventListener(Event.ENTER_FRAME, handleEnterFrame);
        }



I'd love an explanation of how to do this if someone can help?

Many thanks,
Dan



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

 « Return to Thread: ShadedMaterials not working with Collada model