查看: 6632|回复: 4

osg拾取选中,包围盒边框线高亮显示,怎样实现呢?

[复制链接]

该用户从未签到

发表于 2010-3-16 16:48:25 | 显示全部楼层 |阅读模式
向实现类似3DMax的选择某个物体时,边框线的效果。尝试了使用包围盒。osg::BoundingBox box;
osg::ref_ptr<osg::Geode> boundingBoxGeode = new osg::Geode;
osg::ComputeBoundsVisitor cbv;
node->accept(cbv);
box = cbv.getBoundingBox();
osg::ref_ptr<osg::Geode> geode = new osg::Geode;
//根据求得的节点长宽高,画出包围盒
float lengthX = box.xMax() - box.xMin();
float lengthY = box.yMax() - box.yMin();
float lengthZ = box.zMax() - box.zMin();
通过包围盒可以计算出立方体8个顶点坐标。但是不想用纯立方体表现选中物体,太难看了,就想在八个顶点处绘制几节线段。
尝试了绘制黄色线段,发现当移动场景时,线段会变暗,而不是不管什么角度,线段都是黄色。

问题1:请问高手们在做这种效果时是根据包围盒顶点坐标自己绘制线段吗?有没有更好的办法?
2:线段怎样绘制才能让他不管在什么角度看都是有明亮颜色的呢?

本人菜鸟,蒙高手指教,十分感谢!

该用户从未签到

 楼主| 发表于 2010-3-16 16:59:03 | 显示全部楼层
[img][/img]
未命名.JPG

该用户从未签到

发表于 2010-3-16 17:16:09 | 显示全部楼层
设置包围框几何体的StateSet:
  1. setMode(GL_LIGHTING, osg::StateAttribute::OFF);
复制代码

该用户从未签到

发表于 2010-3-16 17:21:05 | 显示全部楼层
1.根据包围盒画线框就可以,自己封一个Geode派生类来用比较方便
2.关掉光照就可以了,getOrCreateStateSet()->setMode(GL_LIGHTING, osg::StateAttribute::OFF);

该用户从未签到

 楼主| 发表于 2010-3-29 14:35:39 | 显示全部楼层
已经解决,谢谢sohoman、array、
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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