Hi Pawan,
I can't see the value add of adding extra culling on top of what the
OSG already provides in this instance, view frustum culling is very
efficient already for handling mulitple camera views. Why can't you
simply use the OSG the way its designed to be used in this instance.
If you want to go off on a wild goose chase then feel free, but I
don't have the time to guide you.
Robert.
On Jan 11, 2008 10:34 AM, Pawan Harish <[EMAIL PROTECTED]> wrote:
> Hi Robert,
> Thanks again for the quick reply. I must say this is the most
> responsive mailing list I've ever seen. You people are doing great work. I
> first should tell you what I am doing for you to understand my problem.
> I'm a PhD student at IIIT Hyderabad and I'm trying to build a display wall
> system (much like Chromium) over OSG. We've published the system in IEEE
> Transactions on visualization and computer graphics 2007 sept/oct issue
> under the name "Garuda: A Scalable tiled display wall using Commodity
> PC's". In the paper we introduce an algorithm to cull a scene graph to
> a hierarichally arranged set of frustums. I've used oriented bounding
> boxes for this algorithm in the past but I wanted to shift to a more
> standard osg::BoundingSphere, which is easier to compute and less
> expensive to store. Thus I need to know the Bounding Sphere at any given
> instance of time to employ my culling approach.
>
>
> Pawan
>
>
>
>
> On Fri, 11 Jan 2008, Robert Osfield wrote:
>
> > Hi Pawan,
> >
> > The OSG has view frustum culling built into it so you should need to
> > add anything extra. You can also just configure the viewer's Camera
> > so that their view frustum all just map to the various
> > projector/monitors.
> >
> > Robert.
> >
> > On Jan 11, 2008 10:11 AM, Pawan Harish <[EMAIL PROTECTED]> wrote:
> >> Hi Robert,
> >> Thanks for the quick reply. Actually I am trying to cull the
> >> scene based on some planes as a part of a display wall system I'm building
> >> over OSG, for this I need the bounding sphere at the current transformed
> >> position. I can transform the center of the sphere with all the matrices
> >> upto the root, but transforming the radius is a bit hard. Is there any
> >> other way to get the transformed sphere to this end.
> >>
> >> Pawan
> >>
> >>
> >> On Fri, 11 Jan 2008, Robert Osfield wrote:
> >>
> >>> Hi Pawan,
> >>>
> >>> A node's local bounding sphere encompasses the subgraph below the
> >>> node, and in the coordinate frame of the subgraph below the node, it's
> >>> not at all affected by what happens above it in the scene graph. The
> >>> basic feature of scene graphs.
> >>>
> >>> Could you explain what you are wanting to do at a higher level, there
> >>> is almost certainly a more nature way to do it.
> >>>
> >>> Robert.
> >>>
> >>> On Jan 11, 2008 9:40 AM, Pawan Harish <[EMAIL PROTECTED]> wrote:
> >>>> Hi,
> >>>> I am trying to get the bounding sphere at a node but the return value
> >>>> is
> >>>> the same as the initial bounding sphere although I've transformed the
> >>>> Node
> >>>> using a MatrixTransform. Here is the code I'm using, could anyone please
> >>>> tell me how to get the transformed bounding sphere. Thanks in advance.
> >>>>
> >>>> Pawan Harish
> >>>>
> >>>> int main(int argc, char **argv)
> >>>> {
> >>>> osgViewer::Viewer viewer;
> >>>> osg::Group *group = new osg::Group;
> >>>> osg::MatrixTransform *mat1 = new osg::MatrixTransform;
> >>>> osg::MatrixTransform *mat2 = new osg::MatrixTransform;
> >>>>
> >>>> mat1->setMatrix(osg::Matrix::translate(-50,0,0)*osg::Matrix::scale(0.2,0.2,0.2));
> >>>>
> >>>> mat2->setMatrix(osg::Matrix::translate(-25,0,30)*osg::Matrix::scale(0.2,0.2,0.2));
> >>>> osg::Node* glider = osgDB::readNodeFile("glider.osg");
> >>>>
> >>>> osg::Node* cow = osgDB::readNodeFile("cow.osg");
> >>>>
> >>>> osg::Vec3 center_orig = cow->getBound().center();
> >>>> double radius_orig = cow->getBound().radius();
> >>>> printf("center_orig: %lf %lf %lf radius_orig: %lf\n",
> >>>> center_orig[0],center_orig[1],center_orig[2],radius_orig);
> >>>>
> >>>> osg::Node* cessna = osgDB::readNodeFile("cessna.osg");
> >>>> glider->setName("Glider");
> >>>> cessna->setName("Cessna");
> >>>> cow->setName("Cow");
> >>>> mat1->setName("Matrix1_Cow");
> >>>> mat2->setName("Matrix2_Cessna");
> >>>> group->addChild(glider);
> >>>> mat1->addChild(cow);
> >>>> mat2->addChild(cessna);
> >>>> group->addChild(mat1);
> >>>> group->addChild(mat2);
> >>>> group->setName("PawansExpt");
> >>>> viewer.setSceneData(group);
> >>>>
> >>>> osg::BoundingSphere bs = cow->getBound();
> >>>>
> >>>> //These values are same as the ones printed above
> >>>>
> >>>> osg::Vec3 center_new = bs.center();
> >>>> double radius_new = bs.radius();
> >>>> printf("center_new: %lf %lf %lf radius_new: %lf\n",
> >>>> center_new[0],center_new[1],center_new[2],radius_new);
> >>>>
> >>>> return viewer.run();
> >>>> }
> >>>>
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> 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
> >>>
> >>>
> >>
> >>
> >> _______________________________________________
> >> 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
> >
> >
>
>
> _______________________________________________
> 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