查看: 2537|回复: 5

请教模型透明问题!!

[复制链接]

该用户从未签到

发表于 2009-4-2 20:22:52 | 显示全部楼层 |阅读模式
请教一下, 假如我做了一个包围球,想只显示球的轮廓,而球体是透明的,应该如何做?谢谢!

该用户从未签到

发表于 2009-4-2 20:50:28 | 显示全部楼层
使用Blend融合,或者着色语言实现,都是可以的

该用户从未签到

 楼主| 发表于 2009-4-2 20:56:22 | 显示全部楼层
请问BlendFunc里面的两个值怎么设定?

该用户从未签到

发表于 2009-4-2 21:28:13 | 显示全部楼层
这个和GL_BLEND是一样的,可以参看《OpenGL编程指南》(红宝书),例如分别设置为SRC_ALPHA和ONE

该用户从未签到

发表于 2009-4-3 12:05:38 | 显示全部楼层

还有一个方法

还有一个方法:
取得包围球的球心和半径
然后以上述信息,用线框模式画一个圆就可以了吧
类似这样:
  1. const osg::BoundingSphere &bs= node->getBound();
  2. osg::ShapeDrawable *sd = new osg::ShapeDrawable(new osg::Sphere(bs.center(), bs.radius()));

  3. sd->setColor(osg::Vec4(1, 0, 0, 1));
  4. osg::StateSet *state = sd->getOrCreateStateSet();
  5. osg::PolygonMode* pm = new osg::PolygonMode(osg::PolygonMode::FRONT_AND_BACK, osg::PolygonMode::LINE);
  6. state->setAttributeAndModes(pm);

  7. //设置线宽
  8. osg::LineWidth* lw = new osg::LineWidth(1.0f);
  9. state->setAttribute(lw);
  10. osg::Geode *geode = new osg::Geode();
  11. geode->addDrawable(sd);
  12. root->addChild(geode);
复制代码

该用户从未签到

 楼主| 发表于 2009-4-6 21:43:07 | 显示全部楼层
好的,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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