|
我在场景中导入一个模型,现在要修改其透明度(在mfc界面,通过一个滑动条滑动设置透明度);用了以下的代码:
// 启用混合,支持透明度设置
osg::StateSet* state = m_pFacetModelDCS->getOrCreateStateSet();
state->setMode(GL_BLEND,osg::StateAttribute::ON);
// 获取材质属性
osg::Material* material = dynamic_cast<osg::Material*>(state->getAttribute(osg::StateAttribute::MATERIAL));
osg::ref_ptr<osg::Material> mtrl = new osg::Material;
// 漫反射光
osg::Vec4 destDiffuse;
destDiffuse.set(m_vColor.x(),m_vColor.y(),m_vColor.z(),1.0f-m_fTransparency);
mtrl->setDiffuse(osg::Material::FRONT_AND_BACK,destDiffuse);
// 环境光
osg::Vec4 destAmbient;
destAmbient.set(m_vColor.x(),m_vColor.y(),m_vColor.z(),1.0f-m_fTransparency);
mtrl->setAmbient(osg::Material::FRONT_AND_BACK,destAmbient);
mtrl->setTransparency(osg::Material::FRONT_AND_BACK,Transparency);
state->setAttributeAndModes(mtrl,osg::StateAttribute::OVERRIDE|osg::StateAttribute::ON);
但是当我把模型加载到场景中,修改透明度的时候,模型的颜色也随之改变了;求助:怎样保持模型的颜色不变,透明度依旧可以修改,求高手帮忙 |
|