Hello everyone,

I've got a problem with the CubicEnvMapPBMaterial, i tried everything
and it didn't worked. I hope you'll help me ^^

I tested it on a simple cube in a skybox, with some basic
interactivity with the camera, all the bitmap pictures are imported in
the .fla

I work with Flash CS5 and Flash Develop.
Here's the error message :

ArgumentError: Error #2004: L'un des paramètres n'est pas valide.
        at flash.display::ShaderJob/start()
        at SinglePassShaderMaterial/updateRenderBitmap()
        at away3d.materials::TransformBitmapMaterial/updateMaterial()
        at PixelShaderMaterial/updateMaterial()
        at away3d.core.base::Mesh/updateMesh()
        at away3d.core.traverse::ProjectionTraverser/apply()
        at away3d.core.base::Object3D/traverse()
        at away3d.containers::ObjectContainer3D/traverse()
        at away3d.containers::View3D/render()
        at test_Cube()

Here's my code :

package
{
        import away3d.cameras.HoverCamera3D;
        import away3d.containers.Scene3D;
        import away3d.containers.View3D;
        import away3d.core.base.Mesh;
        import away3d.core.utils.Cast;
        import away3d.events.MouseEvent3D ;
        import away3d.lights.DirectionalLight3D;
        import away3d.materials.BitmapMaterial;
        import away3d.materials.CubicEnvMapPBMaterial;
        import away3d.primitives.Cube;
        import away3d.primitives.Skybox;
        import away3d.primitives.utils.CubeFaces;

        import flash.display.Bitmap;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.MouseEvent;
        import flash.geom.Vector3D;

        public class test_Cube extends Sprite
        {
                var View:View3D = new View3D({x:275,y:200});
                var camera:HoverCamera3D;
                var light:DirectionalLight3D;
                var lastMouseX:Number;
                var lastMouseY:Number;
                var lastPanAngle:Number;
                var lastTiltAngle:Number;
                var move:Boolean = false;

                public var currentPrimitive:Mesh;
                var skyBox:Skybox;

                var ciel:Ciel = new Ciel();
                var cielNormal:CielNormal = new CielNormal();
                var cielNormal2:CielNormal2 = new CielNormal2();
                var orRose:OrRose = new OrRose();

                var upBitmap:Up = new Up();
                var downBitmap:Down = new Down();
                var eastBitmap:East = new East();
                var westBitmap:West = new West();
                var northBitmap:North = new North();
                var southBitmap:South = new South();

                var upMaterial:BitmapMaterial = null;
                var downMaterial:BitmapMaterial = null;
                var eastMaterial:BitmapMaterial = null;
                var westMaterial:BitmapMaterial = null;
                var northMaterial:BitmapMaterial = null;
                var southMaterial:BitmapMaterial = null;

                public function test_Cube():void
                {
                        //Définition caméra et scene 3D
                        camera = new HoverCamera3D({zoom:2, focus:100, 
distance:200});
                        View = new View3D( { camera:camera, x:250, y:200 } );
                        addChild(View);
                        camera.panAngle = 90;
                        camera.tiltAngle = 0;
                        camera.minTiltAngle = -90;
                        camera.hover(true);

                        //Définition lumière
                        light = new DirectionalLight3D( { direction:new 
Vector3D(500, -300,
-200), specular:0.3, color:"#FFC1B2" } );
                        View.scene.addLight(light);

                        //Définition des matériaux
                        upMaterial = new BitmapMaterial(Cast.bitmap(upBitmap),
{smooth:true});
                        downMaterial = new 
BitmapMaterial(Cast.bitmap(downBitmap),
{smooth:true});
                        eastMaterial = new 
BitmapMaterial(Cast.bitmap(eastBitmap),
{smooth:true});
                        westMaterial = new 
BitmapMaterial(Cast.bitmap(westBitmap),
{smooth:true});
                        northMaterial = new 
BitmapMaterial(Cast.bitmap(northBitmap),
{smooth:true});
                        southMaterial = new 
BitmapMaterial(Cast.bitmap(southBitmap),
{smooth:true});

                        //Définition éléments 3D
                        currentPrimitive = new Cube( { width:200, height:200, 
depth:200} );
                        skyBox = new Skybox(northMaterial, westMaterial, 
southMaterial,
eastMaterial, upMaterial, downMaterial);

                        //Définition du matériau
                        var sky:Array = [];
                        sky[CubeFaces.LEFT] = westBitmap;
                        sky[CubeFaces.RIGHT] = eastBitmap;
                        sky[CubeFaces.FRONT] = northBitmap;
                        sky[CubeFaces.TOP] = upBitmap;
                        sky[CubeFaces.BOTTOM] = downBitmap;
                        sky[CubeFaces.BACK] = southBitmap;

                        var colorMaterial:CubicEnvMapPBMaterial = new
CubicEnvMapPBMaterial(ciel, cielNormal, sky, currentPrimitive,
{envMapAlpha:0.5});
                        currentPrimitive.material = colorMaterial;

                        View.scene.addChild(skyBox);
                        View.scene.addChild(currentPrimitive);
                        stage.quality = "MEDIUM";
                        View.render();

                        //Animation de la souris
                        this.stage.addEventListener(MouseEvent.MOUSE_DOWN, 
MouseDown);
                        this.stage.addEventListener(MouseEvent.MOUSE_UP, 
MouseUp);
                        addEventListener(Event.ENTER_FRAME, animation);
                }

                private function MouseDown(evt:MouseEvent):void
                {
                        lastPanAngle = camera.panAngle;
                        lastTiltAngle = camera.tiltAngle;
                        lastMouseX = stage.mouseX;
                        lastMouseY = stage.mouseY;
                        move = true;
                }

                private function MouseUp(evt:MouseEvent):void
                {
                        move = false;
                }

                private function animation (evt:Event):void
                {
                        //Contrôle de la caméra avec la souris
                        var cameraSpeed:Number = 0.3;
            if (move) {
                camera.panAngle = cameraSpeed*(stage.mouseX -
lastMouseX) + lastPanAngle;
                camera.tiltAngle = cameraSpeed * (stage.mouseY -
lastMouseY) + lastTiltAngle;
            }
            camera.hover();
            View.render();
                }
        }
}


Thank you,

Maho

Reply via email to