osg数据组织方式采用的是树形节点的组织方式,每个节点都由相应的包围球。
void createBound() {
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer;
viewer->addEventHandler(new osgViewer::WindowSizeHandler());
osg::ref_ptr<osg::Group> root = new osg::Group;
root->addChild(osgDB::readNodeFile("cow.osgt"));
//更新节点的包围体
root->dirtyBound();
//获取节点的包围体
osg::BoundingSphere bound = root->getBound();
//绘制节点的包围体
osg::ref_ptr<osg::Geode> geode = new osg::Geode;
osg::ref_ptr<osg::Sphere> sphere = new osg::Sphere;
sphere->set(bound.center(), bound.radius());
osg::ref_ptr<osg::ShapeDrawable> sd3 = new osg::ShapeDrawable(sphere);
geode->addDrawable(sd3);
root->addChild(geode);
viewer->setSceneData(root.get());
viewer->realize();
viewer->run();
}