may be update before render...

Note that the update method was experimental and hasn't been tested very much
(very far down on my todo list)
if the tip above doesn't help, try rotate the cube 45,45, before declare the simpleshadow instance this way the plane will have the largest possible area and would not need a resizing for both map and plane

Fabrice

On Dec 18, 2009, at 12:33 PM, Ghislain Flandin wrote:

Hello !!

I'm again here about SimpleShadow ...

I want to add a simple shadow on a cube but i have a rendering
problem ...

My  shadow is truncated :

package
       {
       import away3d.containers.ObjectContainer3D;
       import away3d.containers.View3D;
       import away3d.core.base.Vertex;
       import away3d.core.math.Number3D;
       import away3d.geom.Explode;
                import away3d.geom.Mirror;
                import away3d.materials.ColorMaterial;
                import away3d.materials.utils.SimpleShadow;
                import away3d.primitives.Cube;
       import away3d.primitives.Plane;
                import away3d.primitives.ReflectivePlane;
       import away3d.primitives.Sphere;
                import flash.display.Bitmap;
                import flash.display.BitmapData;
       import flash.display.BlendMode;
       import flash.display.Sprite;
                import flash.display.StageAlign;
                import flash.display.StageScaleMode;
       import flash.events.Event;
       import flash.filters.BitmapFilterQuality;
       import flash.filters.BlurFilter;
                import flash.geom.Matrix;
                import flash.geom.Rectangle;
       import flash.text.TextField;

       /**
        * ...
        * @author Ghislain Flandin
        */
       public class Main extends View3D
                        {
                        private var cube:Cube;
                        private var rP:ReflectivePlane;
                        private var ss:SimpleShadow;

                        public function Main():void
                                {
                                if (stage) init();
                                else addEventListener(Event.ADDED_TO_STAGE, 
init);
                                }

                        private function init(e:Event = null):void
                                {
                                this.stage.scaleMode = StageScaleMode.NO_SCALE;
                                this.stage.align = StageAlign.TOP_LEFT;

                                removeEventListener(Event.ADDED_TO_STAGE, init);

                                x = this.stage.stageWidth / 2;
                                y = this.stage.stageHeight / 2;

                                camera.z = -900;
                                camera.y = 100;

                                cube = new Cube();
                                scene.addChild(cube);

                                addReflection();
                                addEventListener(Event.ENTER_FRAME, enterFrame, 
false, 0, true);
                                }

                        private function addReflection():void
                                {
                                ss = new SimpleShadow(cube, 0x33666666, 
5,-200,800)
                                ss.apply(scene);
                                }

                        private function enterFrame(e:Event):void
                                {
                                var diffX:Number = (this.stage.mouseX - 
Math.round
(this.stage.stageWidth / 2)) / Math.round(this.stage.stageWidth / 2);
                                var diffY:Number = (this.stage.mouseY - 
Math.round
(this.stage.stageHeight/ 2)) / Math.round(this.stage.stageHeight / 2);

                                cube.rotationX = -diffY * 270;
                                cube.rotationY = diffX * 180;

                                render();
                                ss.update();
                                }
                        }
       }

is there a way to avoid it ?

Thanks for your help !

Ghislain

Reply via email to