Paul Martz 12.02.2010 20:45:
> The Camera's View matrix contains the eye position, if that's what
> you're trying to obtain:
>
>    osg::Matrix m( getCamera()->getViewMatrix() );
>    osg::Vec3 eye( m(3,0), m(3,1), m(3.2) );
>
> (OK, I might have row versus column order messed up, so swap the row and
> column parameters if needed.)
>     -Paul
>

What I'm actually trying to obtain is the line-of-sight in world space going 
from eye point to the where the mouse cursor points to. Any hints on that 
particular problem?




> Volker Poplawski wrote:
> > Hi everyone.
> >
> > I'm trying to calculate the line-of-sight line in world space, which
> > involves mapping from window space. My approach works in principal,
> > however the resulting positions are allways off by a small amount.
> >
> > Inside a osg::View I have:
> >
> > Matrixd m;
> > m.preMult(getCamera()->getViewport()->computeWindowMatrix());
> > m.preMult(getCamera()->getProjectionMatrix());
> > m.preMult(getCamera()->getViewMatrix());
> > Matrixd inv;
> > inv.invert(m);
> >
> >
> > For example: I exspect
> > Vec3d( winWidth/2, winHeight/2, 0.0 ) * inv ;
> >
> > to yield the camera/eye position. However the x,y,z coords differ in
> > about 0.5% from the eyepos of getCamera()->getViewMatrixAsLookAt().
> > (Unless the camera is positioned in world origin)
> >
> >
> > Do I miss something?
> >
> >
> > Regards
> > ......Volker
> >
> >
> >


_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to