查看: 1653|回复: 9

不知怎么使纹理黑色部分透明?求各位大神指导一下。

[复制链接]

该用户从未签到

发表于 2013-9-24 15:41:43 | 显示全部楼层 |阅读模式
如题,平时能用含透明通道的png图片使纹理透明,但在许多情况下都用的其他图片格式且无透明通道。比如说bmp图片无效部分是黑色的,我想使黑色部分透明,我该怎么办呢?谢谢!谢谢!

该用户从未签到

发表于 2013-9-24 17:03:16 | 显示全部楼层
可以是用shader中作出判断 如果当前texture的 RGB为黑色 那么就不处理这个像素 discard 那么就会显示原先那个fragment的颜色了

该用户从未签到

 楼主| 发表于 2013-9-24 17:14:33 | 显示全部楼层
liuzhiyu123 发表于 2013-9-24 17:03
可以是用shader中作出判断 如果当前texture的 RGB为黑色 那么就不处理这个像素 discard 那么就会显示原先那 ...

谢谢,我试试!

该用户从未签到

发表于 2013-9-25 14:16:10 | 显示全部楼层
这样是会产生毛边的,必须做pcf,建议您还是考虑用alpha通道

该用户从未签到

 楼主| 发表于 2013-9-25 15:45:40 | 显示全部楼层
array 发表于 2013-9-25 14:16
这样是会产生毛边的,必须做pcf,建议您还是考虑用alpha通道

锐爷正解,颜色的过渡区域确实出现了大问题。关于alpha通道不是很了解,我一设置直接使模型半透明了,而想要的是模型不透明纹理根据黑色呈度透明。我的代码如下:
  1.                                 osg::BlendColor *bc=new osg::BlendColor(osg::Vec4(0,0,0,0));
  2.                                 osg::BlendFunc * bf=new osg::BlendFunc();
  3.                                 ss->setAttributeAndModes(bf,osg::StateAttribute::ON);
  4.                                 ss->setAttributeAndModes(bc,osg::StateAttribute::ON);
  5.                                 bf->setSource(osg::BlendFunc::CONSTANT_ALPHA);
  6.                                 bf->setDestination(osg::BlendFunc::ONE_MINUS_CONSTANT_ALPHA);
  7.                                 bc->setConstantColor(osg::Vec4(0,0, 0,0.4f));
复制代码
其他的不懂了,请锐爷好好指导一番,谢谢!                               

该用户从未签到

发表于 2013-10-9 08:45:37 | 显示全部楼层
正确的做法是在Photoshop等软件中做Alpha遮罩或者直接魔术棒清除背景。因为有羽化所以边缘会处理的比较好

该用户从未签到

 楼主| 发表于 2013-10-9 13:12:52 | 显示全部楼层
array 发表于 2013-10-9 08:45
正确的做法是在Photoshop等软件中做Alpha遮罩或者直接魔术棒清除背景。因为有羽化所以边缘会处理的比较好

锐爷,咱的PS不太专业啊,找到一个方法,将一个黑色图片作为另一层纹理,两层纹理的颜色在着色语言中直接求和就均匀过渡了

该用户从未签到

发表于 2013-10-11 09:56:05 | 显示全部楼层
如果您有100万张这样的图要调度显示,您就不会用这种mask的方式了。。。

该用户从未签到

发表于 2014-3-31 13:49:55 | 显示全部楼层
xuyao 发表于 2013-10-9 13:12
锐爷,咱的PS不太专业啊,找到一个方法,将一个黑色图片作为另一层纹理,两层纹理的颜色在着色语言中直接 ...

你好,我在做地形等高线的时候遇到了相同的问题,能告诉我你具体的解决方法么?

该用户从未签到

发表于 2015-3-27 10:27:09 | 显示全部楼层
用PS处理后,保存为WEB通用的.png格式,就可以
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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