查看: 3864|回复: 1

SOS:如何修改透明度问题

[复制链接]

该用户从未签到

发表于 2010-4-15 17:29:54 | 显示全部楼层 |阅读模式
我在场景中导入一个模型,现在要修改其透明度(在mfc界面,通过一个透明度的滑动条滑动设置透明度);用了以下的代码:
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:34:21 | 显示全部楼层
setTransparency事实上是设置所有材质属性的Alpha值为1-trans,在执行融混时,这会改变所有与材质属性相关的渲染状态。一个更好的方法是设置模型的颜色数组,将其中元素的Alpha改变来实现半透明的效果

此外,希望您下一次把帖子发到正确的讨论区,OpenGL区只讨论OpenGL相关的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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