Thanks! I had just realized that. Thanks all for your help on this
one. I'm slowly starting to figure this 3d stuff out... :-)

On Jun 15, 4:42 pm, Fabrice3D <[email protected]> wrote:
> too busy on other things right now... but reading at your code...
>
> > Not sure why intersect.y is zero though...
>
> Look at the plane you defined, the location is at 0,0,0, you do test on x,z 
> plane (normal y is 1) , so of course y will allways return you
> the same value at the plane origin, in this case: zero.
>
> You might want take a look at the Drag3D class, as many of the stuff you need 
> is in there.
>
> Fabrice
>
> On Jun 15, 2010, at 10:21 PM, JeffH wrote:
>
>
>
> > I end up with var intersect like:
> > intersect:   x:-244.96517085811377    y:0     z:-492.95774647887356
>
> > If I set _3dObj.z = 0 then it just moves the object in the x axis. Or
> > did you mean set the z to zero somewhere else?
>
> > The code below actually has a small error (_3dObj.z = intersect.y;)
> > instead of (_3dObj.y = intersect.y;) but since intersect.y=0 it didn't
> > affect anything. Not sure why intersect.y is zero though...
>
> > On Jun 15, 3:58 pm, Michael Iv <[email protected]> wrote:
> >> set z value to zero  , I think only then you will get exact view screen
> >> coords. the problem is that when your 3d objects are in a distance from the
> >> camera their position is indeed as you define it after unprojection 2d
> >> coords. But because frustrum volume has a depth and because of perspective
> >> projection the object 3d position relative to the screen changes.So you 
> >> need
> >> to compensate it .
>
> >> On Tue, Jun 15, 2010 at 10:50 PM, JeffH <[email protected]> wrote:
> >>> Just tried using a perspective lens... Seems to work better. Although
> >>> I can't explain why the y value needs to be negative in order to move
> >>> it up. I thought a (10,10) position on the screen would require (-220,
> >>> 140) for a screen and view size of 460x320. If I put in the following
> >>> coordinates the object ends up near the 10,10 stage position:
>
> >>> var ray:Number3D = view.camera.unproject(-220, -140);
> >>> var cameraPosition:Number3D = new Number3D(view.camera.x,
> >>> view.camera.y, view.camera.z);
> >>> ray.add(ray, cameraPosition);
> >>> var p:Plane3D = new Plane3D();
> >>> p.fromNormalAndPoint(new Number3D(0, 1, 0),new Number3D(0, 0, 0));
> >>> var intersect:Number3D = p.getIntersectionLineNumbers(cameraPosition,
> >>> ray);
> >>> _3dObj.x = intersect.x;
> >>> _3dObj.z = intersect.y;
> >>> _3dObj.z = intersect.z;
> >>> view.render();
>
> >>> On Jun 15, 3:10 pm, Michael Iv <[email protected]> wrote:
> >>>> Tried perspective lens with default zoom??
>
> >>>> On Tue, Jun 15, 2010 at 10:07 PM, JeffH <[email protected]> wrote:
> >>>>> So I tried unsuccessfully using unproject like this:
>
> >>>>> Since _2dObj.x = 10; _2dObj.y = 10:
> >>>>> var scenepos:Number3D = view.camera.unproject(10,10); // a point 10
> >>>>> pixels off the top left corner of the stage
> >>>>> _3dObj.moveTo(scenepos.x,scenepos.y,scenepos.z);
>
> >>>>> This gives me the following approximate values (and so didn't move the
> >>>>> 3D object to the upper left):
> >>>>> scenepos.x = 0.2 , scenepos.y = 55 , scenepos.z = 82
>
> >>>>> Is it something to do with my camera settings?:
>
> >>>>> view.camera = new HoverCamera3D({zoom:50});
> >>>>> view.camera.lens = new OrthogonalLens();
> >>>>> view.camera.position = new Number3D(0, -675, -1000);
> >>>>> view.camera.lookAt(new Number3D(0, 0, 0));
>
> >>>>> On Jun 15, 2:21 pm, Michael Iv <[email protected]> wrote:
> >>>>>> I don't have a code for this exact scenario but you can doit this
> >>> way:
> >>>>>> Create a dummy object , any kind of sprite (can be invisible if you
> >>> need)
> >>>>> or
> >>>>>> even generic Point class of flash.Get it to the position of view
> >>> where
> >>>>> you
> >>>>>> want your 3d object to move in 2d . Unproject the 2d coordinates into
> >>> 3d
> >>>>>> space using camera.unproject() . This method returns Number3d that is
> >>>>>> scene3d position of your object Then tween your 3d object to that
> >>>>> position.
> >>>>>> I think that should work for you.
> >>>>>> :)
>
> >>>>>> On Tue, Jun 15, 2010 at 8:09 PM, JeffH <[email protected]> wrote:
> >>>>>>> Hi Michael,
>
> >>>>>>> I really appreciate your help on this. Unfortunately, I feel like
> >>> I'm
> >>>>>>> flying blind. The docs don't indicate what unproject does so I'm
> >>>>>>> unclear how to proceed. What would be really helpful is if you
> >>> could
> >>>>>>> post some code that would accomplish the following:
>
> >>>>>>> Given a stage size of 480x320 and a view that is similar in size
> >>> but
> >>>>>>> centered, move a 3d object from position 0,0,0 to the stage
> >>> position
> >>>>>>> 0,0. That is, move the 3D object from the center of the stage to
> >>> the
> >>>>>>> top left corner. If you could show me how unproject works with this
> >>>>>>> example, that would be great!
>
> >>>>>>> Thanks again.
>
> >>>>>>> On Jun 15, 12:32 pm, Michael Iv <[email protected]> wrote:
> >>>>>>>> Do unproject !
>
> >>>>>>>> Sent from my iPhone
>
> >>>>>>>> On Jun 15, 2010, at 7:08 PM, JeffH <[email protected]> wrote:
>
> >>>>>>>>> I'm looking for:
>
> >>>>>>>>> screenPlace(view.camera, 2Dobject, 3Dobject)
>
> >>>>>>>>> function screenPlace(camera,obj2D,obj3D):void {
> >>>>>>>>>  some code
> >>>>>>>>>  obj3D.x = something
> >>>>>>>>>  obj3D.y = something
> >>>>>>>>> }
>
> >>>>>>>>> Given a 3d object and a 2d location (from the stage), move my
> >>> 3D
> >>>>>>>>> object so that it sits on the 2d object's screen position.
>
> >>>>>>>>> On Jun 15, 11:40 am, Michael Iv <[email protected]> wrote:
> >>>>>>>>>> yes it does , isn't it what you need?
>
> >>>>>>>>>> On Tue, Jun 15, 2010 at 5:36 PM, JeffH <[email protected]>
> >>> wrote:
> >>>>>>>>>>> Sorry, I meant "But isn't this is returning the 3D coords for
> >>> a
> >>>>> 2D
> >>>>>>>>>>> point based on a 3D
> >>>>>>>>>>> objects position?"
>
> >>>>>>>>>>> On Jun 15, 10:35 am, JeffH <[email protected]> wrote:
> >>>>>>>>>>>> But isn't this is returning the 3D coords for a 3D point
> >>> based
> >>>>> on
> >>>>>>>>>>>> a 3D
> >>>>>>>>>>>> objects position? I think I need to do the opposite. Move a
> >>> 3D
> >>>>>>>>>>>> object
> >>>>>>>>>>>> (its z=0 btw) to a 2D point based on an object on the stage.
> >>>>>>>>>>>> Example,
> >>>>>>>>>>>> move my 3D boat to a marker on a river where the marker is a
> >>> 2D
> >>>>>>>>>>>> flash
> >>>>>>>>>>>> object on the stage.
>
> >>>>>>>>>>>> On Jun 15, 10:24 am, Michael Iv <[email protected]>
> >>> wrote:
>
> >>>>>>>>>>>>> You are almost correct but you have got to give an offset
> >>> to
> >>>>> the
> >>>>>>>>>>> coordiantes
> >>>>>>>>>>>>> as view coord system is different from Scene3D
>
> >>>>>>>>>>>>> _spriteX=_screenVertex.x+_view.width*.5;
> >>>>>>>>>>>>> _spriteY=_screenVertex.y + _view.height*.5;
>
> >>>>>>>>>>>>> On Tue, Jun 15, 2010 at 5:10 PM, JeffH <[email protected]>
> >>>>> wrote:
> >>>>>>>>>>>>>> Hi Michael,
>
> >>>>>>>>>>>>>> I'm probably just missing something really easy here but
> >>> I've
> >>>>>>>>>>>>>> seen
> >>>>>>>>>>> the
> >>>>>>>>>>>>>> following example code which just seems to be for moving a
> >>> 2D
> >>>>>>>>>>>>>> object
> >>>>>>>>>>>>>> to a point in the 3D space. Can you show me an example of
> >>> how
> >>>>> I
> >>>>>>>>>>>>>> would
> >>>>>>>>>>>>>> move a 3D object based on a 2D point? Thanks for your
> >>> help!
>
> >>>>>>>>>>>>>> screenPlace(view.camera, myMovieClip, 3Dobject)
>
> >>>>>>>>>>>>>> function screenPlace(camera,who,whob):void {
> >>>>>>>>>>>>>>  var sc:ScreenVertex;
> >>>>>>>>>>>>>>  sc = camera.screen(whob)
> >>>>>>>>>>>>>>  who.x = sc.x + view.x;
> >>>>>>>>>>>>>>  who.y = sc.y + view.y;
> >>>>>>>>>>>>>>  }
>
> >>>>>>>>>>>>>> On Jun 15, 9:36 am, Michael Iv <[email protected]>
> >>> wrote:
> >>>>>>>>>>>>>>> use ScreenVertex coordinates by accessing camera.screen()
> >>>>>>>>>>>>>>> method .
> >>>>>>>>>>>>>>> :)
>
> >>>>>>>>>>>>>>> On Tue, Jun 15, 2010 at 4:34 PM, JeffH <
> >>> [email protected]>
> >>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>> Hi all. I wanted to get the experts' opinions on the
> >>> best
> >>>>> way
> >>>>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>> accomplish what I need to do. I have a 3D object (a
> >>> boat)
> >>>>>>>>>>>>>>>> that is
> >>>>>>>>>>> in a
> >>>>>>>>>>>>>>>> view with the camera set to a position and roll (45) to
> >>> try
> >>>>> and
> >>>>>>>>>>>>>>>> achieve a "simcity" look. The settings are like this:
>
> >>>>>>>>>>>>>>>> view.camera.x = 675; view.camera.y = -675; view.camera.z
> >>> =
> >>>>>>>>>>>>>>>> -1300;
> >>>>>>>>>>>>>>>> view.camera.roll(45); view.camera.lookAt(new Number3D(0,
> >>> 0,
> >>>>>>>>>>>>>>>> 0));
>
> >>>>>>>>>>>>>>>> What I want to do is to move this object based on 2D
> >>> points
> >>>>>>>>>>> located on
> >>>>>>>>>>>>>>>> the stage (for example, a path along a river). What is
> >>> the
> >>>>> best
> >>>>>>>>>>> way to
> >>>>>>>>>>>>>>>> do this? I did try converting 2D points to 3D by trying
> >>> to
> >>>>> get
> >>>>>>>>>>> the
> >>>>>>>>>>>>>>>> intersect of a ray off a plane but it doesn't seem to
> >>> work.
> >>>>> Not
> >>>>>>>>>>> sure
> >>>>>>>>>>>>>>>> if it is because I have a camera roll... I tried this
> >>> based
> >>>>> on
> >>>>>>>>>>> some
> >>>>>>>>>>>>>>>> other posts (where my 2D point is the var pt):
>
> >>>>>>>>>>>>>>>> var plane:Plane3D = new Plane3D();
> >>>>>>>>>>>>>>>> plane.fromNormalAndPoint(new Number3D(0, 1, 0), new
> >>>>> Number3D(0,
> >>>>>>>>>>> 0,
> >>>>>>>>>>>>>>>> 0));
> >>>>>>>>>>>>>>>> var cameraPosition:Number3D = new
> >>> Number3D(view.camera.x,
> >>>>>>>>>>>>>>>> view.camera.y, view.camera.z);
> >>>>>>>>>>>>>>>> var ray:Number3D = view.camera.unproject(pt.x, pt.y);
> >>>>>>>>>>>>>>>> ray.add(ray, cameraPosition);
> >>>>>>>>>>>>>>>> var intersect:Number3D =
> >>>>>>>>>>>>>>>> plane.getIntersectionLineNumbers(cameraPosition, ray);
>
> >>>>>>>>>>>>>>>> But, intersect.x does not seem to align with pt.x on the
> >>>>>>>>>>>>>>>> screen.
> >>>>>>>>>>>>>>>> Perhaps I am misinterpreting how this should work?
> >>> Should I
> >>>>> try
> >>>>>>>>>>> to
> >>>>>>>>>>>>>>>> orient the stage (Flash CS4) the same way or can I leave
> >>>>> that
> >>>>>>>>>>> "flat"
> >>>>>>>>>>>>>>>> and translate 2D coordinates to the 3D space?
>
> >>>>>>>>>>>>>>>> Anyway, thanks for any guidance!
>
> >>>>>>>>>>>>>>> --
> >>>>>>>>>>>>>>> Michael Ivanov ,Programmer
> >>>>>>>>>>>>>>> Neurotech Solutions Ltd.
> >>>>>>>>>>>>>>> Flex|Air
>
> ...
>
> read more »

Reply via email to