|
发表于 2013-3-20 13:48:48
|
显示全部楼层
garyliyong 发表于 2013-3-18 19:38
其实就是判断一下当前的drawable已经有交点了,就不需要再计算了。在这个函数里面有个求交器,主要是遍 ...
上面是我改的源码部分,下面是我在自己的工程cpp中,涉及鼠标handle()事件中的代码,请您结合这两部分,给与我指点:
osg::ref_ptr<NewPolytopeIntersector> intersector =new NewPolytopeIntersector(osgUtil::Intersector::WINDOW, xMin, yMin, xMax, yMax);
osgUtil::IntersectionVisitor iv( intersector.get() );
viewer->getCamera()->accept( iv );
if ( intersector->containsIntersections() )
{
for (NewPolytopeIntersector::Intersections::iterator hitr = intersector->getIntersections().begin(); hitr != intersector->getIntersections().end(); ++hitr)
{
osg::NodePath &np = hitr->nodePath;
for (osg::NodePath::iterator itr = np.begin(); itr != np.end(); itr++)
{
if (!(*itr)->getName().empty())
{
createShaders2((*itr),true); //凡是框选中的模型着色
//break;
}
}
}
} |
|