Fabrice where can I get your RayDebug debug class ?

I tried to apply the screen offset but still no success.

Thanks

On May 5, 3:13 pm, Michael Iv <[email protected]> wrote:
> That is interesting point . I wll try this . Sorry I cant see the white
> pixels , it is too far from the screen :)
>
>
>
>
>
>
>
> On Wed, May 5, 2010 at 4:07 PM, Fabrice3D <[email protected]> wrote:
> > I think I may know why you miss....
> > in demo I have offseted the screen, because coordinates flash are top left.
> > pixel = _view.camera.unproject(startx-400, starty+j-300);
>
> > here 400 and 300 being hardcoded as 1/2 values of my screen 800x600
>
> > Fabrice
>
> > On May 5, 2010, at 3:01 PM, Michael Iv wrote:
>
> > I am quite sure that the ray class casts the ray in right direction , but
> > the problem that I could not understand was why no intersection was returned
> > .
> > In your example do you receive the intersection of these rays with the
> > globe ?
>
> > On Wed, May 5, 2010 at 3:51 PM, Fabrice3D <[email protected]> wrote:
>
> >> made little demo to show you thats this is probably what is going on in
> >> your code.
>
> >> --> this demo projects a stroke 8 px wide in center screen (800x600), in
> >> this case at 0,0 to 0,400 x/y
> >> the ray debugger shows you the camera, viewport, and the stroke.
> >> the debug rays are using the unproject camera method. (debug rays
> >> projected each 20 pixels only first column to stay friend with the flash
> >> player)
> >> as you can see the direction obtained once normalized, is what you want.
> >> And also shows Ray class is not wrong.
>
> >> Now, the sphere in the world is still object space. not having any of the
> >> camera perpective.
> >> Changing camera after calcs to hovercam to explore, you can see the debug
> >> trace shows that once you put yourself behind the camera
> >> that the result of the stroke does match the rays using the Ray class
> >> where no perpective or lens corrections are applied.
> >> except its obvious that the rays do not fit the image where the white (the
> >> hit) should be way smaller if in same space as camera
>
> >>http://www.closier.nl/playground/RaySpace.swf
>
> >> Again, I'll try improve that class to make it smarter.. its all a question
> >> of time :)
>
> >> Fabrice
>
> >> On May 5, 2010, at 1:09 PM, Michael Iv wrote:
>
> >> I was looking at the following function in BitmapMaterial Class:
> >> if(showNormals){
>
> >>                 _nn.rotate(tri.faceVO.face.normal,
> >> tri.view.cameraVarsStore.viewTransformDictionary[tri.source]);
>
> >>                 _sv0x = (tri.v0x + tri.v1x + tri.v2x) / 3;
> >>                 _sv0y = (tri.v0y + tri.v1y + tri.v2y) / 3;
>
> >>                 _sv1x = (_sv0x - (30*_nn.x));
> >>                 _sv1y = (_sv0y - (30*_nn.y));
>
> >>                 _session.renderLine(_sv0x, _sv0y, _sv1x, _sv1y, 0,
> >> 0xFF00FF, 1);
> >>             }
> >>         }
>
> >> And I can see ( if I am right) that you are setting _nn roation
> >> multiplying face normal by face matrix  that was received from camera space
> >> .
> >> May be that is what has to be done  when getting faces for getIntersection
> >> ?
>
> >> On Tue, May 4, 2010 at 12:11 PM, devlander <[email protected]>wrote:
>
> >>> ok  Fabrice.
> >>> Please notify us if you can get something working ( this is a critical
> >>> feature for my project ).
>
> >>> Thanks for your support.
>
> >>> On May 4, 9:44 am, Fabrice3D <[email protected]> wrote:
> >>> > Looking at it asap as I need it as well...
>
> >>> > On May 4, 2010, at 7:18 AM, Michael Iv wrote:
>
> >>> > > Now I can see I am not only one having that problem
>
> >>> > > Sent from my iPhone
>
> >>> > > On May 4, 2010, at 3:49 AM, devlander <[email protected]>
> >>> wrote:
>
> >>> > >> =================================================================
> >>> > >> Please forget about my previous post (many copy&past mistakes in the
> >>> > >> code snippet)
> >>> > >> =================================================================
>
> >>> > >> Here is my code (corrected):
>
> >>> > >> private function _pickMesh(mesh:Mesh):PickingResult {
>
> >>> > >>     var pr:PickingResult = new PickingResult();  // Store picking
> >>> > >> data here
>
> >>> > >>     var rayPos:Number3D = view3D.camera.unproject(view3D.mouseX,
> >>> > >> view3D.mouseY);
>
> >>> > >>     var rayDir:Number3D = new Number3D();
> >>> > >>     rayDir.x = rayPos.x;
> >>> > >>     rayDir.y = rayPos.y;
> >>> > >>     rayDir.z = rayPos.z;
> >>> > >>     rayDir.normalize();
> >>> > >>     rayPos.add(rayPos, view3D.camera.position);
>
> >>> > >>     var ray:Ray = new Ray();
> >>> > >>     var pickedPoint:Number3D;
>
> >>> > >>     for each (var face:Face in mesh.faces) {
>
> >>> > >>                pickedPoint = ray.getIntersect(rayPos , rayDir ,
> >>> > >> face.v0.position , face.v1.position , face.v2.position);
>
> >>> > >>                if (pickedPoint!=null) {
> >>> > >>                        pr.hasHit = true;
> >>> > >>                        pr.point = pickedPoint;
> >>> > >>                        pr.face = face;
> >>> > >>                        break;
> >>> > >>                }
> >>> > >>        }
>
> >>> > >>        pr.mesh = mesh;
>
> >>> > >>        return pr;
>
> >>> > >> }
>
> >>> > >> The problem is I always get null.
>
> >>> > >> Note: Since my mesh is a child of an Objectcontainer3D element I
> >>> have
> >>> > >> called mesh.applyRotations()
> >>> > >> to make sure all the mesh faces are computed relative to the world
> >>> > >> coord system.
>
> >>> > >> I suspect there is a problem in the computation of the ray params
> >>> > >> (position or direction).
>
> >>> > >> Fabrice can you confirm that the signature of the Ray.getIntersect
> >>> > >> method is as follow (no info is given in the class):
>
> >>> > >> p0: ray direction (or is it position ?)
> >>> > >> p1: ray position [in world coord system] (or is it direction?)
> >>> > >> v0: face.v0.position [in global world coord system]
> >>> > >> v1: face.v1.position [in global world coord system]
> >>> > >> v2: face.v2.position [in global world coord system]
>
> >>> > >> Thanks for any help on this.
>
> >>> > >> On May 4, 2:33 am, devlander <[email protected]> wrote:
> >>> > >>> Hello, i am having the exact same problem here.
>
> >>> > >>> I am trying to determine the intersection on a 3D object at a given
> >>> > >>> viewport location (view3D.mouseX, view3D.mouseY):
>
> >>> > >>> Here is my code:
>
> >>> > >>> private function _pickMesh(mesh:Mesh):PickingResult {
>
> >>> > >>>         var pr:PickingResult = new PickingResult();  // Store
> >>> picking data
> >>> > >>> here
>
> >>> > >>>         var rayPos:Number3D =
> >>> view3D.camera.unproject(view3D.mouseX,
> >>> > >>> view3D.mouseY);
>
> >>> > >>>         // info retreived from here
> >>> > >>>         //
> >>>http://www.mail-archive.com/[email protected]/msg09318.html
>
> >>> > >>>         var rayDir:Number3D = new Number3D();
> >>> > >>>        rayDir.x = pMouse.x;
> >>> > >>>        rayDir.y = pMouse.y;
> >>> > >>>        rayDir.z = pMouse.z;
> >>> > >>>        rayDir.normalize();
> >>> > >>>        rayPos.add(rayPos, _view3D.camera.position);
>
> >>> > >>>         var ray:Ray = new Ray();
> >>> > >>>         var pickedPoint:Number3D;
>
> >>> > >>>         for each (var face:Face in mesh.faces) {
>
> >>> > >>>                 pickedPoint = ray.getIntersect(rayPos , rayDir ,
> >>> face.v0.position ,
> >>> > >>> face.v1.position , face.v2.position);
>
> >>> > >>>                 if (pickedPoint!=null) {
> >>> > >>>                         pr.hasHit = true;
> >>> > >>>                         pr.point = pickedPoint;
> >>> > >>>                         pr.face = face;
> >>> > >>>                         break;
> >>> > >>>                 }
> >>> > >>>         }
>
> >>> > >>>         pr.mesh = mesh;
>
> >>> > >>>         return pr;
>
> >>> > >>> }
>
> >>> > >>> The problem is I always get null.
>
> >>> > >>> Note: Since my mesh is a child of an Objectcontainer3D element I
> >>> have
> >>> > >>> called mesh.applyRotations()
> >>> > >>> to make sure all the mesh faces are computed relative to the world
> >>> > >>> coord system.
>
> >>> > >>> I suspect there is a problem in the computation of the ray params
> >>> > >>> (position or direction).
>
> >>> > >>> Fabrice can you confirm that the signature of the Ray.getIntersect
> >>> > >>> method is as follow (no info is given in the class):
>
> >>> > >>> p0: ray direction (or is it position ?)
> >>> > >>> p1: ray position [in world coord system] (or is it direction?)
> >>> > >>> v0: face.v0.position [in global world coord system]
> >>> > >>> v1: face.v0.position [in global world coord system]
> >>> > >>> v2: face.v0.position [in global world coord system]
>
> >>> > >>> Thanks
>
> >>> > >>> On May 4, 12:17 am, Michael Iv <[email protected]> wrote:
>
> >>> > >>>> Fabrice i am trying it already for 4 hours with Sphere , but it
> >>> returns null
> >>> > >>>> most of the time
>
> >>> > >>>> ///// it runs on enter frame////////////////
> >>> > >>>> for(var i:int=0;i<_sf.faces.length;++
> >>> > >>>> i){
>
> >>> trace(_ray.getIntersect(_ray.orig,_ray.dir,_sf.faces[i].v0.position,_sf.faces[i].v1.position,_sf.faces[i].v2.position));
> >>> > >>>>    }
> >>> > >>>> and basi
>
> >>> > >>>> On Tue, May 4, 2010 at 1:15 AM, Fabrice3D <[email protected]>
> >>> wrote:
> >>> > >>>>> dir, origin, v0, v1, v2
> >>> > >>>>> to check if a ray hits a triangle
>
> >>> > >>>>> Fabrice
>
> >>> > >>>>> On May 3, 2010, at 9:43 PM, Michael Iv wrote:
>
> >>> > >>>>> Someone can tell me what are* v0,v1,v2* in*
> >>> Ray.getIntersect(p0:Number3D,
> >>> > >>>>> p1:Number3D, v0:Number3D, v1:Number3D, v2:Number3D):Number3D* ???
> >>> > >>>>> Just can't find any example explaining these
>
> >>> > >>>>> Thanks!
>
> >>> > >>>>> --
> >>> > >>>>> Michael Ivanov ,Programmer
> >>> > >>>>> Neurotech Solutions Ltd.
> >>> > >>>>> Flex|Air |3D|Unity|
> >>> > >>>>>www.neurotechresearch.com
>
> ...
>
> read more »

Reply via email to