设置物体透明,trans是透明度的设置,这里如果没有setRenderingHint()虽然看起来是透明的,但模型还是会遮挡其他模型。然后就是BLEND要打开,光照和深度测试要关掉。模型的材质也要事先设置。并将材质保存起来以便恢复的时候调用。
osg::Material *material = new osg::Material;
material->setDiffuse(osg::Material::FRONT, osg::Vec4(0.4, 0.4, 0.4, 1.0));
material->setAmbient(osg::Material::FRONT, osg::Vec4(0.4, 0.4, 0.4, 1.0));
material->setShininess(osg::Material::FRONT, 90.0);
scene->getOrCreateStateSet()->setAttribute(material);
originmaterial = material;
下面是设置透明的代码
void setTransparent(osg::Node *node,float trans)
{
osg::StateSet * stateset = node->getOrCreateStateSet();
stateset->setMode(GL_LIGHTING, osg::StateAttribute::OFF | osg::StateAttribute::PROTECTED);
stateset->setMode(GL_BLEND, osg