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

Reply via email to