We also had that problem with the picker. We fixed that, by reimplementing
the picking like this:

    // map pixel coordinates to [-1,1] (OpenGL Screen Coordinates)

    float xwindow =  x/screenWidth  * 2. - 1;

    float ywindow = -y/screenHeight * 2. + 1;

    osg::Camera* cam = viewer->getCamera();

    osg::Matrixd m;

    m.preMult(cam->getProjectionMatrix());

    m.preMult(cam->getViewMatrix());

    // define intersection ray

    osg::Vec3d startPoint (xwindow, ywindow, -1000);

    osg::Vec3d endPoint(xwindow, ywindow, 1000);

    osg::Matrixd i;

    i.invert(m);

    osg::Vec3d wStart =  startPoint * i;

    osg::Vec3d wEnd   =  endPoint   * i;

    osg::ref_ptr<osgUtil::LineSegmentIntersector> picker
= new osgUtil::LineSegmentIntersector(wStart, wEnd);


2014-05-05 13:43 GMT+02:00 Wouter Roos <rooswou...@gmail.com>:

>
> Martin Siggel wrote:
> > You can also workaround this (instead of  using the eventqueue) by
> telling OSG about the input range of your mouse after setting up your
> viewer:
> >
> > viewer->getEventQueue()->setMouseInputRange(x, y, x + width, y + height);
> >
> >
> >
> > Cheers,
> > Martin
> >
> >
>
>
> Thanks for that method, that looks much better, and works for the android
> examples just as well.
> However it does not work when I use a picker, it still returns no
> intersections whereas using the Window's EventQueue does give me the
> correct results. Any ideas on why this might be?
>
> ------------------
> Read this topic online here:
> http://forum.openscenegraph.org/viewtopic.php?p=59259#59259
>
>
>
>
>
> _______________________________________________
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to