Jerome, open the link, make the window size 700x600, then resize it to
full monitor size

at 700x600 both squares are aligned more less the same but when you
resize - the plane is the way it should be and the red square gets
crazy

what I want is - I want both squares to be aligned the same no matter
what the window size it

----
I will check it up with ProjectionCenter - this may be it
thanks!

On 30 Sty, 18:59, Jerome <[email protected]> wrote:
> Hi Squ,
>
> If you are using the built in Flash 3D engine to transform your sprite
> in 3D (using the Away3D camera transform) you may need to re-align the
> projectionCenter and tweak other settings like focal length and field
> of 
> viewhttp://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WSCE716DA...
>
> Like Darcey, I am not sure about what you are trying to achieve here.
>
> Cheers,
>
> J.
>
> On Jan 30, 4:29 pm, squ <[email protected]> wrote:
>
>
>
> > ok, I extended the test, the same 
> > link:http://prologis.win.pl/OverlayTest.swf
>
> > the red sprite is a real sprite added as an overlay sprite, a leading
> > object3D is a Plane
>
> > the red sprite uses matrix3D of the camera and the plane
>
> > here is what I am after:
> > --------------------------
> > as long as the size of the view is 700x600 the red sprite covers the
> > plane, but when the size of the view changes something happens to the
> > red sprite
> > it has something to do with the x and y of the view (I eliminated
> > other things)
> > -------------------------
>
> > I had to change the Overlay class a bit, here is the new code:
>
> > package away3d.overlays
> > {
> >         import away3d.cameras.*;
> >         import away3d.core.base.*;
> >         import away3d.containers.View3D;
> >         import away3d.cameras.Camera3D;
> >         import away3d.primitives.*;
>
> >         import flash.geom.*;
> >         import flash.display.*;
> >         import flash.events.*;
>
> >         public class Overlay extends Sprite implements IOverlay
> >         {
>
> >                 private var view:View3D = null;
> >                 private var camera:Camera3D = null;
>
> >                 public var object3D:Plane;
> >                 private var scale:Number;
> >                 private var sourceProjection:Vector3D;
>
> >                 public var overlayMatrix:Matrix3D = new Matrix3D();
> >                 private var flipY:Matrix3D = new Matrix3D();
> >                 private var viewMatrix:Matrix3D = new Matrix3D();
>
> >                 private var overlayContainer:Sprite;
> >                 private var testSprite:Sprite;
> >                 private var viewContainer:Sprite;
>
> >                 public function Overlay(vc:Sprite, v:View3D, c:Camera3D, 
> > init:Object
> > = null) {
> >                         viewContainer = vc;
> >                         view = v;
> >                         camera = c;
> >                         flipY.appendScale(1, -1, 1);
> >                         overlayContainer = new Sprite();
> >                         this.visible = false;
> >                         createTestSprite();
>
> >                 }
>
> >                 private function createTestSprite():void {
> >                         testSprite = new Sprite();
> >                         testSprite.graphics.clear();
> >                         testSprite.graphics.beginFill(0xFF0000, 1);
> >                         testSprite.graphics.lineStyle(3, 0x000000);
> >                         testSprite.graphics.drawRect(-150, -150, 300, 300);
> >                         testSprite.graphics.endFill();
> >                         setNewSettings();
> >                 }
>
> >                 private function setNewSettings():void {
> >                         object3D = new Plane({width:testSprite.width,
> > height:testSprite.height,yUp:false});
> >                         object3D.x = 0;
> >                         object3D.y = 0;
> >                         object3D.z = 400;
>
> >                         view.scene.addChild(object3D);
> >                         this.addChild(testSprite);
> >                         view.addOverlay(this);
> >                 }
>
> >                 public function update():void {
>
> >                         sourceProjection = camera.screen(object3D, new
> > Vertex(object3D.x,object3D.y,object3D.z));
>
> >                         if(!sourceProjection || sourceProjection.z < 0){
> >                                 if(this.visible) this.visible = false;
> >                                 return;
> >                         }
> >                         if(!this.visible) this.visible = true;
>
> >                         scale = 
> > camera.lens.getPerspective(sourceProjection.z);
>
> >                         viewMatrix.identity();
> >                         viewMatrix.rawData = camera.viewMatrix.rawData;
> >                         viewMatrix.prepend(flipY);
>
> >                         overlayMatrix.identity();
> >                         overlayMatrix.prepend(viewMatrix);
> >                         overlayMatrix.append(object3D.sceneTransform);
>
> >                         scale = 
> > camera.lens.getPerspective(sourceProjection.z);
> >                         overlayMatrix.appendScale(scale,scale,1);
>
> >                         overlayMatrix.position = new 
> > Vector3D(sourceProjection.x,
> > sourceProjection.y, 0);
>
> >                         this.transform.matrix3D = overlayMatrix;
>
> >                         //trace(this.parent.x);
>
> >                 }
>
> >         }
>
> > }- Ukryj cytowany tekst -
>
> - Pokaż cytowany tekst -

Reply via email to