求交后高亮显示某个Drawable:
if (picker->containsIntersections())
{
osg::Vec3 ptWorldIntersectPointFirst= picker->getFirstIntersection().getWorldIntersectPoint();
cout<<"world coords vertex("<< ptWorldIntersectPointFirst.x()<<","
<< ptWorldIntersectPointFirst.y()<< ","<< ptWorldIntersectPointFirst.z()<<")"<< std::endl;
//高亮此点
double dPointRadius= 15.0f;
osg::ShapeDrawable* pShd= new osg::ShapeDrawable(
new osg::Sphere( ptWorldIntersectPointFirst, dPointRadius));
pShd->setColor( osg::Vec4( 0, 1, 0, 1));
geode->addDrawable( pShd);
将此Drawable高亮显示(更改其材质--散射光)
//osg::ref_ptr< osg::StateSet> pssDra= picker->getFirstIntersection().drawable->getOrCreateStateSet();
改变颜色
//osg::Material* mat = dynamic_cast< osg::Material*>
// ( pssDra->getAttribute( osg::StateAttribute::MATERIAL));
//if ( mat == NULL)
//{
//mat = new osg::Material;
// mat->setDataVariance( osg::Object::DYNAMIC);
// pssDra->setAttribute( mat);
//}
//mat->setDiffuse( osg::Material::FRONT_AND_BACK, osg::Vec4( 1, 0, 0, 0));
//直接改变其颜色
osg::ref_ptr< osg::Geometry> pGmt= picker->getFirstIntersection().drawable->asGeometry();
if ( pGmt != NULL)
{