Thanks guys .. I did it per Robert's detailed description .. Took like 10mins and it works well ..
Thanks again! Cheers! Nick On Wed, Nov 2, 2016 at 2:57 PM, Glenn Waldron <[email protected]> wrote: > Also check out osgShadow::ConvexPolyhedron if you want to extract the > corner verts or make geometry from it. > > > > Glenn Waldron > > On Wed, Nov 2, 2016 at 9:47 AM, Jeff Biggs <[email protected]> wrote: > >> >> try this... >> >> osg::Polytope GetViewPolytope( >> const osg::Matrix &p, >> const osg::Matrix &v, >> const osg::Matrix &m) >> { >> osg::Polytope clipspace; >> clipspace.setToUnitFrustum(true, true); >> >> // composite matrix >> osg::Matrixd mvp = m * v * p; >> >> // transform from clip space to local coords >> osg::Polytope local; >> local.setAndTransformProvidingInverse(clipspace, mvp); >> >> return local; >> } >> >> // --- Sample use case --- >> >> osg::Camera *cam; >> osg::Matrixd entityBodyMatrix; >> >> osg::Polytope viewPolytope = GetViewPolytope( >> cam->getProjectionMatrix(), cam->getViewMatrix(), entityBodyMatrix); >> >> const osg::BoundingSphere boundSphere; >> >> if (viewPolytope.contains(boundSphere) { >> // sphere is inside of view >> } >> >> jeff >> >> >> >> On 11/2/16 3:43 AM, Robert Osfield wrote: >> >>> On 1 November 2016 at 21:45, Trajce Nikolov NICK >>> <[email protected]> wrote: >>> >>>> Hi Community, >>>> >>>> anyone knowing how to achieve this and with will to share? >>>> >>>> Thanks a bunch as always !! >>>> >>> Have a look at the API's... >>> >>> First one to look at is osg::Polytope, create one of these with a unit >>> frustum. This will be in clip space. >>> >>> Next step transform this Polytope by the projection matrix using the >>> transformProvidingInverse() method (to transform a plane you multiple >>> it by the inverse of that matrix), so in our case the projection >>> matrix transform from eye space into clip space which is the inverse >>> of the transform we intend, but thanks to the way that planes are >>> transformed we can just use the projection matrix directly as long as >>> we use the transformProvidingInverse(). See the src/osg/CullStack.cpp >>> to see this in action. >>> >>> Then transform into object coordinates using the same method by >>> providing the view and model matrices. >>> >>> Robert. >>> _______________________________________________ >>> osg-users mailing list >>> [email protected] >>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-opens >>> cenegraph.org >>> >>> >>> >> >> -- >> Jeff Biggs >> >> _______________________________________________ >> osg-users mailing list >> [email protected] >> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >> > > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > -- trajce nikolov nick
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

