use the Perspective lens.
look at Drag3D class for more mouse projection codes.

Fabrice

On Sep 22, 8:06 am, Bobby <[email protected]> wrote:
> Hi,
>    I am facing a with getting the mouse co-ordinates from the scene.
>
> I will explain the scenario first. I am developing an application
> which involves drawing a 2D floor plan and then developing the 3D
> model. The creation of the 3D model is done using extrusion.
> While the application is almost complete. I am facing a problem/bug in
> creation of 2D floor plan. To the best of my knowledge the bug is
> caused to error I am making in mapping the mouse co-ordinates on the
> screen to 3D space. I read the many discussions in the forum but my
> knowledge of 3D math is limited and I cannot fully follow. The 2D
> floor plan is drawn on X -Y plane. HoverCamera is used. Pan angle is
> 180 and tilt is zero. The camera positions are
>
> _camera.x = -100;
> _camera.y = 100;
> _camera.z = 0;
>
> There is a an offset between the position I am pressing and where the
> lines are appearing. Please do try out the code to see the offset.
>
> My deadline is very near. So please help.
>
> I am pasting the code below:
>
> *************************************************************************** 
> *****************
> package
> {
>     import away3d.cameras.*;
>     import away3d.containers.*;
>
>     import flash.display.*;
>     import flash.events.*;
>
>     public class ExtrusionBaseClass extends Sprite
>     {
>         protected var _view : View3D;
>         protected var _camera : HoverCamera3D;
>
>         public function ExtrusionBaseClass()
>         {
>             _createView();
>             _createScene();
>         }
>
>         protected function _createView() : void
>         {
>             _camera = new HoverCamera3D();
>
>             _camera.tiltAngle = 0;
>             _camera.panAngle = 180;
>
>             _view = new View3D();
>             _view.x = 400;
>             _view.y = 300;
>             _view.camera = _camera;
>
>             addChild(_view);
>             addEventListener(Event.ENTER_FRAME, _onEnterFrame);
>         }
>
>         protected function _createScene() : void
>         {
>
>         }
>
>         protected function _onEnterFrame(ev : Event) : void
>         {
>
>            _camera.hover();
>            _view.render();
>         }
>     }}
>
> *************************************************************************** 
> ******
> package {
>         import away3d.cameras.*;
>         import away3d.containers.*;
>         import away3d.core.base.*;
>         import away3d.core.geom.*;
>         import away3d.core.math.*;
>         import away3d.extrusions.*;
>         import away3d.materials.*;
>         import away3d.primitives.*;
>
>         import flash.display.*;
>         import flash.events.*;
>         import flash.utils.*;
>
>         import wumedia.vector.*;
>
>         public class ExtrusionKitchenProject1 extends ExtrusionBaseClass
>         {
>
>                 private var VerdanaSwf : Class;
>                 private var _xpos:Array = new Array();
>                 private var _ypos:Array = new Array();
>                 private var sides:Number = 1;
>                 private var init:Boolean = true;
>                 private var firstTime:Boolean = true;
>                 private var mesh:Mesh = new Mesh();
>                 private var i:uint=0;
>                 var segment0:Segment = new Segment();
>                 var material:Material = new ColorMaterial(0xfff000);
>                 var material1:WireColorMaterial = new 
> WireColorMaterial(0x123ff0);
>                 var segment1:Segment = new Segment();
>
>                 public function ExtrusionKitchenProject1()
>                 {
>                         super();
>                 }
>
>                 override protected function _createScene() : void
>                 {
>
>                         mesh.bothsides = true;
>                         var material : WireColorMaterial = new 
> WireColorMaterial(0xFF0000);
>                         material.wireColor = 0x000000;
>                         material.thickness = 2;
>                         mesh.material = material;
>                         _view.scene.addChild(mesh);
>
>                         _camera.x = -100;
>                         _camera.y = 100;
>                         _camera.z = 0;
>
>                         segment0.moveTo(-400,100,0);
>                         segment0.lineTo(200, 100,0);
>                         segment0.moveTo(-100,300,0);
>                         segment0.lineTo(-100,-100,0);
>
>                         mesh.addSegment(segment0);
>
>                         stage.addEventListener(MouseEvent.MOUSE_DOWN, 
> onMouseDown);
>
>                 }
>
>                 public function onMouseDown(event:MouseEvent):void {
>
>                         if(firstTime)
>                         {
>
>                                 _xpos[i] = _view.mouseX;
>                                 _ypos[i] = _view.mouseY;
>                                 firstTime = false;
>
>                                 i++;
>
>                         }
>                         else
>                         {
>                                 _xpos[i] = _view.mouseX;
>                                 _ypos[i] = _view.mouseY;
>
>                                 segment1.moveTo(_xpos[i-1],- _ypos[i-1],0);
>                                 segment1.lineTo(_xpos[i],-_ypos[i],0);
>                                 mesh.addSegment(segment1);
>
>                                 i++;
>
>                         }
>
>                 }
>         }
>
>
>
> }

Reply via email to