查看: 2520|回复: 2

求助:osg透明度设置

[复制链接]

该用户从未签到

发表于 2010-4-15 17:38:48 | 显示全部楼层 |阅读模式
我在场景中导入一个模型,现在要修改其透明度(在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);
但是当我把模型加载到场景中,修改透明度的时候,模型的颜色也随之改变了;求助:怎样保持模型的颜色不变,透明度依旧可以修改,求高手帮忙

该用户从未签到

发表于 2010-4-16 08:39:25 | 显示全部楼层
既然您在另一个区已经发过同样的帖子,那么请不要重复发帖,谢谢。

该用户从未签到

 楼主| 发表于 2010-4-16 10:43:37 | 显示全部楼层
2# array
不好意思,第一次发帖,刚开始发错了区
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表