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-openscenegraph.org




--
Jeff Biggs

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

Reply via email to